wiederverwendbar 0.8.5__py3-none-any.whl → 0.9.0__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.
- wiederverwendbar/__init__.py +8 -6
- wiederverwendbar/branding/__init__.py +1 -0
- wiederverwendbar/branding/settings.py +85 -0
- wiederverwendbar/console/__init__.py +3 -0
- wiederverwendbar/console/console.py +199 -0
- wiederverwendbar/console/out_files.py +19 -0
- wiederverwendbar/console/settings.py +9 -0
- wiederverwendbar/default.py +4 -1
- wiederverwendbar/fastapi/__init__.py +3 -0
- wiederverwendbar/fastapi/app.py +385 -0
- wiederverwendbar/fastapi/dependencies.py +11 -0
- wiederverwendbar/fastapi/settings.py +39 -0
- wiederverwendbar/functions/is_coroutine_function.py +19 -0
- wiederverwendbar/inspect.py +26 -0
- wiederverwendbar/logger/__init__.py +0 -1
- wiederverwendbar/logger/handlers/rich_console_handler.py +15 -6
- wiederverwendbar/logger/handlers/stream_console_handler.py +3 -16
- wiederverwendbar/logger/log_levels.py +4 -0
- wiederverwendbar/logger/settings.py +15 -20
- wiederverwendbar/pydantic/file_config.py +20 -4
- wiederverwendbar/rich/__init__.py +2 -0
- wiederverwendbar/rich/console.py +215 -0
- wiederverwendbar/rich/settings.py +26 -0
- wiederverwendbar/sqlalchemy/base.py +4 -4
- wiederverwendbar/task_manger/task.py +1 -4
- wiederverwendbar/task_manger/task_manager.py +14 -19
- wiederverwendbar/typer/__init__.py +3 -1
- wiederverwendbar/typer/app.py +172 -0
- wiederverwendbar/typer/settings.py +14 -0
- wiederverwendbar/warnings.py +6 -0
- {wiederverwendbar-0.8.5.dist-info → wiederverwendbar-0.9.0.dist-info}/METADATA +9 -6
- {wiederverwendbar-0.8.5.dist-info → wiederverwendbar-0.9.0.dist-info}/RECORD +34 -49
- wiederverwendbar/examples/__init__.py +0 -0
- wiederverwendbar/examples/before_after_wrap.py +0 -74
- wiederverwendbar/examples/colors.py +0 -16
- wiederverwendbar/examples/extended_thread.py +0 -28
- wiederverwendbar/examples/file_config.py +0 -11
- wiederverwendbar/examples/indexable_model.py +0 -19
- wiederverwendbar/examples/logger.py +0 -31
- wiederverwendbar/examples/logger_context/__init__.py +0 -0
- wiederverwendbar/examples/logger_context/example.py +0 -58
- wiederverwendbar/examples/logger_context/example_module.py +0 -13
- wiederverwendbar/examples/mongoengine/__init__.py +0 -0
- wiederverwendbar/examples/mongoengine/automatic_reference.py +0 -25
- wiederverwendbar/examples/mongoengine/db.py +0 -7
- wiederverwendbar/examples/mongoengine/log_streamer.py +0 -9
- wiederverwendbar/examples/mongoengine/logger.py +0 -25
- wiederverwendbar/examples/post_init.py +0 -29
- wiederverwendbar/examples/route.py +0 -12
- wiederverwendbar/examples/singletons.py +0 -59
- wiederverwendbar/examples/sqlalchemy/__init__.py +0 -0
- wiederverwendbar/examples/sqlalchemy/db.py +0 -89
- wiederverwendbar/examples/starlette_admin/__init__.py +0 -0
- wiederverwendbar/examples/starlette_admin/action_log.py +0 -126
- wiederverwendbar/examples/starlette_admin/action_log_file_download.py +0 -99
- wiederverwendbar/examples/starlette_admin/action_log_form.py +0 -149
- wiederverwendbar/examples/starlette_admin/action_log_thread.py +0 -192
- wiederverwendbar/examples/starlette_admin/automatic_reference_admin.py +0 -47
- wiederverwendbar/examples/starlette_admin/generic_embedded_document_field.py +0 -74
- wiederverwendbar/examples/starlette_admin/multi_path_admin.py +0 -18
- wiederverwendbar/examples/task_manager.py +0 -55
- wiederverwendbar/examples/test_file.py +0 -14
- wiederverwendbar/examples/typer_resolve_defaults.py +0 -15
- wiederverwendbar/examples/uvicorn_server.py +0 -32
- wiederverwendbar/logger/terminal_out_files.py +0 -10
- {wiederverwendbar-0.8.5.dist-info → wiederverwendbar-0.9.0.dist-info}/WHEEL +0 -0
- {wiederverwendbar-0.8.5.dist-info → wiederverwendbar-0.9.0.dist-info}/entry_points.txt +0 -0
@@ -1,11 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: wiederverwendbar
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.9.0
|
4
4
|
Summary: A collection of scripts, classes and tools they are \"wiederverwendbar\".
|
5
5
|
Author-Email: Julius Koenig <info@bastelquartier.de>
|
6
6
|
License: GPL-3.0
|
7
7
|
Requires-Python: >=3.9
|
8
|
-
Requires-Dist: pydantic>=2.11.
|
8
|
+
Requires-Dist: pydantic>=2.11.7
|
9
9
|
Requires-Dist: pydantic-settings>=2.9.1
|
10
10
|
Requires-Dist: devtools>=0.12.2
|
11
11
|
Provides-Extra: full
|
@@ -13,28 +13,31 @@ Requires-Dist: rich>=14.0.0; extra == "full"
|
|
13
13
|
Requires-Dist: typer>=0.16.0; extra == "full"
|
14
14
|
Requires-Dist: pythonping>=1.1.4; extra == "full"
|
15
15
|
Requires-Dist: mongoengine>=0.29.1; extra == "full"
|
16
|
-
Requires-Dist: nicegui>=2.
|
16
|
+
Requires-Dist: nicegui>=2.20.0; extra == "full"
|
17
17
|
Requires-Dist: uvicorn>=0.34.3; extra == "full"
|
18
|
-
Requires-Dist: fastapi>=0.115.
|
18
|
+
Requires-Dist: fastapi>=0.115.13; extra == "full"
|
19
19
|
Requires-Dist: starlette-admin[i18n]>=0.15.1; extra == "full"
|
20
20
|
Requires-Dist: pillow>=11.2.1; extra == "full"
|
21
21
|
Requires-Dist: blinker>=1.9.0; extra == "full"
|
22
22
|
Requires-Dist: kombu>=5.5.4; extra == "full"
|
23
23
|
Requires-Dist: nest-asyncio>=1.6.0; extra == "full"
|
24
24
|
Requires-Dist: sqlalchemy>=2.0.41; extra == "full"
|
25
|
+
Requires-Dist: art>=6.5; extra == "full"
|
25
26
|
Provides-Extra: rich
|
26
27
|
Requires-Dist: rich>=14.0.0; extra == "rich"
|
27
28
|
Provides-Extra: typer
|
28
29
|
Requires-Dist: typer>=0.16.0; extra == "typer"
|
30
|
+
Requires-Dist: art>=6.5; extra == "typer"
|
31
|
+
Requires-Dist: rich>=14.0.0; extra == "typer"
|
29
32
|
Provides-Extra: mongoengine
|
30
33
|
Requires-Dist: mongoengine>=0.29.1; extra == "mongoengine"
|
31
34
|
Requires-Dist: blinker>=1.9.0; extra == "mongoengine"
|
32
35
|
Provides-Extra: uvicorn
|
33
36
|
Requires-Dist: uvicorn>=0.34.3; extra == "uvicorn"
|
34
37
|
Provides-Extra: fastapi
|
35
|
-
Requires-Dist: fastapi>=0.115.
|
38
|
+
Requires-Dist: fastapi>=0.115.13; extra == "fastapi"
|
36
39
|
Provides-Extra: nicegui
|
37
|
-
Requires-Dist: nicegui>=2.
|
40
|
+
Requires-Dist: nicegui>=2.20.0; extra == "nicegui"
|
38
41
|
Provides-Extra: starlette-admin
|
39
42
|
Requires-Dist: starlette-admin[i18n]>=0.15.1; extra == "starlette-admin"
|
40
43
|
Requires-Dist: pillow>=11.2.1; extra == "starlette-admin"
|
@@ -1,41 +1,19 @@
|
|
1
|
-
wiederverwendbar-0.
|
2
|
-
wiederverwendbar-0.
|
3
|
-
wiederverwendbar-0.
|
4
|
-
wiederverwendbar/__init__.py,sha256=
|
1
|
+
wiederverwendbar-0.9.0.dist-info/METADATA,sha256=mn3kjQ5KNme6V9DK74J_SccF9_SXhz0w9Pl8SHlz1UM,2141
|
2
|
+
wiederverwendbar-0.9.0.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
|
3
|
+
wiederverwendbar-0.9.0.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
|
4
|
+
wiederverwendbar/__init__.py,sha256=UIg7Egu5ppyFjSU6NnfKZ-i-bWwXo5Lgzq_y0ot7hno,376
|
5
5
|
wiederverwendbar/before_after_wrap.py,sha256=8rjyRrDpwbzrsKkY7vbIgtitgLjlF8Lwx8YNvcJWwgY,10425
|
6
|
-
wiederverwendbar/
|
7
|
-
wiederverwendbar/
|
8
|
-
wiederverwendbar/
|
9
|
-
wiederverwendbar/
|
10
|
-
wiederverwendbar/
|
11
|
-
wiederverwendbar/
|
12
|
-
wiederverwendbar/
|
13
|
-
wiederverwendbar/
|
14
|
-
wiederverwendbar/
|
15
|
-
wiederverwendbar/
|
16
|
-
wiederverwendbar/
|
17
|
-
wiederverwendbar/examples/mongoengine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
-
wiederverwendbar/examples/mongoengine/automatic_reference.py,sha256=pgtQ1j8gJbrOCXtKj2lnZvGfbIpffeyKHJkxP0qFFv8,1149
|
19
|
-
wiederverwendbar/examples/mongoengine/db.py,sha256=0DfB6UFKXedcbbf2Ft7WsjV18y4lpUfVuZvXn3kngAU,306
|
20
|
-
wiederverwendbar/examples/mongoengine/log_streamer.py,sha256=aO7KiGO0fx4Ix4SPAOU2ltjZNgNcx1EOx8IeAwgRR34,304
|
21
|
-
wiederverwendbar/examples/mongoengine/logger.py,sha256=hJvwulY_Qivzc8up332vVxRw73iDJJSpbr0_JrYet6g,640
|
22
|
-
wiederverwendbar/examples/post_init.py,sha256=hrj3idlYknWEzK0ijy6jiRkryjLYjLJiGkFForGk6q4,774
|
23
|
-
wiederverwendbar/examples/route.py,sha256=hbV3lLcqDtusBDjv11Aw5aBbBFAakFTkoMXg1hQAfeY,423
|
24
|
-
wiederverwendbar/examples/singletons.py,sha256=O5sDsEpg_hzLIQYEIHKL-HMyRHowL2CcSkUryy-vI-k,1101
|
25
|
-
wiederverwendbar/examples/sqlalchemy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
-
wiederverwendbar/examples/sqlalchemy/db.py,sha256=OkaxZ2594zcu00aHEdSgJTTvfuZnwaKb00yXt_1R8YU,3061
|
27
|
-
wiederverwendbar/examples/starlette_admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
|
-
wiederverwendbar/examples/starlette_admin/action_log.py,sha256=IbeLsB_Kq2nQFBCoKScJzhotLElFfGD22h5SXQoxQ9Q,4439
|
29
|
-
wiederverwendbar/examples/starlette_admin/action_log_file_download.py,sha256=Jv7fCxqMaPpO-4i1ra09ya9KxlpJgsjdplNLD99OY0M,3249
|
30
|
-
wiederverwendbar/examples/starlette_admin/action_log_form.py,sha256=C-xO4vLag62_JDFuEtZj7K6Vvt3dMxNS8Pl5NVwY2ZU,5599
|
31
|
-
wiederverwendbar/examples/starlette_admin/action_log_thread.py,sha256=ePetz-Dt3qgPjhHTNNn6MqD8Y275LJrX8A7uYhEAxyM,7277
|
32
|
-
wiederverwendbar/examples/starlette_admin/automatic_reference_admin.py,sha256=ZA_5LtXmpGb_q4kiyIJTwqNPqY-lQldwPF0hvR072A4,1200
|
33
|
-
wiederverwendbar/examples/starlette_admin/generic_embedded_document_field.py,sha256=TH1em2_JbvjXQdCyn9ln_Gdsl5GAadMTctoDgpT-Xr8,2058
|
34
|
-
wiederverwendbar/examples/starlette_admin/multi_path_admin.py,sha256=2Qkpyg1Yi0EGiGWfI_MFsVoytP0y77LHgp3u_jjaVPw,707
|
35
|
-
wiederverwendbar/examples/task_manager.py,sha256=ThNPMpt5zuq-9JsX2lS0jKQtBYCNWOEUpo4NCFBZIx8,1402
|
36
|
-
wiederverwendbar/examples/test_file.py,sha256=ieHkacZemgWeDKfzYzwVbRcR9iqCqpICzgCIAscQQPY,379
|
37
|
-
wiederverwendbar/examples/typer_resolve_defaults.py,sha256=M1FdXEkvP9_m914LNknbEcDHdg0ehTSOHozGDap9UUA,336
|
38
|
-
wiederverwendbar/examples/uvicorn_server.py,sha256=0z1rAePpaRcJL3f90_H9I8m7YMtVokpdvS--rVy_GFE,827
|
6
|
+
wiederverwendbar/branding/__init__.py,sha256=IWUQkLQwp22HyTs6Zh28mg8YKkv47bowYDkXl_kOtpI,66
|
7
|
+
wiederverwendbar/branding/settings.py,sha256=myJqzTzrC6iWNq5b-dXNwHl-9z-0ZWlf-tRT2CeH0yQ,4486
|
8
|
+
wiederverwendbar/console/__init__.py,sha256=hhs9LhQrAvnpMSomnHj5GhYblHVptK3o2CVXypP08Rw,177
|
9
|
+
wiederverwendbar/console/console.py,sha256=0BKgcALRyCZelqJaDKJfLbmHI6YY7DTUXJJ4brGSVuw,8537
|
10
|
+
wiederverwendbar/console/out_files.py,sha256=bC36OdEZteH-lMoPW9JbDPdsrYLABffLq-9wVscamZ4,411
|
11
|
+
wiederverwendbar/console/settings.py,sha256=nvsK6vRYu5-1ojYJSN1NImRTNWfZR2RE41sOIX-Loo8,520
|
12
|
+
wiederverwendbar/default.py,sha256=AKjlNXYbQUiLOPCcje4XLpeJPdeRbJ4YGDwW9QQ0E54,93
|
13
|
+
wiederverwendbar/fastapi/__init__.py,sha256=wW_91YoGhZDCoYuct44sFgOYLeKsuKqqfOt1IFhXuyY,175
|
14
|
+
wiederverwendbar/fastapi/app.py,sha256=sPgn1oVIr8XV4WTusHCyD__h3u8ICRRfITQJD8IpZvo,18630
|
15
|
+
wiederverwendbar/fastapi/dependencies.py,sha256=REVIscmYu4pTD9DsoCnMRhmTHGWG9J9d-xBSKyLL3t4,323
|
16
|
+
wiederverwendbar/fastapi/settings.py,sha256=bafvekI9cJgBPi8tG9DL2MEcsfT86xuzMyyhvgE19zk,3596
|
39
17
|
wiederverwendbar/functions/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
40
18
|
wiederverwendbar/functions/admin.py,sha256=5O0CV0Nwg6Blv9_RIPDRAoal1SB3mOa1jne9IAVlTdM,1416
|
41
19
|
wiederverwendbar/functions/animal_name_generator.py,sha256=74-blGU3oxHpWB7pRtD5GerFaaluiTRl_gUe2uu3qW0,3707
|
@@ -47,24 +25,25 @@ wiederverwendbar/functions/download_file.py,sha256=vNpaNpQ_YL9-D81Leey_RYv_OcPsU
|
|
47
25
|
wiederverwendbar/functions/eval.py,sha256=zINxAfZ2mlNC4m36S2CQT2H4oTHyfBb-MJdZdgMfS0k,4537
|
48
26
|
wiederverwendbar/functions/find_class_method.py,sha256=QAE66bf75gkRrwhiD5spnNG-cX1trdQh6pQhNir79bc,470
|
49
27
|
wiederverwendbar/functions/get_pretty_str.py,sha256=pM4itXdiozjD3PQblAxhhkOLO7TY3pDYnmiqlZVJnWw,205
|
28
|
+
wiederverwendbar/functions/is_coroutine_function.py,sha256=a0ksY9Qoy4xVFVJLHH2ZtGTQNPMme90xC0z0BJoacvg,505
|
50
29
|
wiederverwendbar/functions/run_command.py,sha256=7j9cE0mqNVmu0MOojw7plEMttYZqYMsUgc8kOYS2v5I,1902
|
51
30
|
wiederverwendbar/functions/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
31
|
wiederverwendbar/functions/security/hashed_password.py,sha256=8qNOzvf4g7Z7YHDfdq6YSq6ZpYkseDogbcU4sxi3GGQ,3470
|
53
32
|
wiederverwendbar/functions/test_file.py,sha256=63mzXhLXibYTR0CRbSQ3nzDD0qOvVRR6yC-xIIkdyf4,839
|
54
33
|
wiederverwendbar/functions/wait_ping.py,sha256=07ZT1yU1JWFDdSzEC7bzGRYR6iL65BKZfDtf8EIXWjQ,1193
|
55
|
-
wiederverwendbar/
|
34
|
+
wiederverwendbar/inspect.py,sha256=ZuOiQY07sVtTuZmU32F-WspUp3Fvd8DHomAFquMHY2Y,820
|
35
|
+
wiederverwendbar/logger/__init__.py,sha256=PpHGf3PAhaXcGYG18JisWm2EuqJX-askuk9WGlgdceQ,677
|
56
36
|
wiederverwendbar/logger/context.py,sha256=k8rVgrd0FYnoaaPZ4lIHRXRh8OjPElOtv-HRc3moDk8,13408
|
57
37
|
wiederverwendbar/logger/file_modes.py,sha256=9QqVkkF9w8NX44tkn2KeZafLxbHRVWklxClB6iuSuTs,108
|
58
38
|
wiederverwendbar/logger/handlers/__init__.py,sha256=68JdpQQnxzOudLzuCfiQjibSZ8QeRlnVd-YzfGnq9w4,337
|
59
|
-
wiederverwendbar/logger/handlers/rich_console_handler.py,sha256=
|
60
|
-
wiederverwendbar/logger/handlers/stream_console_handler.py,sha256
|
39
|
+
wiederverwendbar/logger/handlers/rich_console_handler.py,sha256=0L97lkWpln9ZRH5ltdfhtjIZgpyesGh5vXga_DMNTXM,780
|
40
|
+
wiederverwendbar/logger/handlers/stream_console_handler.py,sha256=uaUFGKn_hyZRHfKWka6p7JjVUahXcI0pf7dy322PbV0,265
|
61
41
|
wiederverwendbar/logger/handlers/tar_rotating_file_handler.py,sha256=Ci2f4Mvy9f1DacNJiA_P0loWwI4y4oEW9fP0D1iMd8w,2500
|
62
42
|
wiederverwendbar/logger/helper.py,sha256=bI3Qi6aCugmmRkuB5dJGSkKxpr-0bX8TaZtwdk6IS4c,1292
|
63
|
-
wiederverwendbar/logger/log_levels.py,sha256=
|
43
|
+
wiederverwendbar/logger/log_levels.py,sha256=UMySiDUyOmM3mjJwtT3dXs2Gs5oTIDhT-bOsJh3ZS9Y,320
|
64
44
|
wiederverwendbar/logger/logger.py,sha256=yb-0aD3_mYHdwC-xnbg3oPegM_q4H0S-q14mlVedfVA,2860
|
65
|
-
wiederverwendbar/logger/settings.py,sha256=
|
45
|
+
wiederverwendbar/logger/settings.py,sha256=ALuTyFIyCaA3E3ifD9F-JUavkEZ5udQrUQN0sOgSb1Y,5739
|
66
46
|
wiederverwendbar/logger/singleton.py,sha256=3FWKLSIF7aGOUR2TlBHfO2BHFwYvzGa5hrtsD6Im2GE,3260
|
67
|
-
wiederverwendbar/logger/terminal_out_files.py,sha256=2Ima9h5ue7-8uFtrY9n3W6hQUHy6l8HFD_-ohFj9I3A,146
|
68
47
|
wiederverwendbar/mongoengine/__init__.py,sha256=f-yjDKWf3VoghwCf7kqZSRWDqRlHZ5Ca6iz8_m6bmDQ,1277
|
69
48
|
wiederverwendbar/mongoengine/automatic_reference.py,sha256=pbgqYL9zN6B_dO0mhA1YTWM8MCqoB2n7urdvt82V3XA,15534
|
70
49
|
wiederverwendbar/mongoengine/backup.py,sha256=HH-JEYMElkeESFvucKwxyXCuupEGXoXkYiLaWr_HWGE,4635
|
@@ -88,16 +67,19 @@ wiederverwendbar/mongoengine/settings.py,sha256=Kgc2VTWvXa5CcZdxOsVBx9HdcaWeOLG3
|
|
88
67
|
wiederverwendbar/mongoengine/singleton.py,sha256=xeh0OQM8q79ffn9Yz8tyNcjzZg68TD6xpfIZRT_M0mU,183
|
89
68
|
wiederverwendbar/post_init.py,sha256=7w1iQbOlRpydDJT3Ti0v8_OmjwjVTIQjOZUVPEIvrpw,474
|
90
69
|
wiederverwendbar/pydantic/__init__.py,sha256=lQRcyAOXBZfq-jTd-n7zpzC9HxsbiLgMvU8bKuFbSW8,335
|
91
|
-
wiederverwendbar/pydantic/file_config.py,sha256=
|
70
|
+
wiederverwendbar/pydantic/file_config.py,sha256=qX5wVS7TvNGjyzo9wRzBK92c73ux8X75pIoMUyPoRgA,2794
|
92
71
|
wiederverwendbar/pydantic/indexable_model.py,sha256=o9Ej9Z0oVWxYOJQdqJsik0C3LWi0dnLjoDB00VMs24g,775
|
93
72
|
wiederverwendbar/pydantic/printable_settings.py,sha256=CSN8n1NUnviOMc6wgnvIdcQlbti71oCTAq8fbFLjP_4,879
|
94
73
|
wiederverwendbar/pydantic/security/__init__.py,sha256=l-DRf-vueyP-M4pePTzQgCYZcBMb_0Fg5flwN-0dBWc,83
|
95
74
|
wiederverwendbar/pydantic/security/hashed_password.py,sha256=h3gk048_wcXu4euGy24Mpos01Fs5E78LXcLLOHD3qxg,798
|
96
75
|
wiederverwendbar/pydantic/singleton.py,sha256=4YMBcKiTik2KmuN97CUCmy_ldhfyeDzrsUMsdB_23Rs,270
|
76
|
+
wiederverwendbar/rich/__init__.py,sha256=CR1RnF7UotyaZ0b44aIEOMeiScjLy92FsIX3icLq6LU,121
|
77
|
+
wiederverwendbar/rich/console.py,sha256=EWaSx9IU1BLAEXAiCPvhqQnF8TxshW3kfzJhEx5IgG8,9451
|
78
|
+
wiederverwendbar/rich/settings.py,sha256=eqIfHtxF5znJj1vUepqyyR94Xw_8ebtBNW_xvDHWGT8,2523
|
97
79
|
wiederverwendbar/route.py,sha256=moYlZ5IvV_uDroSggxe80-sR3_nlNsl9Bp69CcCfK8Y,12061
|
98
80
|
wiederverwendbar/singleton.py,sha256=6QqeQpzx4UhBZnvto5_yUs7hpmzt_-dyE169RuwsTa8,6866
|
99
81
|
wiederverwendbar/sqlalchemy/__init__.py,sha256=gkt99fc9wIxaSjrl1xNhmPLrlJNZhrY-sJ5yIezREGM,888
|
100
|
-
wiederverwendbar/sqlalchemy/base.py,sha256=
|
82
|
+
wiederverwendbar/sqlalchemy/base.py,sha256=wNL0vnDuCwM7bLm8imLGAtGxz5uWWsg4d9n64HZZKT4,15057
|
101
83
|
wiederverwendbar/sqlalchemy/db.py,sha256=u3nHJh8pxnOMALldp72sohe1XZ-ZfksZZVpE5qIxHgc,9610
|
102
84
|
wiederverwendbar/sqlalchemy/raise_has_not_attr.py,sha256=GdmbSC8EoBCkpuZQGLp3zzQ0iScsj2XfFZC9OZtWbkA,403
|
103
85
|
wiederverwendbar/sqlalchemy/settings.py,sha256=RM-bFg_Ga0AUko4JWOvCZLcfoB91kKpn1TqVzgxAm_k,2579
|
@@ -158,14 +140,17 @@ wiederverwendbar/starlette_admin/settings/admin.py,sha256=moEgCDUpf2eQ2o7e2SaeMk
|
|
158
140
|
wiederverwendbar/starlette_admin/settings/settings.py,sha256=3T1EcFNATDI45o99MIlzmfs-1XYzUWB6p9C7L4zvJ0A,7378
|
159
141
|
wiederverwendbar/task_manger/__init__.py,sha256=A46SQ_MJiMdcZ7HU2ePEsv0xGdek9gnW1X4Q1QXtB7E,354
|
160
142
|
wiederverwendbar/task_manger/singleton.py,sha256=HQ6XwVmBmCEVAzTLeloMU-vf3JnctBUXDGC2SaEL2vw,183
|
161
|
-
wiederverwendbar/task_manger/task.py,sha256=
|
162
|
-
wiederverwendbar/task_manger/task_manager.py,sha256=
|
143
|
+
wiederverwendbar/task_manger/task.py,sha256=NanEdg28Bn6JwG6mwrL0qLZIcGI6XQzVbctwXa0-j14,2961
|
144
|
+
wiederverwendbar/task_manger/task_manager.py,sha256=FuB0Lf2ff4KaVtPp7G585uF7GjjMFszY7oGGNSOIfSI,6871
|
163
145
|
wiederverwendbar/task_manger/trigger.py,sha256=biTQv3_S7d14CkPXKjDQxL6XbTet7-PVRwofsCBs3Wc,9906
|
164
146
|
wiederverwendbar/threading/__init__.py,sha256=jFeP8mQws_JVwxL8W1fCsWPUcFqO-l39yQ8d9P3AqtQ,508
|
165
147
|
wiederverwendbar/threading/extended_thread.py,sha256=CJi2fmpHBZD9jo5B8_85Ax8jo1pM5n9cjEVuG6Guxg8,23409
|
166
|
-
wiederverwendbar/typer/__init__.py,sha256=
|
148
|
+
wiederverwendbar/typer/__init__.py,sha256=sOFS8tcI_eeICm7V5G-ZMAw5rFs6wl7UnHnLkOzso1U,190
|
149
|
+
wiederverwendbar/typer/app.py,sha256=1taEZEeScemjd0nOybBBnHMJboRCUmC-vVV7AE_27Gw,7472
|
150
|
+
wiederverwendbar/typer/settings.py,sha256=uJc7WeAoFV1Aa7vSpfms_CXRYicSn3M2MZ6ZpIbd0qQ,761
|
167
151
|
wiederverwendbar/typer/typer_resolve_defaults.py,sha256=2KD09rxKaur2TbJ3BCcLxbrcjhRgiFE8pskzN0lqDiE,1193
|
168
152
|
wiederverwendbar/uvicorn/__init__.py,sha256=9F7gT-8QyxS41xWKEIHMLUBV9ZTBKZJj8tHPqhMzoHA,126
|
169
153
|
wiederverwendbar/uvicorn/server.py,sha256=04WpB8AUtVkYhoS6qsBVJHOtTNkISQVg_mLVtYmK-1Y,5657
|
170
154
|
wiederverwendbar/uvicorn/settings.py,sha256=IAjlpWR-KH7098jIgH_t46yG17YPbH8MoEmMdn0hgNo,2217
|
171
|
-
wiederverwendbar
|
155
|
+
wiederverwendbar/warnings.py,sha256=6P1wn-OkrDCo5zg_hL28nt5b9w4ZXo4qXwlpW9B_QWI,110
|
156
|
+
wiederverwendbar-0.9.0.dist-info/RECORD,,
|
File without changes
|
@@ -1,74 +0,0 @@
|
|
1
|
-
from wiederverwendbar.before_after_wrap import WrappedClass, wrap
|
2
|
-
|
3
|
-
|
4
|
-
class BaseClass(metaclass=WrappedClass):
|
5
|
-
def before_cls_test1(self, __ba_before_result__):
|
6
|
-
print("before_cls_test1")
|
7
|
-
|
8
|
-
@wrap(before=before_cls_test1, after="after_cls_test1")
|
9
|
-
def cls_test1(self, __ba_before_result__):
|
10
|
-
print("cls_test1")
|
11
|
-
|
12
|
-
def after_cls_test1(self, __ba_result__):
|
13
|
-
print("after_cls_test1")
|
14
|
-
|
15
|
-
def before_cls_test2(self):
|
16
|
-
print("before_cls_test2")
|
17
|
-
|
18
|
-
@wrap(before=before_cls_test2, after="after_cls_test2")
|
19
|
-
def cls_test2(self):
|
20
|
-
print("cls_test2")
|
21
|
-
|
22
|
-
def after_cls_test2(self):
|
23
|
-
print("after_cls_test2")
|
24
|
-
|
25
|
-
|
26
|
-
class ChildClass(BaseClass):
|
27
|
-
def before_cls_test1A(self):
|
28
|
-
print("before_cls_test1A")
|
29
|
-
|
30
|
-
@wrap(before=before_cls_test1A, after="after_cls_test1A", include_base=False)
|
31
|
-
def cls_test1(self, __ba_before_result__):
|
32
|
-
super().cls_test1(__ba_use__=False)
|
33
|
-
print("cls_test1A")
|
34
|
-
|
35
|
-
def after_cls_test1A(self):
|
36
|
-
print("after_cls_test1A")
|
37
|
-
|
38
|
-
def before_cls_test3(self):
|
39
|
-
print("before_cls_test3")
|
40
|
-
|
41
|
-
@wrap(before=before_cls_test3, after="after_cls_test3")
|
42
|
-
def cls_test3(self):
|
43
|
-
print("cls_test3")
|
44
|
-
|
45
|
-
def after_cls_test3(self):
|
46
|
-
print("after_cls_test3")
|
47
|
-
|
48
|
-
|
49
|
-
def before_test1(*_, **__):
|
50
|
-
print("before_test1")
|
51
|
-
|
52
|
-
|
53
|
-
@wrap(before=before_test1, after="after_test1")
|
54
|
-
def test1(arg1: str):
|
55
|
-
print(f"test1 -> {arg1}")
|
56
|
-
|
57
|
-
|
58
|
-
def after_test1(*_, **__):
|
59
|
-
print("after_test1")
|
60
|
-
|
61
|
-
|
62
|
-
if __name__ == "__main__":
|
63
|
-
base_class = BaseClass()
|
64
|
-
base_class.cls_test1()
|
65
|
-
base_class.cls_test2()
|
66
|
-
|
67
|
-
child_class = ChildClass()
|
68
|
-
child_class.cls_test1()
|
69
|
-
child_class.cls_test2()
|
70
|
-
child_class.cls_test3()
|
71
|
-
|
72
|
-
test1("qwe")
|
73
|
-
|
74
|
-
|
@@ -1,16 +0,0 @@
|
|
1
|
-
from wiederverwendbar.functions.colors import Color
|
2
|
-
|
3
|
-
if __name__ == '__main__':
|
4
|
-
color = Color(red=255, green=0, blue=0, alpha=0.5)
|
5
|
-
color_str_rgb = color.as_rgb()
|
6
|
-
color_str_rgba = color.as_rgba()
|
7
|
-
color_str_hex = color.as_hex()
|
8
|
-
color_str_hex_short = color.from_str("a0a")
|
9
|
-
|
10
|
-
print("Color Class: ", color)
|
11
|
-
print("Color RGB: ", color_str_rgb)
|
12
|
-
print("Color RGBA: ", color_str_rgba)
|
13
|
-
print("Color HEX: ", color_str_hex)
|
14
|
-
print("Color HEX Short: ", color_str_hex_short)
|
15
|
-
|
16
|
-
print()
|
@@ -1,28 +0,0 @@
|
|
1
|
-
import time
|
2
|
-
from typing import Union
|
3
|
-
|
4
|
-
from wiederverwendbar.threading import ExtendedThread
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def test_watchdog(self: ExtendedThread):
|
9
|
-
return True
|
10
|
-
|
11
|
-
|
12
|
-
def thread_target(*args, **kwargs):
|
13
|
-
print("loop", args, kwargs)
|
14
|
-
|
15
|
-
|
16
|
-
if __name__ == '__main__':
|
17
|
-
thread = ExtendedThread(name="test", target=thread_target, args=(1, 2), kwargs={"a": 1}, loop_sleep_time=1, watchdog_target=test_watchdog)
|
18
|
-
|
19
|
-
while True:
|
20
|
-
try:
|
21
|
-
time.sleep(3)
|
22
|
-
with thread.loop_wait():
|
23
|
-
print("main thread")
|
24
|
-
time.sleep(5)
|
25
|
-
except KeyboardInterrupt:
|
26
|
-
break
|
27
|
-
# thread.stop()
|
28
|
-
# thread.raise_exception(Exception("hallo welt"))
|
@@ -1,19 +0,0 @@
|
|
1
|
-
from wiederverwendbar.pydantic.indexable_model import IndexableModel
|
2
|
-
|
3
|
-
|
4
|
-
class Config(IndexableModel):
|
5
|
-
asd: int = 123
|
6
|
-
qwe: str = "qwe"
|
7
|
-
yxc: bool = False
|
8
|
-
|
9
|
-
|
10
|
-
if __name__ == '__main__':
|
11
|
-
config = Config()
|
12
|
-
|
13
|
-
asd = config["asd"]
|
14
|
-
qwe = config["qwe"]
|
15
|
-
yxc = config["yxc"]
|
16
|
-
|
17
|
-
asd_1 = config[0]
|
18
|
-
qwe_1 = config[1]
|
19
|
-
yxc_1 = config[2]
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import logging
|
2
|
-
|
3
|
-
from wiederverwendbar.logger import LoggerSingleton
|
4
|
-
from wiederverwendbar.logger import LoggerSettings
|
5
|
-
|
6
|
-
import uvicorn
|
7
|
-
from fastapi import FastAPI
|
8
|
-
|
9
|
-
|
10
|
-
if __name__ == '__main__':
|
11
|
-
logger = LoggerSingleton(init=True, name="test", settings=LoggerSettings(log_level="DEBUG"), ignored_loggers_like=["uvicorn"])
|
12
|
-
|
13
|
-
sub_logger = logging.getLogger("sub")
|
14
|
-
|
15
|
-
logger.debug("debug")
|
16
|
-
logger.info("info")
|
17
|
-
logger.warning("warning")
|
18
|
-
logger.error("error")
|
19
|
-
logger.critical("critical")
|
20
|
-
|
21
|
-
sub_logger.debug("debug")
|
22
|
-
sub_logger.info("info")
|
23
|
-
sub_logger.warning("warning")
|
24
|
-
sub_logger.error("error")
|
25
|
-
sub_logger.critical("critical")
|
26
|
-
|
27
|
-
app = FastAPI()
|
28
|
-
|
29
|
-
uvicorn.run(app, host="0.0.0.0", port=8000)
|
30
|
-
|
31
|
-
print()
|
File without changes
|
@@ -1,58 +0,0 @@
|
|
1
|
-
import logging
|
2
|
-
import sys
|
3
|
-
import threading
|
4
|
-
|
5
|
-
from wiederverwendbar.logger import LoggingContext
|
6
|
-
from wiederverwendbar.logger import LoggerSingleton, LoggerSettings
|
7
|
-
|
8
|
-
from wiederverwendbar.examples.logger_context.example_module import example_function
|
9
|
-
|
10
|
-
LoggerSingleton(init=True, name="test", settings=LoggerSettings(log_level="DEBUG"), ignored_loggers_like=["logger1", "logger2"])
|
11
|
-
|
12
|
-
logger1 = logging.getLogger("logger1")
|
13
|
-
ch = logging.StreamHandler()
|
14
|
-
ch.setLevel(logging.DEBUG)
|
15
|
-
ch.setFormatter(logging.Formatter('logger1 - %(name)s - %(levelname)s - %(message)s'))
|
16
|
-
logger1.addHandler(ch)
|
17
|
-
logger1.setLevel(logging.DEBUG)
|
18
|
-
|
19
|
-
logger2 = logging.getLogger("logger2")
|
20
|
-
ch = logging.StreamHandler()
|
21
|
-
ch.setLevel(logging.DEBUG)
|
22
|
-
ch.setFormatter(logging.Formatter('logger2 - %(name)s - %(levelname)s - %(message)s'))
|
23
|
-
logger2.addHandler(ch)
|
24
|
-
logger2.setLevel(logging.DEBUG)
|
25
|
-
|
26
|
-
|
27
|
-
def test_thread():
|
28
|
-
while True:
|
29
|
-
# generate log messages on different loggers
|
30
|
-
example_function()
|
31
|
-
|
32
|
-
|
33
|
-
# start test thread
|
34
|
-
thread = threading.Thread(target=test_thread, daemon=True)
|
35
|
-
thread.start()
|
36
|
-
|
37
|
-
if __name__ == '__main__':
|
38
|
-
# no context
|
39
|
-
logger1.debug("no context")
|
40
|
-
logger2.debug("no context")
|
41
|
-
|
42
|
-
with LoggingContext(logger1, handle_origin_logger=False) as context1_a:
|
43
|
-
with LoggingContext(logger2, handle_origin_logger=False) as context2_a:
|
44
|
-
example_function()
|
45
|
-
example_function()
|
46
|
-
example_function()
|
47
|
-
|
48
|
-
with LoggingContext(logger1):
|
49
|
-
with LoggingContext(logger2):
|
50
|
-
example_function()
|
51
|
-
example_function()
|
52
|
-
example_function()
|
53
|
-
|
54
|
-
# again no context
|
55
|
-
logger1.debug("again no context")
|
56
|
-
logger2.debug("again no context")
|
57
|
-
|
58
|
-
sys.exit(0)
|
@@ -1,13 +0,0 @@
|
|
1
|
-
import logging
|
2
|
-
import time
|
3
|
-
|
4
|
-
logger = logging.getLogger(__name__)
|
5
|
-
|
6
|
-
|
7
|
-
def example_function():
|
8
|
-
logger.debug("example_function")
|
9
|
-
func_logger = logging.getLogger(__name__ + ".example_function")
|
10
|
-
time.sleep(1)
|
11
|
-
func_logger.debug("debug")
|
12
|
-
time.sleep(1)
|
13
|
-
return
|
File without changes
|
@@ -1,25 +0,0 @@
|
|
1
|
-
from mongoengine import ListField, ReferenceField, StringField
|
2
|
-
|
3
|
-
from wiederverwendbar.mongoengine import AutomaticReferenceDocument
|
4
|
-
|
5
|
-
|
6
|
-
# --- example classes ---
|
7
|
-
|
8
|
-
class Test1(AutomaticReferenceDocument):
|
9
|
-
meta = {"collection": "test1"}
|
10
|
-
|
11
|
-
name = StringField(required=True)
|
12
|
-
test2_one_to_one = ReferenceField("Test2", automatic_reference="test1_one_to_one")
|
13
|
-
test2_one_to_many = ReferenceField("Test2", automatic_reference="test1_many_to_one")
|
14
|
-
test2_many_to_one = ListField(ReferenceField("Test2"), automatic_reference="test1_one_to_many")
|
15
|
-
test2_many_to_many = ListField(ReferenceField("Test2"), automatic_reference="test1_many_to_many")
|
16
|
-
|
17
|
-
|
18
|
-
class Test2(AutomaticReferenceDocument):
|
19
|
-
meta = {"collection": "test2"}
|
20
|
-
|
21
|
-
name = StringField(required=True)
|
22
|
-
test1_one_to_one = ReferenceField("Test1", automatic_reference="test2_one_to_one")
|
23
|
-
test1_one_to_many = ReferenceField("Test1", automatic_reference="test2_many_to_one")
|
24
|
-
test1_many_to_one = ListField(ReferenceField("Test1"), automatic_reference="test2_one_to_many")
|
25
|
-
test1_many_to_many = ListField(ReferenceField("Test1"), automatic_reference="test2_many_to_many")
|
@@ -1,7 +0,0 @@
|
|
1
|
-
from wiederverwendbar.logger import LoggerSingleton, LoggerSettings
|
2
|
-
from wiederverwendbar.mongoengine import MongoengineDbSingleton
|
3
|
-
|
4
|
-
LoggerSingleton(name="test", settings=LoggerSettings(log_level=LoggerSettings.LogLevels.DEBUG), init=True)
|
5
|
-
|
6
|
-
if __name__ == '__main__':
|
7
|
-
MongoengineDbSingleton(init=True)
|
@@ -1,9 +0,0 @@
|
|
1
|
-
import time
|
2
|
-
|
3
|
-
from wiederverwendbar.examples.mongoengine.logger import MyMongoengineLogDocument
|
4
|
-
from wiederverwendbar.mongoengine import MongoengineLogStreamer
|
5
|
-
|
6
|
-
if __name__ == '__main__':
|
7
|
-
with MongoengineLogStreamer(MyMongoengineLogDocument) as streamer:
|
8
|
-
while True:
|
9
|
-
time.sleep(1)
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import logging
|
2
|
-
|
3
|
-
from mongoengine import StringField
|
4
|
-
|
5
|
-
from wiederverwendbar.mongoengine import MongoengineDbSingleton, MongoengineLogDocument, MongoengineLogHandler
|
6
|
-
|
7
|
-
MongoengineDbSingleton(init=True)
|
8
|
-
|
9
|
-
|
10
|
-
class MyMongoengineLogDocument(MongoengineLogDocument):
|
11
|
-
meta = {"collection": "log.test"}
|
12
|
-
|
13
|
-
test = StringField(required=True)
|
14
|
-
|
15
|
-
|
16
|
-
logger = logging.getLogger("test123")
|
17
|
-
|
18
|
-
logger.addHandler(logging.StreamHandler())
|
19
|
-
logger.addHandler(MongoengineLogHandler(document=MyMongoengineLogDocument, document_kwargs={"test": "test"}))
|
20
|
-
|
21
|
-
logger.setLevel(logging.DEBUG)
|
22
|
-
|
23
|
-
if __name__ == '__main__':
|
24
|
-
logger.debug("Hello")
|
25
|
-
logger.debug("Hello")
|
@@ -1,29 +0,0 @@
|
|
1
|
-
from wiederverwendbar.post_init import PostInit
|
2
|
-
|
3
|
-
class MyParentClass(PostInit):
|
4
|
-
def __init__(self, parent_attr: str):
|
5
|
-
super().__init__()
|
6
|
-
|
7
|
-
self.parent_attr = parent_attr
|
8
|
-
|
9
|
-
print(f"Parent attribute: {parent_attr}")
|
10
|
-
|
11
|
-
def __post_init__(self):
|
12
|
-
print(f"Parent post init attribute: {self.parent_attr}")
|
13
|
-
|
14
|
-
|
15
|
-
class MyClass(MyParentClass):
|
16
|
-
def __init__(self, my_attr: str, parent_attr: str):
|
17
|
-
super().__init__(parent_attr=parent_attr)
|
18
|
-
|
19
|
-
self.my_attr = my_attr
|
20
|
-
|
21
|
-
print(f"My attribute: {my_attr}")
|
22
|
-
|
23
|
-
def __post_init__(self):
|
24
|
-
super().__post_init__()
|
25
|
-
print(f"My post init attribute: {self.my_attr}")
|
26
|
-
|
27
|
-
|
28
|
-
if __name__ == '__main__':
|
29
|
-
my_class = MyClass(my_attr="My attribute", parent_attr="Parent attribute")
|
@@ -1,12 +0,0 @@
|
|
1
|
-
from ipaddress import IPv4Network, IPv4Address
|
2
|
-
|
3
|
-
from wiederverwendbar.route import RouteManager, Route
|
4
|
-
|
5
|
-
if __name__ == '__main__':
|
6
|
-
route_manager = RouteManager()
|
7
|
-
test_route = Route(target=IPv4Network("192.168.200.0/24"), gateway=IPv4Address("192.168.65.1"))
|
8
|
-
result_add = route_manager.create(test_route)
|
9
|
-
all_routes = route_manager.get_all()
|
10
|
-
result_delete = route_manager.delete(test_route)
|
11
|
-
|
12
|
-
print()
|
@@ -1,59 +0,0 @@
|
|
1
|
-
from pydantic import BaseModel
|
2
|
-
|
3
|
-
from wiederverwendbar.logger import LoggerSingleton, LoggerSettings
|
4
|
-
from wiederverwendbar.pydantic import ModelSingleton
|
5
|
-
from wiederverwendbar.singleton import Singleton
|
6
|
-
|
7
|
-
logger = LoggerSingleton(init=True, name="test", settings=LoggerSettings(log_level="DEBUG"), ignored_loggers_like=["uvicorn"])
|
8
|
-
|
9
|
-
|
10
|
-
class A(metaclass=Singleton, order=3):
|
11
|
-
def __init__(self):
|
12
|
-
print("A created")
|
13
|
-
|
14
|
-
def __del__(self):
|
15
|
-
print("A deleted")
|
16
|
-
|
17
|
-
|
18
|
-
class B(metaclass=Singleton, order=2):
|
19
|
-
def __init__(self):
|
20
|
-
print("B created")
|
21
|
-
|
22
|
-
def __del__(self):
|
23
|
-
print("B deleted")
|
24
|
-
|
25
|
-
|
26
|
-
class C(metaclass=Singleton, order=1):
|
27
|
-
def __init__(self):
|
28
|
-
print("C created")
|
29
|
-
|
30
|
-
def __del__(self):
|
31
|
-
print("C deleted")
|
32
|
-
|
33
|
-
|
34
|
-
class Model(BaseModel, metaclass=ModelSingleton):
|
35
|
-
qwe: str
|
36
|
-
|
37
|
-
|
38
|
-
Model(qwe="qwe", init=True)
|
39
|
-
|
40
|
-
|
41
|
-
def init():
|
42
|
-
A(init=True)
|
43
|
-
B(init=True)
|
44
|
-
C(init=True)
|
45
|
-
print("init")
|
46
|
-
|
47
|
-
|
48
|
-
def main():
|
49
|
-
a = A()
|
50
|
-
b = B()
|
51
|
-
c = C()
|
52
|
-
|
53
|
-
print("main")
|
54
|
-
|
55
|
-
|
56
|
-
if __name__ == '__main__':
|
57
|
-
Singleton.delete_ordered_on_exit = True
|
58
|
-
init()
|
59
|
-
main()
|
File without changes
|