Current Path: > > opt > alt > python37 > lib > python3.7 > site-packages > > attr
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
__init__.py | File | 1613 bytes | May 07 2021 09:20:15. | |
__init__.pyi | File | 14837 bytes | May 05 2021 08:25:16. | |
_cmp.py | File | 4133 bytes | May 06 2021 07:03:24. | |
_cmp.pyi | File | 318 bytes | May 01 2021 12:26:39. | |
_compat.py | File | 7562 bytes | February 27 2021 09:49:47. | |
_config.py | File | 514 bytes | October 17 2019 08:29:00. | |
_funcs.py | File | 13398 bytes | May 06 2021 14:11:04. | |
_make.py | File | 97743 bytes | May 05 2021 08:05:42. | |
_next_gen.py | File | 4072 bytes | April 12 2021 12:35:56. | |
_version_info.py | File | 2162 bytes | March 29 2020 07:56:49. | |
_version_info.pyi | File | 209 bytes | March 29 2020 07:56:49. | |
converters.py | File | 3039 bytes | February 18 2021 15:38:25. | |
converters.pyi | File | 382 bytes | February 19 2021 07:15:51. | |
exceptions.py | File | 1949 bytes | April 30 2021 12:38:44. | |
exceptions.pyi | File | 540 bytes | February 19 2021 07:15:51. | |
filters.py | File | 1098 bytes | March 29 2020 07:56:49. | |
filters.pyi | File | 216 bytes | February 19 2021 07:15:51. | |
py.typed | File | 0 bytes | July 12 2018 10:28:53. | |
setters.py | File | 1434 bytes | July 20 2020 10:43:42. | |
setters.pyi | File | 574 bytes | April 06 2021 04:14:02. | |
validators.py | File | 11497 bytes | July 20 2020 10:43:42. | |
validators.pyi | File | 1870 bytes | February 19 2021 07:15:51. |
from __future__ import absolute_import, division, print_function import functools from ._compat import new_class from ._make import _make_ne _operation_names = {"eq": "==", "lt": "<", "le": "<=", "gt": ">", "ge": ">="} def cmp_using( eq=None, lt=None, le=None, gt=None, ge=None, require_same_type=True, class_name="Comparable", ): """ Create a class that can be passed into `attr.ib`'s ``eq``, ``order``, and ``cmp`` arguments to customize field comparison. The resulting class will have a full set of ordering methods if at least one of ``{lt, le, gt, ge}`` and ``eq`` are provided. :param Optional[callable] eq: `callable` used to evaluate equality of two objects. :param Optional[callable] lt: `callable` used to evaluate whether one object is less than another object. :param Optional[callable] le: `callable` used to evaluate whether one object is less than or equal to another object. :param Optional[callable] gt: `callable` used to evaluate whether one object is greater than another object. :param Optional[callable] ge: `callable` used to evaluate whether one object is greater than or equal to another object. :param bool require_same_type: When `True`, equality and ordering methods will return `NotImplemented` if objects are not of the same type. :param Optional[str] class_name: Name of class. Defaults to 'Comparable'. See `comparison` for more details. .. versionadded:: 21.1.0 """ body = { "__slots__": ["value"], "__init__": _make_init(), "_requirements": [], "_is_comparable_to": _is_comparable_to, } # Add operations. num_order_functions = 0 has_eq_function = False if eq is not None: has_eq_function = True body["__eq__"] = _make_operator("eq", eq) body["__ne__"] = _make_ne() if lt is not None: num_order_functions += 1 body["__lt__"] = _make_operator("lt", lt) if le is not None: num_order_functions += 1 body["__le__"] = _make_operator("le", le) if gt is not None: num_order_functions += 1 body["__gt__"] = _make_operator("gt", gt) if ge is not None: num_order_functions += 1 body["__ge__"] = _make_operator("ge", ge) type_ = new_class(class_name, (object,), {}, lambda ns: ns.update(body)) # Add same type requirement. if require_same_type: type_._requirements.append(_check_same_type) # Add total ordering if at least one operation was defined. if 0 < num_order_functions < 4: if not has_eq_function: # functools.total_ordering requires __eq__ to be defined, # so raise early error here to keep a nice stack. raise ValueError( "eq must be define is order to complete ordering from " "lt, le, gt, ge." ) type_ = functools.total_ordering(type_) return type_ def _make_init(): """ Create __init__ method. """ def __init__(self, value): """ Initialize object with *value*. """ self.value = value return __init__ def _make_operator(name, func): """ Create operator method. """ def method(self, other): if not self._is_comparable_to(other): return NotImplemented result = func(self.value, other.value) if result is NotImplemented: return NotImplemented return result method.__name__ = "__%s__" % (name,) method.__doc__ = "Return a %s b. Computed by attrs." % ( _operation_names[name], ) return method def _is_comparable_to(self, other): """ Check whether `other` is comparable to `self`. """ for func in self._requirements: if not func(self, other): return False return True def _check_same_type(self, other): """ Return True if *self* and *other* are of the same type, False otherwise. """ return other.value.__class__ is self.value.__class__
SILENT KILLER Tool