Initialisation du repository de Beta
This commit is contained in:
commit
14985f6dbb
9469 changed files with 1903273 additions and 0 deletions
57
venv/lib/python3.12/site-packages/av/dictionary.pyx
Normal file
57
venv/lib/python3.12/site-packages/av/dictionary.pyx
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
from collections.abc import MutableMapping
|
||||
|
||||
from av.error cimport err_check
|
||||
|
||||
|
||||
cdef 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 != NULL:
|
||||
lib.av_dict_free(&self.ptr)
|
||||
|
||||
def __getitem__(self, str key):
|
||||
cdef lib.AVDictionaryEntry *element = lib.av_dict_get(self.ptr, key, NULL, 0)
|
||||
if element != NULL:
|
||||
return element.value
|
||||
else:
|
||||
raise KeyError(key)
|
||||
|
||||
def __setitem__(self, str key, str value):
|
||||
err_check(lib.av_dict_set(&self.ptr, key, value, 0))
|
||||
|
||||
def __delitem__(self, str key):
|
||||
err_check(lib.av_dict_set(&self.ptr, key, NULL, 0))
|
||||
|
||||
def __len__(self):
|
||||
return err_check(lib.av_dict_count(self.ptr))
|
||||
|
||||
def __iter__(self):
|
||||
cdef lib.AVDictionaryEntry *element = NULL
|
||||
while True:
|
||||
element = lib.av_dict_get(self.ptr, "", element, lib.AV_DICT_IGNORE_SUFFIX)
|
||||
if element == NULL:
|
||||
break
|
||||
yield element.key
|
||||
|
||||
def __repr__(self):
|
||||
return f"av.Dictionary({dict(self)!r})"
|
||||
|
||||
cpdef _Dictionary copy(self):
|
||||
cdef _Dictionary other = Dictionary()
|
||||
lib.av_dict_copy(&other.ptr, self.ptr, 0)
|
||||
return other
|
||||
|
||||
|
||||
class Dictionary(_Dictionary, MutableMapping):
|
||||
pass
|
||||
|
||||
|
||||
cdef _Dictionary wrap_dictionary(lib.AVDictionary *input_):
|
||||
cdef _Dictionary output = Dictionary()
|
||||
output.ptr = input_
|
||||
return output
|
||||
Loading…
Add table
Add a link
Reference in a new issue