Class PyDictionary

All Implemented Interfaces:
Serializable, ConcurrentMap, Map, Traverseproc
Direct Known Subclasses:
PyDefaultDict, PyDictionaryDerived

public class PyDictionary extends AbstractDict implements ConcurrentMap, Traverseproc
A builtin python dictionary.
See Also:
  • Field Details

    • TYPE

      public static final PyType TYPE
  • Constructor Details

    • PyDictionary

      public PyDictionary()
      Create an empty dictionary.
    • PyDictionary

      public PyDictionary(PyType type, int capacity)
      Create a dictionary of type with the specified initial capacity.
    • PyDictionary

      public PyDictionary(PyType type)
      For derived types
    • PyDictionary

      public PyDictionary(Map<PyObject,PyObject> map)
      Create a new dictionary which is based on given map.
    • PyDictionary

      public PyDictionary(ConcurrentMap<PyObject,PyObject> backingMap, boolean useBackingMap)
    • PyDictionary

      public PyDictionary(PyType type, ConcurrentMap<PyObject,PyObject> backingMap, boolean useBackingMap)
    • PyDictionary

      public PyDictionary(PyType type, Map<PyObject,PyObject> map)
      Create a new dictionary which is populated with entries the given map.
    • PyDictionary

      public PyDictionary(PyObject[] elements)
      Create a new dictionary with the element as content.
      Parameters:
      elements - The initial elements that is inserted in the dictionary. Even numbered elements are keys, odd numbered elements are values.
  • Method Details

    • getMap

      public ConcurrentMap<PyObject,PyObject> getMap()
      Specified by:
      getMap in class AbstractDict
    • fromkeys

      public static PyObject fromkeys(PyObject keys)
    • fromkeys

      public static PyObject fromkeys(PyObject keys, PyObject value)
    • __len__

      public int __len__()
      Description copied from class: PyObject
      Equivalent to the standard Python __len__ method. Part of the mapping discipline.
      Overrides:
      __len__ in class PyObject
      Returns:
      the length of the object
    • __nonzero__

      public boolean __nonzero__()
      Description copied from class: PyObject
      Equivalent to the standard Python __nonzero__ method. Returns whether of not a given PyObject is considered true.
      Overrides:
      __nonzero__ in class PyObject
    • __finditem__

      public PyObject __finditem__(int index)
      Description copied from class: PyObject
      A variant of the __finditem__ method which accepts a primitive int as the key. By default, this method will call __finditem__(PyObject key) with the appropriate args. The only reason to override this method is for performance.
      Overrides:
      __finditem__ in class PyObject
      Parameters:
      index - the key to lookup in this sequence.
      Returns:
      the value corresponding to key or null if key is not found.
      See Also:
    • __finditem__

      public PyObject __finditem__(PyObject key)
      Description copied from class: PyObject
      Very similar to the standard Python __getitem__ method. Instead of throwing a KeyError if the item isn't found, this just returns null. Classes that wish to implement __getitem__ should override this method instead (with the appropriate semantics.
      Overrides:
      __finditem__ in class PyObject
      Parameters:
      key - the key to lookup in this container
      Returns:
      the value corresponding to key or null if key is not found
    • __setitem__

      public void __setitem__(PyObject key, PyObject value)
      Description copied from class: PyObject
      Equivalent to the standard Python __setitem__ method.
      Overrides:
      __setitem__ in class PyObject
      Parameters:
      key - the key whose value will be set
      value - the value to set this key to
    • __delitem__

      public void __delitem__(PyObject key)
      Description copied from class: PyObject
      Equivalent to the standard Python __delitem__ method.
      Overrides:
      __delitem__ in class PyObject
      Parameters:
      key - the key to be removed from the container
    • __iter__

      public PyObject __iter__()
      Description copied from class: PyObject
      Return an iterator that is used to iterate the element of this sequence. From version 2.2, this method is the primary protocol for looping over sequences.

      If a PyObject subclass should support iteration based in the __finditem__() method, it must supply an implementation of __iter__() like this:

       public PyObject __iter__() {
           return new PySequenceIter(this);
       }
       
      When iterating over a python sequence from java code, it should be done with code like this:
       for (PyObject item : seq.asIterable()) {
           // Do something with item
       }
       
      Overrides:
      __iter__ in class PyObject
    • toString

      public String toString()
      Overrides:
      toString in class PyObject
    • __eq__

      public PyObject __eq__(PyObject otherObj)
      Description copied from class: PyObject
      Equivalent to the standard Python __eq__ method.
      Overrides:
      __eq__ in class PyObject
      Parameters:
      otherObj - the object to compare this with.
      Returns:
      the result of the comparison.
    • __ne__

      public PyObject __ne__(PyObject otherObj)
      Description copied from class: PyObject
      Equivalent to the standard Python __ne__ method.
      Overrides:
      __ne__ in class PyObject
      Parameters:
      otherObj - the object to compare this with.
      Returns:
      the result of the comparison.
    • __cmp__

      public int __cmp__(PyObject otherObj)
      Description copied from class: PyObject
      Equivalent to the standard Python __cmp__ method.
      Overrides:
      __cmp__ in class PyObject
      Parameters:
      otherObj - the object to compare this with.
      Returns:
      -1 if this<o; 0 if this==o; +1 if this>o; -2 if no comparison is implemented
    • has_key

      public boolean has_key(PyObject key)
      Return true if the key exist in the dictionary.
      Specified by:
      has_key in class AbstractDict
    • __contains__

      public boolean __contains__(PyObject o)
      Description copied from class: PyObject
      Equivalent to the standard Python __contains__ method.
      Overrides:
      __contains__ in class PyObject
      Parameters:
      o - the element to search for in this container.
      Returns:
      the result of the search.
    • get

      public PyObject get(PyObject key, PyObject defaultObj)
      Return this[key] if the key exists in the mapping, defaultObj is returned otherwise.
      Specified by:
      get in class AbstractDict
      Parameters:
      key - the key to lookup in the dictionary.
      defaultObj - the value to return if the key does not exists in the mapping.
    • get

      public PyObject get(PyObject key)
      Return this[key] if the key exists in the mapping, None is returned otherwise.
      Specified by:
      get in class AbstractDict
      Parameters:
      key - the key to lookup in the dictionary.
    • copy

      public PyDictionary copy()
      Return a shallow copy of the dictionary.
      Specified by:
      copy in class AbstractDict
    • clear

      public void clear()
      Remove all items from the dictionary.
      Specified by:
      clear in interface Map
      Specified by:
      clear in class AbstractDict
    • update

      public void update(PyObject other)
      Insert all the key:value pairs from d into this dictionary.
      Specified by:
      update in class AbstractDict
    • updateCommon

      public void updateCommon(PyObject[] args, String[] keywords, String methName)
    • merge

      public void merge(PyObject other, boolean override)
      Merge another PyObject that supports keys() with this dict.
      Specified by:
      merge in class AbstractDict
      Parameters:
      other - a PyObject with a keys() method
      override - if true, the value from other is used on key-collision
    • mergeFromKeys

      public void mergeFromKeys(PyObject other, PyObject keys, boolean override)
      Merge another PyObject via its keys() method
      Specified by:
      mergeFromKeys in class AbstractDict
      Parameters:
      other - a PyObject with a keys() method
      keys - the result of other's keys() method
      override - if true, the value from other is used on key-collision
    • mergeFromSeq

      public void mergeFromSeq(PyObject other, boolean override)
      Merge any iterable object producing iterable objects of length 2 into this dict.
      Specified by:
      mergeFromSeq in class AbstractDict
      Parameters:
      other - another PyObject
      override - if true, the value from other is used on key-collision
    • setdefault

      public PyObject setdefault(PyObject key)
      Return this[key] if the key exist, otherwise insert key with a None value and return None.
      Specified by:
      setdefault in class AbstractDict
      Parameters:
      key - the key to lookup in the dictionary.
    • setdefault

      public PyObject setdefault(PyObject key, PyObject failobj)
      Return this[key] if the key exist, otherwise insert key with the value of failobj and return failobj
      Specified by:
      setdefault in class AbstractDict
      Parameters:
      key - the key to lookup in the dictionary.
      failobj - the default value to insert in the dictionary if key does not already exist.
    • pop

      public PyObject pop(PyObject key)
      Return a value based on key from the dictionary.
      Specified by:
      pop in class AbstractDict
    • pop

      public PyObject pop(PyObject key, PyObject defaultValue)
      Return a value based on key from the dictionary or default if that key is not found.
      Specified by:
      pop in class AbstractDict
    • popitem

      public PyObject popitem()
      Return a random (key, value) tuple pair and remove the pair from the dictionary.
      Specified by:
      popitem in class AbstractDict
    • items

      public PyList items()
      Return a copy of the dictionary's list of (key, value) tuple pairs.
      Specified by:
      items in class AbstractDict
    • keys

      public PyList keys()
      Return a copy of the dictionary's list of keys.
      Specified by:
      keys in class AbstractDict
    • iteritems

      public PyObject iteritems()
      Returns an iterator over (key, value) pairs.
      Specified by:
      iteritems in class AbstractDict
    • iterkeys

      public PyObject iterkeys()
      Returns an iterator over the dictionary's keys.
      Specified by:
      iterkeys in class AbstractDict
    • itervalues

      public PyObject itervalues()
      Returns an iterator over the dictionary's values.
      Specified by:
      itervalues in class AbstractDict
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Map
      Overrides:
      hashCode in class PyObject
    • equals

      public boolean equals(Object obj)
      Description copied from class: PyObject
      Should almost never be overridden. If overridden, it is the subclasses responsibility to ensure that a.equals(b) == true iff cmp(a,b) == 0
      Specified by:
      equals in interface Map
      Overrides:
      equals in class PyObject
    • isMappingType

      public boolean isMappingType()
      Overrides:
      isMappingType in class PyObject
    • isSequenceType

      public boolean isSequenceType()
      Overrides:
      isSequenceType in class PyObject
    • viewkeys

      public PyObject viewkeys()
      Returns a dict_keys on the dictionary's keys
      Overrides:
      viewkeys in class AbstractDict
    • viewitems

      public PyObject viewitems()
      Returns a dict_items on the dictionary's items
      Overrides:
      viewitems in class AbstractDict
    • viewvalues

      public PyObject viewvalues()
      Returns a dict_values on the dictionary's values
      Overrides:
      viewvalues in class AbstractDict
    • pyKeySet

      public Set<PyObject> pyKeySet()
      Specified by:
      pyKeySet in class AbstractDict
    • entrySet

      public Set entrySet()
      Specified by:
      entrySet in interface Map
      Specified by:
      entrySet in class AbstractDict
      See Also:
    • keySet

      public Set keySet()
      Specified by:
      keySet in interface Map
      See Also:
    • values

      public Collection values()
      Specified by:
      values in interface Map
      Specified by:
      values in class AbstractDict
      See Also:
    • putAll

      public void putAll(Map map)
      Specified by:
      putAll in interface Map
      See Also:
    • remove

      public Object remove(Object key)
      Specified by:
      remove in interface Map
      See Also:
    • put

      public Object put(Object key, Object value)
      Specified by:
      put in interface Map
      See Also:
    • get

      public Object get(Object key)
      Specified by:
      get in interface Map
      See Also:
    • containsValue

      public boolean containsValue(Object value)
      Specified by:
      containsValue in interface Map
      See Also:
    • containsKey

      public boolean containsKey(Object key)
      Specified by:
      containsKey in interface Map
      See Also:
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Map
      See Also:
    • size

      public int size()
      Specified by:
      size in interface Map
      See Also:
    • putIfAbsent

      public Object putIfAbsent(Object key, Object value)
      Specified by:
      putIfAbsent in interface ConcurrentMap
      Specified by:
      putIfAbsent in interface Map
    • remove

      public boolean remove(Object key, Object value)
      Specified by:
      remove in interface ConcurrentMap
      Specified by:
      remove in interface Map
    • replace

      public boolean replace(Object key, Object oldValue, Object newValue)
      Specified by:
      replace in interface ConcurrentMap
      Specified by:
      replace in interface Map
    • replace

      public Object replace(Object key, Object value)
      Specified by:
      replace in interface ConcurrentMap
      Specified by:
      replace in interface Map
    • traverse

      public int traverse(Visitproc visit, Object arg)
      Description copied from interface: Traverseproc
      Traverses all directly contained PyObjects. Like in CPython, arg must be passed unmodified to visit as its second parameter. If Visitproc.visit(PyObject, Object) returns nonzero, this return value must be returned immediately by traverse. Visitproc.visit(PyObject, Object) must not be called with a null PyObject-argument.
      Specified by:
      traverse in interface Traverseproc
    • refersDirectlyTo

      public boolean refersDirectlyTo(PyObject ob)
      Description copied from interface: Traverseproc
      Optional operation. Should only be implemented if it is more efficient than calling Traverseproc.traverse(Visitproc, Object) with a visitproc that just watches out for ob. Must return false if ob is null.
      Specified by:
      refersDirectlyTo in interface Traverseproc