Voice et bot modif
This commit is contained in:
parent
189d56026b
commit
7333a22bcd
10774 changed files with 634644 additions and 933308 deletions
78
venv/lib/python3.12/site-packages/av/dictionary.py
Normal file
78
venv/lib/python3.12/site-packages/av/dictionary.py
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
import cython
|
||||
from cython.cimports.av.error import err_check
|
||||
|
||||
|
||||
@cython.final
|
||||
@cython.cclass
|
||||
class Dictionary:
|
||||
def __cinit__(self, *args, **kwargs):
|
||||
for arg in args:
|
||||
self.update(arg)
|
||||
if kwargs:
|
||||
self.update(kwargs)
|
||||
|
||||
def __dealloc__(self):
|
||||
if self.ptr != cython.NULL:
|
||||
lib.av_dict_free(cython.address(self.ptr))
|
||||
|
||||
def __getitem__(self, key: cython.str):
|
||||
element: cython.pointer[lib.AVDictionaryEntry] = lib.av_dict_get(
|
||||
self.ptr, key, cython.NULL, 0
|
||||
)
|
||||
if element == cython.NULL:
|
||||
raise KeyError(key)
|
||||
return element.value
|
||||
|
||||
def __setitem__(self, key: cython.str, value: cython.str):
|
||||
err_check(lib.av_dict_set(cython.address(self.ptr), key, value, 0))
|
||||
|
||||
def __delitem__(self, key: cython.str):
|
||||
err_check(lib.av_dict_set(cython.address(self.ptr), key, cython.NULL, 0))
|
||||
|
||||
def __len__(self):
|
||||
return err_check(lib.av_dict_count(self.ptr))
|
||||
|
||||
def __iter__(self):
|
||||
element: cython.pointer[lib.AVDictionaryEntry] = cython.NULL
|
||||
while True:
|
||||
element = lib.av_dict_get(self.ptr, "", element, lib.AV_DICT_IGNORE_SUFFIX)
|
||||
if element == cython.NULL:
|
||||
break
|
||||
yield element.key
|
||||
|
||||
def __repr__(self):
|
||||
return f"av.Dictionary({dict(self)!r})"
|
||||
|
||||
def keys(self):
|
||||
return list(self)
|
||||
|
||||
def copy(self):
|
||||
other: Dictionary = Dictionary()
|
||||
lib.av_dict_copy(cython.address(other.ptr), self.ptr, 0)
|
||||
return other
|
||||
|
||||
def pop(self, key: str):
|
||||
value = self[key]
|
||||
del self[key]
|
||||
return value
|
||||
|
||||
def update(self, other=(), /, **kwds):
|
||||
if isinstance(other, Dictionary):
|
||||
lib.av_dict_copy(
|
||||
cython.address(self.ptr), cython.cast(Dictionary, other).ptr, 0
|
||||
)
|
||||
elif hasattr(other, "keys"):
|
||||
for key in other.keys():
|
||||
self[key] = other[key]
|
||||
else:
|
||||
for key, value in other:
|
||||
self[key] = value
|
||||
for key, value in kwds.items():
|
||||
self[key] = value
|
||||
|
||||
|
||||
@cython.cfunc
|
||||
def wrap_dictionary(input_: cython.pointer[lib.AVDictionary]) -> Dictionary:
|
||||
output: Dictionary = Dictionary()
|
||||
output.ptr = input_
|
||||
return output
|
||||
Loading…
Add table
Add a link
Reference in a new issue