u-toolkit 0.1.18__tar.gz → 0.1.19__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.
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/PKG-INFO +1 -1
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/pyproject.toml +1 -1
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/enum.py +6 -6
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/function.py +1 -1
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/helpers.py +2 -0
- u_toolkit-0.1.19/tests/test_enum.py +130 -0
- u_toolkit-0.1.19/tests/test_function.py +26 -0
- u_toolkit-0.1.19/tests/test_helpers.py +13 -0
- u_toolkit-0.1.18/src/u_toolkit/object.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/.github/workflows/publish.yml +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/.gitignore +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/README.md +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/__init__.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/alias_generators.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/datetime.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/decorators.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/fastapi/__init__.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/fastapi/cbv.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/fastapi/config.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/fastapi/exception.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/fastapi/helpers.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/fastapi/lifespan.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/fastapi/pagination.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/fastapi/responses.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/logger.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/merge.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/path.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/pydantic/__init__.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/pydantic/fields.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/pydantic/models.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/pydantic/type_vars.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/signature.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/sqlalchemy/__init__.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/sqlalchemy/fields.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/sqlalchemy/function.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/sqlalchemy/orm/__init__.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/sqlalchemy/orm/fields.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/sqlalchemy/orm/models.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/sqlalchemy/table_info.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/src/u_toolkit/sqlalchemy/type_vars.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/tests/__init__.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/tests/fastapi/__init__.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/tests/fastapi/test_cbv.py +0 -0
- {u_toolkit-0.1.18 → u_toolkit-0.1.19}/uv.lock +0 -0
@@ -15,29 +15,29 @@ __all__ = [
|
|
15
15
|
|
16
16
|
class NameEnum(StrEnum):
|
17
17
|
@staticmethod
|
18
|
-
def _generate_next_value_(name, *_, **__) -> str:
|
18
|
+
def _generate_next_value_(name: str, *_, **__) -> str:
|
19
19
|
return name
|
20
20
|
|
21
21
|
|
22
22
|
class PascalEnum(StrEnum):
|
23
23
|
@staticmethod
|
24
|
-
def _generate_next_value_(name, *_, **__) -> str:
|
24
|
+
def _generate_next_value_(name: str, *_, **__) -> str:
|
25
25
|
return to_pascal(name)
|
26
26
|
|
27
27
|
|
28
28
|
class CamelEnum(StrEnum):
|
29
29
|
@staticmethod
|
30
|
-
def _generate_next_value_(name, *_, **__) -> str:
|
30
|
+
def _generate_next_value_(name: str, *_, **__) -> str:
|
31
31
|
return to_camel(name)
|
32
32
|
|
33
33
|
|
34
34
|
class SnakeEnum(StrEnum):
|
35
35
|
@staticmethod
|
36
|
-
def _generate_next_value_(name, *_, **__) -> str:
|
36
|
+
def _generate_next_value_(name: str, *_, **__) -> str:
|
37
37
|
return to_snake(name)
|
38
38
|
|
39
39
|
|
40
40
|
class TitleEnum(StrEnum):
|
41
41
|
@staticmethod
|
42
|
-
def _generate_next_value_(name, *_, **__) -> str:
|
43
|
-
return name.replace("_", " ").title()
|
42
|
+
def _generate_next_value_(name: str, *_, **__) -> str:
|
43
|
+
return name.replace("_", " ").strip().title()
|
@@ -0,0 +1,130 @@
|
|
1
|
+
from u_toolkit import enum
|
2
|
+
|
3
|
+
|
4
|
+
def test_name_enum():
|
5
|
+
class _Enum(enum.NameEnum):
|
6
|
+
A = enum.auto()
|
7
|
+
Ab = enum.auto()
|
8
|
+
AbC = enum.auto()
|
9
|
+
ABCD = enum.auto()
|
10
|
+
ABCD_E = enum.auto()
|
11
|
+
aa = enum.auto()
|
12
|
+
a_a = enum.auto()
|
13
|
+
a2 = enum.auto()
|
14
|
+
Bb = enum.auto()
|
15
|
+
c_ = enum.auto()
|
16
|
+
|
17
|
+
assert _Enum.A == "A"
|
18
|
+
assert _Enum.Ab == "Ab"
|
19
|
+
assert _Enum.AbC == "AbC"
|
20
|
+
assert _Enum.ABCD == "ABCD"
|
21
|
+
assert _Enum.ABCD_E == "ABCD_E"
|
22
|
+
assert _Enum.aa == "aa"
|
23
|
+
assert _Enum.a_a == "a_a"
|
24
|
+
assert _Enum.a2 == "a2"
|
25
|
+
assert _Enum.Bb == "Bb"
|
26
|
+
assert _Enum.c_ == "c_"
|
27
|
+
|
28
|
+
|
29
|
+
def test_pascal_enum():
|
30
|
+
class _Enum(enum.PascalEnum):
|
31
|
+
A = enum.auto()
|
32
|
+
Ab = enum.auto()
|
33
|
+
AbC = enum.auto()
|
34
|
+
ABCD = enum.auto()
|
35
|
+
ABCD_E = enum.auto()
|
36
|
+
aa = enum.auto()
|
37
|
+
a_a = enum.auto()
|
38
|
+
a2 = enum.auto()
|
39
|
+
Bb = enum.auto()
|
40
|
+
c_ = enum.auto()
|
41
|
+
|
42
|
+
assert _Enum.A == "A"
|
43
|
+
assert _Enum.Ab == "Ab"
|
44
|
+
assert _Enum.AbC == "Abc"
|
45
|
+
assert _Enum.ABCD == "ABCD"
|
46
|
+
assert _Enum.ABCD_E == "ABCD_E"
|
47
|
+
assert _Enum.aa == "Aa"
|
48
|
+
assert _Enum.a_a == "AA"
|
49
|
+
assert _Enum.a2 == "A2"
|
50
|
+
assert _Enum.Bb == "Bb"
|
51
|
+
assert _Enum.c_ == "C_"
|
52
|
+
|
53
|
+
|
54
|
+
def test_camel_enum():
|
55
|
+
class _Enum(enum.CamelEnum):
|
56
|
+
A = enum.auto()
|
57
|
+
Ab = enum.auto()
|
58
|
+
AbC = enum.auto()
|
59
|
+
ABCD = enum.auto()
|
60
|
+
ABCD_E = enum.auto()
|
61
|
+
aa = enum.auto()
|
62
|
+
a_a = enum.auto()
|
63
|
+
a2 = enum.auto()
|
64
|
+
Bb = enum.auto()
|
65
|
+
c_ = enum.auto()
|
66
|
+
|
67
|
+
assert _Enum.A == "A"
|
68
|
+
assert _Enum.Ab == "ab"
|
69
|
+
assert _Enum.AbC == "abc"
|
70
|
+
assert _Enum.ABCD == "ABCD"
|
71
|
+
assert _Enum.ABCD_E == "ABCD_E"
|
72
|
+
assert _Enum.aa == "aa"
|
73
|
+
assert _Enum.a_a == "aA"
|
74
|
+
assert _Enum.a2 == "a2"
|
75
|
+
assert _Enum.Bb == "bb"
|
76
|
+
assert _Enum.c_ == "c_"
|
77
|
+
|
78
|
+
|
79
|
+
def test_snake_enum():
|
80
|
+
class _Enum(enum.SnakeEnum):
|
81
|
+
A = enum.auto()
|
82
|
+
Ab = enum.auto()
|
83
|
+
AbC = enum.auto()
|
84
|
+
ABCD = enum.auto()
|
85
|
+
ABCD_E = enum.auto()
|
86
|
+
aa = enum.auto()
|
87
|
+
a_a = enum.auto()
|
88
|
+
a2 = enum.auto()
|
89
|
+
aa3 = enum.auto()
|
90
|
+
Bb = enum.auto()
|
91
|
+
c_ = enum.auto()
|
92
|
+
|
93
|
+
assert _Enum.A == "A"
|
94
|
+
assert _Enum.Ab == "ab"
|
95
|
+
assert _Enum.AbC == "ab_c"
|
96
|
+
assert _Enum.ABCD == "ABCD"
|
97
|
+
assert _Enum.ABCD_E == "ABCD_E"
|
98
|
+
assert _Enum.aa == "aa"
|
99
|
+
assert _Enum.a_a == "a_a"
|
100
|
+
assert _Enum.a2 == "a_2"
|
101
|
+
assert _Enum.aa3 == "aa_3"
|
102
|
+
assert _Enum.Bb == "bb"
|
103
|
+
assert _Enum.c_ == "c_"
|
104
|
+
|
105
|
+
|
106
|
+
def test_title_enum():
|
107
|
+
class _Enum(enum.TitleEnum):
|
108
|
+
A = enum.auto()
|
109
|
+
Ab = enum.auto()
|
110
|
+
AbC = enum.auto()
|
111
|
+
ABCD = enum.auto()
|
112
|
+
ABCD_E = enum.auto()
|
113
|
+
aa = enum.auto()
|
114
|
+
a_a = enum.auto()
|
115
|
+
a2 = enum.auto()
|
116
|
+
aa3 = enum.auto()
|
117
|
+
Bb = enum.auto()
|
118
|
+
c_ = enum.auto()
|
119
|
+
|
120
|
+
assert _Enum.A == "A"
|
121
|
+
assert _Enum.Ab == "Ab"
|
122
|
+
assert _Enum.AbC == "Abc"
|
123
|
+
assert _Enum.ABCD == "Abcd"
|
124
|
+
assert _Enum.ABCD_E == "Abcd E"
|
125
|
+
assert _Enum.aa == "Aa"
|
126
|
+
assert _Enum.a_a == "A A"
|
127
|
+
assert _Enum.a2 == "A2"
|
128
|
+
assert _Enum.aa3 == "Aa3"
|
129
|
+
assert _Enum.Bb == "Bb"
|
130
|
+
assert _Enum.c_ == "C"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from u_toolkit import function
|
2
|
+
|
3
|
+
|
4
|
+
def test_get_name():
|
5
|
+
def fn(): ...
|
6
|
+
|
7
|
+
assert function.get_name(fn) == "fn"
|
8
|
+
assert function.get_name(lambda: 1) == "<lambda>"
|
9
|
+
|
10
|
+
|
11
|
+
def test_add_document():
|
12
|
+
def fn(): ...
|
13
|
+
|
14
|
+
assert fn.__doc__ is None
|
15
|
+
|
16
|
+
function.add_document(fn, "lalala")
|
17
|
+
|
18
|
+
assert fn.__doc__ == "lalala"
|
19
|
+
|
20
|
+
def fn2():
|
21
|
+
"""2333"""
|
22
|
+
|
23
|
+
assert fn2.__doc__ == "2333"
|
24
|
+
|
25
|
+
function.add_document(fn2, "lalala")
|
26
|
+
assert fn2.__doc__ == "2333\n\nlalala"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
from typing import Annotated
|
2
|
+
|
3
|
+
from u_toolkit import helpers
|
4
|
+
|
5
|
+
|
6
|
+
def test_is_annotated():
|
7
|
+
assert helpers.is_annotated(type) is False
|
8
|
+
assert helpers.is_annotated(int) is False
|
9
|
+
assert helpers.is_annotated(object()) is False
|
10
|
+
assert helpers.is_annotated(Annotated) is False
|
11
|
+
assert helpers.is_annotated(Annotated[int, 1]) is True
|
12
|
+
assert helpers.is_annotated(Annotated[int, type]) is True
|
13
|
+
assert helpers.is_annotated(Annotated[int, object()]) is True
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|