class_docstr: Persistent vector implementation. Meant as a replacement for the cases where you would normally
  use a Python list.
  
  Do not instantiate directly, instead use the factory functions :py:func:`v` and :py:func:`pvector` to
  create an instance.
  
  Heavily influenced by the persistent vector available in Clojure. Initially this was more or
  less just a port of the Java code for the Clojure vector. It has since been modified and to
  some extent optimized for usage in Python.
  
  The vector is organized as a trie, any mutating method will return a new vector that contains the changes. No
  updates are done to the original vector. Structural sharing between vectors are applied where possible to save
  space and to avoid making complete copies.
  
  This structure corresponds most closely to the built in list type and is intended as a replacement. Where the
  semantics are the same (more or less) the same function names have been used but for some cases it is not possible,
  for example assignments.
  
  The PVector implements the Sequence protocol and is Hashable.
  
  Inserts are amortized O(1). Random access is log32(n) where n is the size of the vector.
  
  The following are examples of some common operations on persistent vectors:
  
  >>> p = v(1, 2, 3)
  >>> p2 = p.append(4)
  >>> p3 = p2.extend([5, 6, 7])
  >>> p
  pvector([1, 2, 3])
  >>> p2
  pvector([1, 2, 3, 4])
  >>> p3
  pvector([1, 2, 3, 4, 5, 6, 7])
  >>> p3[5]
  6
  >>> p.set(1, 99)
  pvector([1, 99, 3])
  >>>
class_docstr_tok: ["Persistent","vector","implementation",".","Meant","as","a","replacement","for","the","cases","where","you","would","normally","use","a","Python","list",".","Do","not","instantiate","directly",",","instead","use","the","factory","functions",":","py",":","func",":","`","v","`","and",":","py",":","func",":","`","pvector","`","to","create","an","instance",".","Heavily","influenced","by","the","persistent","vector","available","in","Clojure",".","Initially","this","was","more","or","less","just","a","port","of","the","Java","code","for","the","Clojure","vector",".","It","has","since","been","modified","and","to","some","extent","optimized","for","usage","in","Python",".","The","vector","is","organized","as","a","trie",",","any","mutating","method","will","return","a","new","vector","that","contains","the","changes",".","No","updates","are","done","to","the","original","vector",".","Structural","sharing","between","vectors","are","applied","where","possible","to","save","space","and","to","avoid","making","complete","copies",".","This","structure","corresponds","most","closely","to","the","built","in","list","type","and","is","intended","as","a","replacement",".","Where","the","semantics","are","the","same","(","more","or","less",")","the","same","function","names","have","been","used","but","for","some","cases","it","is","not","possible",",","for","example","assignments",".","The","PVector","implements","the","Sequence","protocol","and","is","Hashable",".","Inserts","are","amortized","O","(","1",")",".","Random","access","is","log32","(","n",")","where","n","is","the","size","of","the","vector",".","The","following","are","examples","of","some","common","operations","on","persistent","vectors",":",">",">",">","p","=","v","(","1",",","2",",","3",")",">",">",">","p2","=","p.append","(","4",")",">",">",">","p3","=","p2.extend","(","[","5",",","6",",","7","]",")",">",">",">","p","pvector","(","[","1",",","2",",","3","]",")",">",">",">","p2","pvector","(","[","1",",","2",",","3",",","4","]",")",">",">",">","p3","pvector","(","[","1",",","2",",","3",",","4",",","5",",","6",",","7","]",")",">",">",">","p3","[","5","]","6",">",">",">","p.set","(","1",",","99",")","pvector","(","[","1",",","99",",","3","]",")",">",">",">"]
docstr: Get value at index. Full slicing support.
  
  >>> v1 = v(5, 6, 7, 8)
  >>> v1[2]
  7
  >>> v1[1:3]
  pvector([6, 7])
docstr_tok: ["Get","value","at","index",".","Full","slicing","support",".",">",">",">","v1","=","v","(","5",",","6",",","7",",","8",")",">",">",">","v1","[","2","]","7",">",">",">","v1","[","1:3","]","pvector","(","[","6",",","7","]",")"]
code: def __getitem__(self, index):
      """
      Get value at index. Full slicing support.
  
      >>> v1 = v(5, 6, 7, 8)
      >>> v1[2]
      7
      >>> v1[1:3]
      pvector([6, 7])
      """
  
imports: from abc import abstractmethod, ABCMeta
  from ._compat import Sequence, Hashable
  from numbers import Integral
  import operator
  import six
  from pyrsistent._transformations import transform
label_desc: Use image node_id 2 for calling the PVector obj's underlying member method code with example usage: obj.__getitem__(index) without return types