Package org.python.core
Class PyMemoryView
java.lang.Object
org.python.core.PyObject
org.python.core.PySequence
org.python.core.PyMemoryView
- All Implemented Interfaces:
Serializable
,BufferProtocol
,Traverseproc
Class implementing the Python
memoryview
type. It provides a wrapper around the
Jython buffer API.- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.python.core.PyObject
PyObject.ConversionException
-
Field Summary
Fields inherited from class org.python.core.PyObject
gcMonitorGlobal
-
Constructor Summary
ConstructorDescriptionPyMemoryView
(BufferProtocol pybuf) Construct aPyMemoryView
from an object bearing theBufferProtocol
interface. -
Method Summary
Modifier and TypeMethodDescriptionCalled at the start of a context-managed suite (supporting thewith
clause).Equivalent to the standard Python __eq__ method.boolean
Called at the end of a context-managed suite (supporting thewith
clause), and will release thememoryview
.Equivalent to the standard Python __ge__ method.Equivalent to the standard Python __gt__ method.Equivalent to the standard Python __le__ method.int
__len__()
Equivalent to the standard Python __len__ method.Equivalent to the standard Python __lt__ method.Equivalent to the standard Python __ne__ method.__tojava__
(Class<?> c) Equivalent to the Jython __tojava__ method.format()
getBuffer
(int flags) Method by which the consumer requests the buffer from the exporter.int
hashCode()
int
itemsize()
final void
int
ndim()
obj()
void
Sets the indexed element of the memoryview to the given value, treating the operation as assignment to a slice of length one.boolean
readonly()
boolean
Optional operation.void
release()
Request a release of the underlying buffer exposed by thememoryview
object.shape()
strides()
tobytes()
Implementation of Pythontobytes()
.tolist()
Implementation of Pythontolist()
.int
Traverses all directly containedPyObject
s.Methods inherited from class org.python.core.PySequence
__delitem__, __delslice__, __finditem__, __finditem__, __getitem__, __getslice__, __iter__, __nonzero__, __setitem__, __setitem__, __setslice__, isMappingType, isNumberType, isSequenceType
Methods inherited from class org.python.core.PyObject
__abs__, __add__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __cmp__, __coerce__, __coerce_ex__, __complex__, __contains__, __delattr__, __delattr__, __delete__, __delitem__, __delslice__, __dir__, __div__, __divmod__, __ensure_finalizer__, __findattr__, __findattr__, __findattr_ex__, __finditem__, __float__, __floordiv__, __format__, __get__, __getattr__, __getattr__, __getitem__, __getnewargs__, __getslice__, __hash__, __hex__, __iadd__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __imul__, __index__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iternext__, __itruediv__, __ixor__, __long__, __lshift__, __mod__, __mul__, __neg__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setattr__, __setitem__, __setslice__, __str__, __sub__, __truediv__, __trunc__, __unicode__, __xor__, _add, _and, _callextra, _cmp, _div, _divmod, _doget, _doget, _doset, _eq, _floordiv, _ge, _gt, _iadd, _iand, _idiv, _idivmod, _ifloordiv, _ilshift, _imod, _imul, _in, _ior, _ipow, _irshift, _is, _isnot, _isub, _itruediv, _ixor, _jcall, _jcallexc, _jthrow, _le, _lshift, _lt, _mod, _mul, _ne, _notin, _or, _pow, _rshift, _sub, _truediv, _xor, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, equals, fastGetClass, fastGetDict, getDict, getType, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType, toString
-
Field Details
-
TYPE
-
-
Constructor Details
-
PyMemoryView
Construct aPyMemoryView
from an object bearing theBufferProtocol
interface. If this object is already an exported buffer, thememoryview
takes a new lease on it. The buffer so obtained will be writable if the underlying object permits it.- Parameters:
pybuf
- buffer exported by some underlying object- Throws:
ClassCastException
- in cases wherepybuf.getBuffer
does so.
-
-
Method Details
-
__tojava__
Description copied from class:PyObject
Equivalent to the Jython __tojava__ method. Tries to coerce this object to an instance of the requested Java class. Returns the special objectPy.NoConversion
if thisPyObject
can not be converted to the desired Java class.- Overrides:
__tojava__
in classPySequence
- Parameters:
c
- the Class to convert thisPyObject
to.
-
obj
-
format
-
itemsize
public int itemsize() -
shape
-
ndim
public int ndim() -
strides
-
suboffsets
-
readonly
public boolean readonly() -
tobytes
Implementation of Pythontobytes()
. Return the data in the buffer as a byte string (an object of classstr
).- Returns:
- byte string of buffer contents.
-
tolist
Implementation of Pythontolist()
. Return the data in the buffer as alist
where the elements are an appropriate type (int
in the case of a byte-oriented buffer, which is the only case presently supported).- Returns:
- a list of buffer contents.
-
__len__
public int __len__()Description copied from class:PyObject
Equivalent to the standard Python __len__ method. Part of the mapping discipline. -
hashCode
public int hashCode() -
__eq__
Description copied from class:PyObject
Equivalent to the standard Python __eq__ method.- Overrides:
__eq__
in classPySequence
- Parameters:
other
- the object to compare this with.- Returns:
- the result of the comparison.
-
__ne__
Description copied from class:PyObject
Equivalent to the standard Python __ne__ method.- Overrides:
__ne__
in classPySequence
- Parameters:
other
- the object to compare this with.- Returns:
- the result of the comparison.
-
__lt__
Description copied from class:PyObject
Equivalent to the standard Python __lt__ method.- Overrides:
__lt__
in classPySequence
- Parameters:
other
- the object to compare this with.- Returns:
- the result of the comparison.
-
__le__
Description copied from class:PyObject
Equivalent to the standard Python __le__ method.- Overrides:
__le__
in classPySequence
- Parameters:
other
- the object to compare this with.- Returns:
- the result of the comparison.
-
__ge__
Description copied from class:PyObject
Equivalent to the standard Python __ge__ method.- Overrides:
__ge__
in classPySequence
- Parameters:
other
- the object to compare this with.- Returns:
- the result of the comparison.
-
__gt__
Description copied from class:PyObject
Equivalent to the standard Python __gt__ method.- Overrides:
__gt__
in classPySequence
- Parameters:
other
- the object to compare this with.- Returns:
- the result of the comparison.
-
__enter__
Called at the start of a context-managed suite (supporting thewith
clause).- Returns:
- this object
-
__exit__
Called at the end of a context-managed suite (supporting thewith
clause), and will release thememoryview
.- Returns:
- false
-
getBuffer
Method by which the consumer requests the buffer from the exporter. The consumer provides information on its ability to understand buffer navigation. Each consumer requesting a buffer in this way, when it has finished using it, should make a corresponding call toPyBuffer.release()
on the buffer it obtained, orPyBuffer.close()
using try-with-resources, since some objects alter their behaviour while buffers are exported.The
PyBuffer
returned from this method is just the one on which thememoryview
was first constructed. The Jython buffer API is such that sharing directly is safe (as long as the get-release discipline is observed).- Specified by:
getBuffer
in interfaceBufferProtocol
- Parameters:
flags
- specifying features demanded and the navigational capabilities of the consumer- Returns:
- exported buffer
-
release
public void release()Request a release of the underlying buffer exposed by thememoryview
object. Many objects take special actions when a view is held on them (for example, abytearray
would temporarily forbid resizing); therefore, callingrelease()
is handy to remove these restrictions (and free any dangling resources) as soon as possible.After this method has been called, any further operation on the view raises a
ValueError
(exceptrelease()
itself which can be called multiple times with the same effect as just one call).This becomes an exposed method in CPython from 3.2. The Jython implementation of
memoryview
follows the Python 3.3 design internally and therefore safely anticipates Python 3 in exposingmemoryview.release
along with the related context-management behaviour. -
memoryview_release
public final void memoryview_release() -
pyset
Sets the indexed element of the memoryview to the given value, treating the operation as assignment to a slice of length one. This is different from the same operation on a byte array, where the assigned value must be an int: here it must have the buffer API and length one. This is an extension point called by PySequence in its implementation ofPySequence.__setitem__(int, org.python.core.PyObject)
It is guaranteed by PySequence that the index is within the bounds of the memoryview. Any other clients calling pyset(int, PyObject) must make the same guarantee.- Parameters:
index
- index of the element to set.value
- to set this element to, regarded as a buffer of length one unit.- Throws:
PyException
-AttributeError
if value cannot be converted to an integerPyException
-ValueError
if value<0 or value>255
-
traverse
Description copied from interface:Traverseproc
Traverses all directly containedPyObject
s. Like in CPython,arg
must be passed unmodified tovisit
as its second parameter. IfVisitproc.visit(PyObject, Object)
returns nonzero, this return value must be returned immediately by traverse.Visitproc.visit(PyObject, Object)
must not be called with anull
PyObject-argument.- Specified by:
traverse
in interfaceTraverseproc
-
refersDirectlyTo
Description copied from interface:Traverseproc
Optional operation. Should only be implemented if it is more efficient than callingTraverseproc.traverse(Visitproc, Object)
with a visitproc that just watches out forob
. Must returnfalse
ifob
isnull
.- Specified by:
refersDirectlyTo
in interfaceTraverseproc
-