diff options
author | James Taylor <user234683@users.noreply.github.com> | 2019-09-06 16:31:13 -0700 |
---|---|---|
committer | James Taylor <user234683@users.noreply.github.com> | 2019-09-06 16:31:13 -0700 |
commit | 3d57e14df7ba5f14a634295caf3b2e60da50bfe2 (patch) | |
tree | 4903bcb79a49ad714a1a9129765b9545405c9978 /python/gevent/_ident.py | |
parent | ac32b24b2a011292b704a3f27e8fd08a7ae9424b (diff) | |
download | yt-local-3d57e14df7ba5f14a634295caf3b2e60da50bfe2.tar.lz yt-local-3d57e14df7ba5f14a634295caf3b2e60da50bfe2.tar.xz yt-local-3d57e14df7ba5f14a634295caf3b2e60da50bfe2.zip |
Remove windows python distribution from repo and add requirements.txt
Diffstat (limited to 'python/gevent/_ident.py')
-rw-r--r-- | python/gevent/_ident.py | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/python/gevent/_ident.py b/python/gevent/_ident.py deleted file mode 100644 index 56a28df..0000000 --- a/python/gevent/_ident.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2018 gevent contributors. See LICENSE for details. -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - - -from weakref import WeakKeyDictionary -from weakref import ref - -from heapq import heappop -from heapq import heappush - -__all__ = [ - 'IdentRegistry', -] - -class ValuedWeakRef(ref): - """ - A weak ref with an associated value. - """ - # This seems entirely spurious; even on Python 2.7 - # weakref.ref descends from object - # pylint: disable=slots-on-old-class - __slots__ = ('value',) - - -class IdentRegistry(object): - """ - Maintains a unique mapping of (small) positive integer identifiers - to objects that can be weakly referenced. - - It is guaranteed that no two objects will have the the same - identifier at the same time, as long as those objects are - also uniquely hashable. - """ - - def __init__(self): - # {obj -> (ident, wref(obj))} - self._registry = WeakKeyDictionary() - - # A heap of numbers that have been used and returned - self._available_idents = [] - - def get_ident(self, obj): - """ - Retrieve the identifier for *obj*, creating one - if necessary. - """ - - try: - return self._registry[obj][0] - except KeyError: - pass - - if self._available_idents: - # Take the smallest free number - ident = heappop(self._available_idents) - else: - # Allocate a bigger one - ident = len(self._registry) - - vref = ValuedWeakRef(obj, self._return_ident) - vref.value = ident # pylint:disable=assigning-non-slot,attribute-defined-outside-init - self._registry[obj] = (ident, vref) - return ident - - def _return_ident(self, vref): - # By the time this is called, self._registry has been - # updated - if heappush is not None: - # Under some circumstances we can get called - # when the interpreter is shutting down, and globals - # aren't available any more. - heappush(self._available_idents, vref.value) - - def __len__(self): - return len(self._registry) - - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__ident') |