jetpytools 2.0.2__tar.gz → 2.1.1__tar.gz

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 jetpytools might be problematic. Click here for more details.

Files changed (35) hide show
  1. {jetpytools-2.0.2 → jetpytools-2.1.1}/PKG-INFO +1 -1
  2. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/_metadata.py +1 -1
  3. jetpytools-2.1.1/jetpytools/enums/base.py +93 -0
  4. jetpytools-2.0.2/jetpytools/enums/base.py +0 -71
  5. {jetpytools-2.0.2 → jetpytools-2.1.1}/.gitignore +0 -0
  6. {jetpytools-2.0.2 → jetpytools-2.1.1}/LICENSE +0 -0
  7. {jetpytools-2.0.2 → jetpytools-2.1.1}/README.md +0 -0
  8. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/__init__.py +0 -0
  9. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/enums/__init__.py +0 -0
  10. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/enums/other.py +0 -0
  11. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/exceptions/__init__.py +0 -0
  12. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/exceptions/base.py +0 -0
  13. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/exceptions/enum.py +0 -0
  14. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/exceptions/file.py +0 -0
  15. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/exceptions/generic.py +0 -0
  16. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/exceptions/module.py +0 -0
  17. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/functions/__init__.py +0 -0
  18. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/functions/funcs.py +0 -0
  19. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/functions/normalize.py +0 -0
  20. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/functions/other.py +0 -0
  21. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/py.typed +0 -0
  22. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/types/__init__.py +0 -0
  23. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/types/builtins.py +0 -0
  24. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/types/check.py +0 -0
  25. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/types/file.py +0 -0
  26. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/types/funcs.py +0 -0
  27. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/types/generic.py +0 -0
  28. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/types/supports.py +0 -0
  29. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/types/utils.py +0 -0
  30. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/utils/__init__.py +0 -0
  31. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/utils/file.py +0 -0
  32. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/utils/funcs.py +0 -0
  33. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/utils/math.py +0 -0
  34. {jetpytools-2.0.2 → jetpytools-2.1.1}/jetpytools/utils/ranges.py +0 -0
  35. {jetpytools-2.0.2 → jetpytools-2.1.1}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jetpytools
3
- Version: 2.0.2
3
+ Version: 2.1.1
4
4
  Summary: Collection of stuff that's useful in general python programming
5
5
  Project-URL: Source Code, https://github.com/Jaded-Encoding-Thaumaturgy/jetpytools
6
6
  Project-URL: Contact, https://discord.gg/XTpc6Fa9eB
@@ -1,6 +1,6 @@
1
1
  """Collection of stuff that's useful in general python programming"""
2
2
 
3
- __version__ = "2.0.2"
3
+ __version__ = "2.1.1"
4
4
 
5
5
  __author_name__, __author_email__ = "Jaded Encoding Thaumaturgy", "jaded.encoding.thaumaturgy@gmail.com"
6
6
  __maintainer_name__, __maintainer_email__ = __author_name__, __author_email__
@@ -0,0 +1,93 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import ABCMeta
4
+ from enum import Enum, EnumMeta, ReprEnum
5
+ from enum import property as enum_property
6
+ from typing import TYPE_CHECKING, Any, Self
7
+
8
+ from ..exceptions import CustomTypeError, NotFoundEnumValueError
9
+ from ..types import FuncExcept, copy_signature
10
+
11
+ __all__ = ["CustomEnum", "CustomIntEnum", "CustomStrEnum", "EnumABCMeta"]
12
+
13
+
14
+ class EnumABCMeta(EnumMeta, ABCMeta):
15
+ """Metaclass combining EnumMeta and ABCMeta to support abstract enumerations."""
16
+
17
+ @copy_signature(EnumMeta.__new__)
18
+ def __new__(mcls, *args: Any, **kwargs: Any) -> Any:
19
+ enum_cls = super().__new__(mcls, *args, **kwargs)
20
+
21
+ if len(enum_cls) == 0:
22
+ return enum_cls
23
+
24
+ if enum_cls.__abstractmethods__:
25
+ raise CustomTypeError(
26
+ "Can't instantiate abstract class {cls_name} without an implementation "
27
+ "for abstract method{plural} {methods}.",
28
+ enum_cls,
29
+ cls_name=enum_cls.__name__,
30
+ plural="s" if len(enum_cls.__abstractmethods__) > 1 else "",
31
+ methods=", ".join(f"'{n}'" for n in sorted(enum_cls.__abstractmethods__)),
32
+ )
33
+
34
+ return enum_cls
35
+
36
+
37
+ class CustomEnum(Enum):
38
+ """Base class for custom enums."""
39
+
40
+ @classmethod
41
+ def from_param(cls, value: Any, func_except: FuncExcept | None = None) -> Self:
42
+ """
43
+ Return the enum value from a parameter.
44
+
45
+ :param value: Value to instantiate the enum class.
46
+ :param func_except: Exception function.
47
+
48
+ :return: Enum value.
49
+
50
+ :raises NotFoundEnumValue: Variable not found in the given enum.
51
+ """
52
+ func_except = func_except or cls.from_param
53
+
54
+ try:
55
+ return cls(value)
56
+ except (ValueError, TypeError):
57
+ pass
58
+
59
+ if isinstance(func_except, tuple):
60
+ func_name, var_name = func_except
61
+ else:
62
+ func_name, var_name = func_except, repr(cls)
63
+
64
+ raise NotFoundEnumValueError(
65
+ 'The given value for "{var_name}" argument must be a valid {enum_name}, not "{value}"!\n'
66
+ "Valid values are: [{readable_enum}].",
67
+ func_name,
68
+ var_name=var_name,
69
+ enum_name=cls,
70
+ value=value,
71
+ readable_enum=(f"{name} ({value!r})" for name, value in cls.__members__.items()),
72
+ reason=value,
73
+ ) from None
74
+
75
+
76
+ class CustomIntEnum(int, CustomEnum, ReprEnum):
77
+ """Base class for custom int enums."""
78
+
79
+ if TYPE_CHECKING:
80
+ _value_: int
81
+
82
+ @enum_property
83
+ def value(self) -> int: ...
84
+
85
+
86
+ class CustomStrEnum(str, CustomEnum, ReprEnum):
87
+ """Base class for custom str enums."""
88
+
89
+ if TYPE_CHECKING:
90
+ _value_: str
91
+
92
+ @enum_property
93
+ def value(self) -> str: ...
@@ -1,71 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from enum import Enum
4
- from typing import Any, Self
5
-
6
- from ..exceptions import CustomValueError, NotFoundEnumValue
7
- from ..types import FuncExcept
8
-
9
- __all__ = ["CustomEnum", "CustomIntEnum", "CustomStrEnum"]
10
-
11
-
12
- class CustomEnum(Enum):
13
- """Base class for custom enums."""
14
-
15
- @classmethod
16
- def _missing_(cls, value: Any) -> Self | None:
17
- return cls.from_param(value)
18
-
19
- @classmethod
20
- def from_param(cls, value: Any, func_except: FuncExcept | None = None) -> Self | None:
21
- """
22
- Return the enum value from a parameter.
23
-
24
- :param value: Value to instantiate the enum class.
25
- :param func_except: Exception function.
26
-
27
- :return: Enum value.
28
-
29
- :raises NotFoundEnumValue: Variable not found in the given enum.
30
- """
31
-
32
- if value is None:
33
- return None
34
-
35
- if func_except is None:
36
- func_except = cls.from_param
37
-
38
- if isinstance(value, cls):
39
- return value
40
-
41
- if value is cls:
42
- raise CustomValueError("You must select a member, not pass the enum!", func_except)
43
-
44
- try:
45
- return cls(value)
46
- except Exception:
47
- pass
48
-
49
- if isinstance(func_except, tuple):
50
- func_name, var_name = func_except
51
- else:
52
- func_name, var_name = func_except, str(cls)
53
-
54
- raise NotFoundEnumValue(
55
- 'The given value for "{var_name}" argument must be a valid {enum_name}, not "{value}"!\n'
56
- "Valid values are: [{readable_enum}].",
57
- func_name,
58
- var_name=var_name,
59
- enum_name=cls,
60
- value=value,
61
- readable_enum=iter([f"{x.name} ({x.value})" for x in cls]),
62
- reason=value,
63
- )
64
-
65
-
66
- class CustomIntEnum(int, CustomEnum):
67
- """Base class for custom int enums."""
68
-
69
-
70
- class CustomStrEnum(str, CustomEnum):
71
- """Base class for custom str enums."""
File without changes
File without changes
File without changes
File without changes