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.
Files changed (67) hide show
  1. wiederverwendbar/__init__.py +8 -6
  2. wiederverwendbar/branding/__init__.py +1 -0
  3. wiederverwendbar/branding/settings.py +85 -0
  4. wiederverwendbar/console/__init__.py +3 -0
  5. wiederverwendbar/console/console.py +199 -0
  6. wiederverwendbar/console/out_files.py +19 -0
  7. wiederverwendbar/console/settings.py +9 -0
  8. wiederverwendbar/default.py +4 -1
  9. wiederverwendbar/fastapi/__init__.py +3 -0
  10. wiederverwendbar/fastapi/app.py +385 -0
  11. wiederverwendbar/fastapi/dependencies.py +11 -0
  12. wiederverwendbar/fastapi/settings.py +39 -0
  13. wiederverwendbar/functions/is_coroutine_function.py +19 -0
  14. wiederverwendbar/inspect.py +26 -0
  15. wiederverwendbar/logger/__init__.py +0 -1
  16. wiederverwendbar/logger/handlers/rich_console_handler.py +15 -6
  17. wiederverwendbar/logger/handlers/stream_console_handler.py +3 -16
  18. wiederverwendbar/logger/log_levels.py +4 -0
  19. wiederverwendbar/logger/settings.py +15 -20
  20. wiederverwendbar/pydantic/file_config.py +20 -4
  21. wiederverwendbar/rich/__init__.py +2 -0
  22. wiederverwendbar/rich/console.py +215 -0
  23. wiederverwendbar/rich/settings.py +26 -0
  24. wiederverwendbar/sqlalchemy/base.py +4 -4
  25. wiederverwendbar/task_manger/task.py +1 -4
  26. wiederverwendbar/task_manger/task_manager.py +14 -19
  27. wiederverwendbar/typer/__init__.py +3 -1
  28. wiederverwendbar/typer/app.py +172 -0
  29. wiederverwendbar/typer/settings.py +14 -0
  30. wiederverwendbar/warnings.py +6 -0
  31. {wiederverwendbar-0.8.5.dist-info → wiederverwendbar-0.9.0.dist-info}/METADATA +9 -6
  32. {wiederverwendbar-0.8.5.dist-info → wiederverwendbar-0.9.0.dist-info}/RECORD +34 -49
  33. wiederverwendbar/examples/__init__.py +0 -0
  34. wiederverwendbar/examples/before_after_wrap.py +0 -74
  35. wiederverwendbar/examples/colors.py +0 -16
  36. wiederverwendbar/examples/extended_thread.py +0 -28
  37. wiederverwendbar/examples/file_config.py +0 -11
  38. wiederverwendbar/examples/indexable_model.py +0 -19
  39. wiederverwendbar/examples/logger.py +0 -31
  40. wiederverwendbar/examples/logger_context/__init__.py +0 -0
  41. wiederverwendbar/examples/logger_context/example.py +0 -58
  42. wiederverwendbar/examples/logger_context/example_module.py +0 -13
  43. wiederverwendbar/examples/mongoengine/__init__.py +0 -0
  44. wiederverwendbar/examples/mongoengine/automatic_reference.py +0 -25
  45. wiederverwendbar/examples/mongoengine/db.py +0 -7
  46. wiederverwendbar/examples/mongoengine/log_streamer.py +0 -9
  47. wiederverwendbar/examples/mongoengine/logger.py +0 -25
  48. wiederverwendbar/examples/post_init.py +0 -29
  49. wiederverwendbar/examples/route.py +0 -12
  50. wiederverwendbar/examples/singletons.py +0 -59
  51. wiederverwendbar/examples/sqlalchemy/__init__.py +0 -0
  52. wiederverwendbar/examples/sqlalchemy/db.py +0 -89
  53. wiederverwendbar/examples/starlette_admin/__init__.py +0 -0
  54. wiederverwendbar/examples/starlette_admin/action_log.py +0 -126
  55. wiederverwendbar/examples/starlette_admin/action_log_file_download.py +0 -99
  56. wiederverwendbar/examples/starlette_admin/action_log_form.py +0 -149
  57. wiederverwendbar/examples/starlette_admin/action_log_thread.py +0 -192
  58. wiederverwendbar/examples/starlette_admin/automatic_reference_admin.py +0 -47
  59. wiederverwendbar/examples/starlette_admin/generic_embedded_document_field.py +0 -74
  60. wiederverwendbar/examples/starlette_admin/multi_path_admin.py +0 -18
  61. wiederverwendbar/examples/task_manager.py +0 -55
  62. wiederverwendbar/examples/test_file.py +0 -14
  63. wiederverwendbar/examples/typer_resolve_defaults.py +0 -15
  64. wiederverwendbar/examples/uvicorn_server.py +0 -32
  65. wiederverwendbar/logger/terminal_out_files.py +0 -10
  66. {wiederverwendbar-0.8.5.dist-info → wiederverwendbar-0.9.0.dist-info}/WHEEL +0 -0
  67. {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.8.5
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.5
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.19.0; extra == "full"
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.12; extra == "full"
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.12; extra == "fastapi"
38
+ Requires-Dist: fastapi>=0.115.13; extra == "fastapi"
36
39
  Provides-Extra: nicegui
37
- Requires-Dist: nicegui>=2.19.0; extra == "nicegui"
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.8.5.dist-info/METADATA,sha256=_Rv2S2NNzn3-vzHy6EQZpS9668alPFZHtDRWdNS2sKU,2012
2
- wiederverwendbar-0.8.5.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- wiederverwendbar-0.8.5.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
4
- wiederverwendbar/__init__.py,sha256=rI0baW27B0s4avXRykXayN0cZK4x2ItpEvLEkLDLSm4,156
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/default.py,sha256=MQBBpJMh8Tz4FUwxszVm7M3j6qbW2JH-5jKSjbvsUUk,49
7
- wiederverwendbar/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- wiederverwendbar/examples/before_after_wrap.py,sha256=wFOPZUiicQT-FhyQzBygXFTXCmd6g5GPs5YAXKUhPGc,1730
9
- wiederverwendbar/examples/colors.py,sha256=1PQx1ZMaq3mm4BGkxr3BARb0mUyGbjR2nUsCVceh_UU,512
10
- wiederverwendbar/examples/extended_thread.py,sha256=-237Gdnhcmk1HrCeEy9JwoqRmNFLqnCvNk3TjKRzNe4,680
11
- wiederverwendbar/examples/file_config.py,sha256=gHzKqduofPSQeqakI_J9PL0ykR_iPEsPnNye2yUjZro,218
12
- wiederverwendbar/examples/indexable_model.py,sha256=bEKKWwGzWFmLSbxtLzfq9XWGovzEx20Y_cB9N9hSLBE,354
13
- wiederverwendbar/examples/logger.py,sha256=KV0gT7q45mottA4Sh95blIygegWXtE7mL01c2pnGPjM,747
14
- wiederverwendbar/examples/logger_context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- wiederverwendbar/examples/logger_context/example.py,sha256=Bjbf-kqGqwwYElDMp5olphSpVr57SKoweoy8hMLBlmM,1686
16
- wiederverwendbar/examples/logger_context/example_module.py,sha256=J3B2IY1gRCcGMrjpzdRb2oY0z52ngPG5lMTaLOZoyQQ,274
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/logger/__init__.py,sha256=CXFPgSXCaopr8DuoMAEt6-gOs_xH4V3FVDMQj71-xF8,751
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=C2bFR0-yc4NqMCU-5KHhj-NBiJ3-DZbqj5bnLI3D9Os,592
60
- wiederverwendbar/logger/handlers/stream_console_handler.py,sha256=-mPYV3d3xKx9CizdEaIEgLh6_OABbsj8SJ6cBm8P99Q,573
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=DIr1xN3GIvOZajsGNrUKo39f3h7OHq7wP3K0jtB-psY,212
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=w2gGbx447UsnjB1uZ5hjt_J28PGrnMNxQp5qveVmifo,5876
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=DCiCFK8FZm9lurwKtbR8GfAkzd4Yv0O9AAlrW2jN3Mw,2157
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=q_wiVyiAK4c-z3InFIy4TEN140Rp8MjEQqhxhL2bvaw,15030
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=ZCT6EFGlJzVCgHNHm-xAdgwDHGc2cp10SUdF5d_-piU,3043
162
- wiederverwendbar/task_manger/task_manager.py,sha256=UNY1MAqw6m3uUvCkfDT0a0QJwJgepVjr7yxnSrLkMTE,6992
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=tNSzIIwsWsIKh62614_YbsFmNI3N3Hp6a8qDETCx9YE,81
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-0.8.5.dist-info/RECORD,,
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,11 +0,0 @@
1
- from wiederverwendbar.pydantic.file_config import FileConfig
2
-
3
-
4
- class Config(FileConfig):
5
- asd: int = 123
6
- qwe: str = "qwe"
7
- yxc: bool = False
8
-
9
-
10
- if __name__ == '__main__':
11
- config = Config(file_path="test")
@@ -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