xloft 0.1.7__py3-none-any.whl → 0.1.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of xloft might be problematic. Click here for more details.

xloft/namedtuple.py CHANGED
@@ -11,17 +11,17 @@ from xloft.errors import (
11
11
  class NamedTuple:
12
12
  """Named Tuple."""
13
13
 
14
+ VAR_NAME_FOR_KEYS_LIST: str = "_jWjSaNy1RbtQinsN_keys"
15
+
14
16
  def __init__(self, **kwargs: dict[str, Any]) -> None: # noqa: D107
15
- self.__dict__["_keys"] = []
17
+ self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST] = []
16
18
  for name, value in kwargs.items():
17
19
  self.__dict__[name] = value
18
- self._keys.append(name)
19
- else:
20
- self.__dict__["_len"] = len(self._keys)
20
+ self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST].append(name)
21
21
 
22
22
  def __len__(self) -> int:
23
23
  """Get the number of elements."""
24
- return self._len
24
+ return len(self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST])
25
25
 
26
26
  def __getattr__(self, name: str) -> Any:
27
27
  """Getter."""
@@ -47,35 +47,37 @@ class NamedTuple:
47
47
 
48
48
  Attention: This is an uncharacteristic action for the type `tuple`.
49
49
  """
50
- if not key in self._keys:
50
+ keys: list[str] = self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST]
51
+ if not key in keys:
51
52
  err_msg = f"The key `{key}` is missing!"
52
53
  raise KeyError(err_msg)
53
54
  self.__dict__[key] = value
54
55
 
55
56
  def to_dict(self) -> dict[str, Any]:
56
57
  """Convert to the dictionary."""
57
- return {
58
- key: value
59
- for key, value in self.__dict__.items()
60
- if not callable(value) and not key in ["_keys", "_len"]
61
- }
58
+ keys: list[str] = self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST]
59
+ return {key: self.__dict__[key] for key in keys}
62
60
 
63
61
  def items(self) -> list[tuple[str, Any]]:
64
62
  """Return a set-like object providing a view on the NamedTuple's items."""
65
- return [
66
- (key, value)
67
- for key, value in self.__dict__.items()
68
- if not callable(value) and not key in ["_keys", "_len"]
69
- ]
63
+ keys: list[str] = self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST]
64
+ return [(key, self.__dict__[key]) for key in keys]
70
65
 
71
66
  def keys(self) -> list[str]:
72
67
  """Get a list of keys."""
73
- return self._keys
68
+ return self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST]
74
69
 
75
70
  def values(self) -> list[Any]:
76
71
  """Get a list of values."""
77
- return [
78
- value
79
- for key, value in self.__dict__.items()
80
- if not callable(value) and not key in ["_keys", "_len"]
81
- ]
72
+ keys: list[str] = self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST]
73
+ return [self.__dict__[key] for key in keys]
74
+
75
+ def has_key(self, key: str) -> bool:
76
+ """Returns True if the key exists, otherwise False."""
77
+ keys: list[str] = self.__dict__[NamedTuple.VAR_NAME_FOR_KEYS_LIST]
78
+ return key in keys
79
+
80
+ def has_value(self, value: Any) -> bool:
81
+ """Returns True if the value exists, otherwise False."""
82
+ values = self.values()
83
+ return value in values
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xloft
3
- Version: 0.1.7
3
+ Version: 0.1.8
4
4
  Summary: (XLOFT) X-Library of tools
5
5
  Project-URL: Homepage, https://github.com/kebasyaty/xloft
6
6
  Project-URL: Repository, https://github.com/kebasyaty/xloft
@@ -95,19 +95,18 @@ len(nt) # => 2
95
95
  nt.keys() # => ["x", "y"]
96
96
  nt.values() # => [10, "Hello"]
97
97
 
98
- nt["x"] # => raise: KeyError
99
- nt["y"] # => raise: KeyError
100
- nt["x"] = 20 # => TypeError
101
- nt["y"] = "Hi" # => TypeError
98
+ nt.has_key("x") # => True
99
+ nt.has_key("y") # => True
100
+ nt.has_key("z") # => False
101
+
102
+ nt.has_value(10) # => True
103
+ nt.has_value("Hello") # => True
104
+ nt.has_value([1, 2, 3]) # => False
102
105
 
103
106
  nt.get("x") # => 10
104
107
  nt.get("y") # => "Hello"
105
108
  nt.get("z") # => None
106
109
 
107
- nt.x = 20 # => raise: AttributeDoesNotSetValue
108
- nt.y = "Hi" # => raise: AttributeDoesNotSetValue
109
- nt.z = [1, 2, 3] # => raise: AttributeDoesNotSetValue
110
-
111
110
  nt.update("x", 20)
112
111
  nt.update("y", "Hi")
113
112
  nt.x # => 20
@@ -121,6 +120,17 @@ d["y"] # => "Hello"
121
120
  for key, val in nt.items():
122
121
  print(f"Key: {key}, Value: {val}")
123
122
 
123
+ nt["x"] # => raise: KeyError
124
+ nt["y"] # => raise: KeyError
125
+ nt["z"] # => raise: KeyError
126
+ nt["x"] = 20 # => TypeError
127
+ nt["y"] = "Hi" # => TypeError
128
+ nt["z"] = [1, 2, 3] # => TypeError
129
+
130
+ nt.x = 20 # => raise: AttributeDoesNotSetValue
131
+ nt.y = "Hi" # => raise: AttributeDoesNotSetValue
132
+ nt.z = [1, 2, 3] # => raise: AttributeDoesNotSetValue
133
+
124
134
  del nt.x # => raise: AttributeCannotBeDelete
125
135
  del nt.y # => raise: AttributeCannotBeDelete
126
136
  ```
@@ -0,0 +1,8 @@
1
+ xloft/__init__.py,sha256=yV847dKh9ROtw1fX5NHvPaHN-9cHYOfu9URQ--OVKXw,107
2
+ xloft/errors.py,sha256=GYXvi2l01VUDQSs6skiOfQsKLF6tFuUhJMqNkL7BJNI,857
3
+ xloft/namedtuple.py,sha256=PVj9DJDo01mU91EgBcyIx3XFRs0iKTjEv_wfq1A1CKA,2929
4
+ xloft/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ xloft-0.1.8.dist-info/METADATA,sha256=ga-tZTK076ryrQuqiFFMn0EiBs-9Nary09uycdwt-tQ,5677
6
+ xloft-0.1.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
7
+ xloft-0.1.8.dist-info/licenses/LICENSE,sha256=2zZINd6m_jNYlowdQImlEizyhSui5cBAJZRhWQURcEc,1095
8
+ xloft-0.1.8.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- xloft/__init__.py,sha256=yV847dKh9ROtw1fX5NHvPaHN-9cHYOfu9URQ--OVKXw,107
2
- xloft/errors.py,sha256=GYXvi2l01VUDQSs6skiOfQsKLF6tFuUhJMqNkL7BJNI,857
3
- xloft/namedtuple.py,sha256=h_1UEKR7A0WD-WUGNQBVBTGwcpRmLTyQ8czl-fVmmP4,2452
4
- xloft/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- xloft-0.1.7.dist-info/METADATA,sha256=N7LrkeK_XCDXuSF5a3mIuLK3kIDum4jGDw_rQg7CNaA,5430
6
- xloft-0.1.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
7
- xloft-0.1.7.dist-info/licenses/LICENSE,sha256=2zZINd6m_jNYlowdQImlEizyhSui5cBAJZRhWQURcEc,1095
8
- xloft-0.1.7.dist-info/RECORD,,
File without changes