fdc-shared-kernel 0.0.163__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.
Files changed (176) hide show
  1. fdc_shared_kernel-0.0.163/PKG-INFO +232 -0
  2. fdc_shared_kernel-0.0.163/README.md +218 -0
  3. fdc_shared_kernel-0.0.163/README_pypi.md +185 -0
  4. fdc_shared_kernel-0.0.163/fdc_shared_kernel.egg-info/PKG-INFO +232 -0
  5. fdc_shared_kernel-0.0.163/fdc_shared_kernel.egg-info/SOURCES.txt +174 -0
  6. fdc_shared_kernel-0.0.163/fdc_shared_kernel.egg-info/dependency_links.txt +1 -0
  7. fdc_shared_kernel-0.0.163/fdc_shared_kernel.egg-info/requires.txt +36 -0
  8. fdc_shared_kernel-0.0.163/fdc_shared_kernel.egg-info/top_level.txt +6 -0
  9. fdc_shared_kernel-0.0.163/pyproject.toml +26 -0
  10. fdc_shared_kernel-0.0.163/requirements.txt +36 -0
  11. fdc_shared_kernel-0.0.163/setup.cfg +4 -0
  12. fdc_shared_kernel-0.0.163/shared_kernel/__init__.py +0 -0
  13. fdc_shared_kernel-0.0.163/shared_kernel/agent_communication_channel/__init__.py +15 -0
  14. fdc_shared_kernel-0.0.163/shared_kernel/agent_communication_channel/agent_channel.py +126 -0
  15. fdc_shared_kernel-0.0.163/shared_kernel/agent_communication_channel/contexts.py +130 -0
  16. fdc_shared_kernel-0.0.163/shared_kernel/agent_communication_channel/event_channel.py +63 -0
  17. fdc_shared_kernel-0.0.163/shared_kernel/ai_audit_log/__init__.py +61 -0
  18. fdc_shared_kernel-0.0.163/shared_kernel/ai_chat_persistence/__init__.py +0 -0
  19. fdc_shared_kernel-0.0.163/shared_kernel/ai_chat_persistence/chat_persistence.py +57 -0
  20. fdc_shared_kernel-0.0.163/shared_kernel/async_task_executor/__init__.py +1 -0
  21. fdc_shared_kernel-0.0.163/shared_kernel/async_task_executor/async_task_executor.py +232 -0
  22. fdc_shared_kernel-0.0.163/shared_kernel/auth/__init__.py +2 -0
  23. fdc_shared_kernel-0.0.163/shared_kernel/auth/jwt_helper.py +64 -0
  24. fdc_shared_kernel-0.0.163/shared_kernel/auth/token_handler.py +41 -0
  25. fdc_shared_kernel-0.0.163/shared_kernel/auth/workbook_permission_handler.py +92 -0
  26. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/__init__.py +0 -0
  27. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/batch_job_status_tracker/container_job_status_tracker.py +54 -0
  28. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_handlers/__init__.py +0 -0
  29. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_handlers/aws_batch_job_handler.py +236 -0
  30. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_handlers/azure_apps_job_handler.py +296 -0
  31. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_handlers/job_handler_factory.py +51 -0
  32. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_handlers/job_status_mapper.py +19 -0
  33. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_storage_managers/__init__.py +0 -0
  34. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_storage_managers/azure_blob_storage_manager.py +144 -0
  35. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_storage_managers/job_storage_manager_factory.py +45 -0
  36. fdc_shared_kernel-0.0.163/shared_kernel/batch_job/job_storage_managers/s3_job_storage_manager.py +143 -0
  37. fdc_shared_kernel-0.0.163/shared_kernel/config/__init__.py +71 -0
  38. fdc_shared_kernel-0.0.163/shared_kernel/constants/constants.py +50 -0
  39. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/__init__.py +6 -0
  40. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/connections/mssql_warehouse_connection.py +148 -0
  41. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/connections/mysql_warehouse_connection.py +174 -0
  42. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/connections/postgresql_warehouse_connection.py +136 -0
  43. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/connections/redshift_warehouse_connection.py +212 -0
  44. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/connections/snowflake_warehouse_connection.py +141 -0
  45. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/factory.py +43 -0
  46. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/mssql_handler.py +41 -0
  47. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/mysql_handler.py +41 -0
  48. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/postgres_handler.py +41 -0
  49. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/query_executors/redshift_databricks_snowflake_query_executor.py +140 -0
  50. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/query_executors/sqlalchemy_query_executor.py +131 -0
  51. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/redshift_handler.py +46 -0
  52. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/snowflake_handler.py +39 -0
  53. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/utils.py +108 -0
  54. fdc_shared_kernel-0.0.163/shared_kernel/data_warehouse_handlers/warehouse_handlers_map.py +18 -0
  55. fdc_shared_kernel-0.0.163/shared_kernel/database/__init__.py +41 -0
  56. fdc_shared_kernel-0.0.163/shared_kernel/dataclasses/__init__.py +0 -0
  57. fdc_shared_kernel-0.0.163/shared_kernel/dataclasses/aws_batch_job_context.py +86 -0
  58. fdc_shared_kernel-0.0.163/shared_kernel/dataclasses/azure_container_app_job_context.py +64 -0
  59. fdc_shared_kernel-0.0.163/shared_kernel/dataclasses/event_executor.py +42 -0
  60. fdc_shared_kernel-0.0.163/shared_kernel/dataclasses/job_context.py +84 -0
  61. fdc_shared_kernel-0.0.163/shared_kernel/dataclasses/job_record_dataclasses.py +35 -0
  62. fdc_shared_kernel-0.0.163/shared_kernel/dataclasses/warehouse_configs.py +92 -0
  63. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/__init__.py +0 -0
  64. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/__init__.py +8 -0
  65. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/csv.py +1 -0
  66. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/databricks.py +33 -0
  67. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/db2.py +1 -0
  68. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/jira.py +1 -0
  69. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/mssql.py +52 -0
  70. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/mysql.py +47 -0
  71. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/oracle.py +1 -0
  72. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/postgres.py +82 -0
  73. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/redshift.py +69 -0
  74. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/salesforce.py +1 -0
  75. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/snowflake.py +55 -0
  76. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/connectors_to_system/sqlalchemy.py +46 -0
  77. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/system_to_warehouse/__init__.py +1 -0
  78. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/system_to_warehouse/postgres.py +28 -0
  79. fdc_shared_kernel-0.0.163/shared_kernel/datatype_mappings/system_to_warehouse/redshift.py +31 -0
  80. fdc_shared_kernel-0.0.163/shared_kernel/enums/__init__.py +3 -0
  81. fdc_shared_kernel-0.0.163/shared_kernel/enums/async_task_executor.py +9 -0
  82. fdc_shared_kernel-0.0.163/shared_kernel/enums/connection_engine.py +12 -0
  83. fdc_shared_kernel-0.0.163/shared_kernel/enums/status_tracker.py +10 -0
  84. fdc_shared_kernel-0.0.163/shared_kernel/event_executor/__init__.py +1 -0
  85. fdc_shared_kernel-0.0.163/shared_kernel/event_executor/event_executor.py +269 -0
  86. fdc_shared_kernel-0.0.163/shared_kernel/event_executor/job_executor.py +325 -0
  87. fdc_shared_kernel-0.0.163/shared_kernel/event_executor/utils.py +28 -0
  88. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/__init__.py +7 -0
  89. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/batch_job_exceptions.py +21 -0
  90. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/configuration_exceptions.py +41 -0
  91. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/custom_exceptions.py +20 -0
  92. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/data_validation_exceptions.py +26 -0
  93. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/http_exceptions.py +67 -0
  94. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/infrastructure_exceptions.py +26 -0
  95. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/operational_exceptions.py +26 -0
  96. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/security_exceptions.py +26 -0
  97. fdc_shared_kernel-0.0.163/shared_kernel/exceptions/user_intervention_exception.py +3 -0
  98. fdc_shared_kernel-0.0.163/shared_kernel/http/__init__.py +14 -0
  99. fdc_shared_kernel-0.0.163/shared_kernel/http/httpx_http_client.py +179 -0
  100. fdc_shared_kernel-0.0.163/shared_kernel/http/request_http_client.py +184 -0
  101. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/__init__.py +4 -0
  102. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/base_job_handler.py +69 -0
  103. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/data_warehouse_handler.py +30 -0
  104. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/databus.py +112 -0
  105. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/http.py +157 -0
  106. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/keyvault.py +79 -0
  107. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/query_executor.py +38 -0
  108. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/storage_manager.py +81 -0
  109. fdc_shared_kernel-0.0.163/shared_kernel/interfaces/warehouse_connection.py +33 -0
  110. fdc_shared_kernel-0.0.163/shared_kernel/logger/__init__.py +269 -0
  111. fdc_shared_kernel-0.0.163/shared_kernel/messaging/__init__.py +22 -0
  112. fdc_shared_kernel-0.0.163/shared_kernel/messaging/aws_databus.py +138 -0
  113. fdc_shared_kernel-0.0.163/shared_kernel/messaging/azure_databus.py +124 -0
  114. fdc_shared_kernel-0.0.163/shared_kernel/messaging/http_databus.py +140 -0
  115. fdc_shared_kernel-0.0.163/shared_kernel/messaging/nats_databus.py +329 -0
  116. fdc_shared_kernel-0.0.163/shared_kernel/messaging/nats_publisher.py +20 -0
  117. fdc_shared_kernel-0.0.163/shared_kernel/messaging/nats_test.py +24 -0
  118. fdc_shared_kernel-0.0.163/shared_kernel/messaging/utils/aws_utility.py +435 -0
  119. fdc_shared_kernel-0.0.163/shared_kernel/messaging/utils/azure_utility.py +335 -0
  120. fdc_shared_kernel-0.0.163/shared_kernel/messaging/utils/event_messages.py +232 -0
  121. fdc_shared_kernel-0.0.163/shared_kernel/metrics/__init__.py +1 -0
  122. fdc_shared_kernel-0.0.163/shared_kernel/metrics/status_tracker.py +16 -0
  123. fdc_shared_kernel-0.0.163/shared_kernel/models/__init__.py +0 -0
  124. fdc_shared_kernel-0.0.163/shared_kernel/registries/__init__.py +1 -0
  125. fdc_shared_kernel-0.0.163/shared_kernel/registries/schema_onboarding_event_registry.py +67 -0
  126. fdc_shared_kernel-0.0.163/shared_kernel/registries/service_event_registry.py +66 -0
  127. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/__init__.py +18 -0
  128. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/base_tracker.py +75 -0
  129. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/enums.py +34 -0
  130. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/exceptions.py +57 -0
  131. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/run_manager.py +135 -0
  132. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/schema_onboarding_tracker.py +231 -0
  133. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/shared_helpers.py +61 -0
  134. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/task_determination.py +184 -0
  135. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/task_helpers.py +61 -0
  136. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/task_manager.py +193 -0
  137. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/template_manager.py +92 -0
  138. fdc_shared_kernel-0.0.163/shared_kernel/schema_onboarding_tracker/utility_manager.py +109 -0
  139. fdc_shared_kernel-0.0.163/shared_kernel/security/__init__.py +1 -0
  140. fdc_shared_kernel-0.0.163/shared_kernel/security/key_vault/__init__.py +15 -0
  141. fdc_shared_kernel-0.0.163/shared_kernel/security/key_vault/aws_secret_manager.py +107 -0
  142. fdc_shared_kernel-0.0.163/shared_kernel/security/key_vault/azure_keyvault.py +85 -0
  143. fdc_shared_kernel-0.0.163/shared_kernel/status_tracker/__init__.py +1 -0
  144. fdc_shared_kernel-0.0.163/shared_kernel/status_tracker/status_tracker.py +200 -0
  145. fdc_shared_kernel-0.0.163/shared_kernel/storage_handlers/__init__.py +0 -0
  146. fdc_shared_kernel-0.0.163/shared_kernel/storage_handlers/blob_file_handler.py +80 -0
  147. fdc_shared_kernel-0.0.163/shared_kernel/storage_handlers/s3_storage_handler.py +76 -0
  148. fdc_shared_kernel-0.0.163/shared_kernel/tests/__init__.py +0 -0
  149. fdc_shared_kernel-0.0.163/shared_kernel/tests/config/__init__.py +0 -0
  150. fdc_shared_kernel-0.0.163/shared_kernel/tests/config/test_config.py +57 -0
  151. fdc_shared_kernel-0.0.163/shared_kernel/tests/logger/__init__.py +0 -0
  152. fdc_shared_kernel-0.0.163/shared_kernel/tests/logger/test_logger.py +68 -0
  153. fdc_shared_kernel-0.0.163/shared_kernel/tests/messaging/__init__.py +0 -0
  154. fdc_shared_kernel-0.0.163/shared_kernel/tests/messaging/test_aws_databus.py +68 -0
  155. fdc_shared_kernel-0.0.163/shared_kernel/tests/messaging/test_event_executor.py +105 -0
  156. fdc_shared_kernel-0.0.163/shared_kernel/tests/messaging/test_nats_interface.py +40 -0
  157. fdc_shared_kernel-0.0.163/shared_kernel/tests/utils/__init__.py +0 -0
  158. fdc_shared_kernel-0.0.163/shared_kernel/tests/utils/test_data_validators.py +18 -0
  159. fdc_shared_kernel-0.0.163/shared_kernel/tests/utils/test_date_format_utils.py +20 -0
  160. fdc_shared_kernel-0.0.163/shared_kernel/tests/utils/test_string_utils.py +28 -0
  161. fdc_shared_kernel-0.0.163/shared_kernel/traceability/__init__.py +1 -0
  162. fdc_shared_kernel-0.0.163/shared_kernel/traceability/traceability_handler.py +107 -0
  163. fdc_shared_kernel-0.0.163/shared_kernel/utils/__init__.py +3 -0
  164. fdc_shared_kernel-0.0.163/shared_kernel/utils/data_validators_utils.py +15 -0
  165. fdc_shared_kernel-0.0.163/shared_kernel/utils/date_format_utils.py +13 -0
  166. fdc_shared_kernel-0.0.163/shared_kernel/utils/date_utils.py +5 -0
  167. fdc_shared_kernel-0.0.163/shared_kernel/utils/string_utils.py +28 -0
  168. fdc_shared_kernel-0.0.163/shared_kernel/utils/template_renderer.py +73 -0
  169. fdc_shared_kernel-0.0.163/shared_kernel/utils/thread_debug_utils.py +43 -0
  170. fdc_shared_kernel-0.0.163/shared_kernel/utils/thread_local_storage.py +63 -0
  171. fdc_shared_kernel-0.0.163/shared_kernel/utils/thread_log_traker.py +47 -0
  172. fdc_shared_kernel-0.0.163/tests/__init__.py +3 -0
  173. fdc_shared_kernel-0.0.163/tests/messaging/__init__.py +3 -0
  174. fdc_shared_kernel-0.0.163/tests/messaging/utils/__init__.py +3 -0
  175. fdc_shared_kernel-0.0.163/tests/messaging/utils/test_aws_utility.py +247 -0
  176. fdc_shared_kernel-0.0.163/tests/test_job_executor.py +150 -0
@@ -0,0 +1,232 @@
1
+ Metadata-Version: 2.4
2
+ Name: fdc_shared_kernel
3
+ Version: 0.0.163
4
+ Summary: Shared library for microservice
5
+ Author-email: Shikhil S <shikhil.s@dbizsolution.com>, Ahammed Akdham N <ahammedakdham.n@dbizsolution.com>
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: License :: OSI Approved :: MIT License
8
+ Classifier: Operating System :: OS Independent
9
+ Requires-Python: >=3.7
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: alembic==1.13.2
12
+ Requires-Dist: asynctest==0.13.0
13
+ Requires-Dist: build==1.2.1
14
+ Requires-Dist: colorama==0.4.6
15
+ Requires-Dist: greenlet==3.0.3
16
+ Requires-Dist: iniconfig==2.0.0
17
+ Requires-Dist: Mako==1.3.5
18
+ Requires-Dist: MarkupSafe==2.1.5
19
+ Requires-Dist: nats-py==2.8.0
20
+ Requires-Dist: packaging==24.1
21
+ Requires-Dist: pluggy==1.5.0
22
+ Requires-Dist: psycopg2-binary==2.9.9
23
+ Requires-Dist: pytest==8.2.2
24
+ Requires-Dist: pytest-asyncio==0.23.8
25
+ Requires-Dist: python-dotenv==1.0.1
26
+ Requires-Dist: setuptools==71.0.0
27
+ Requires-Dist: SQLAlchemy==1.4.54
28
+ Requires-Dist: sqlalchemy-redshift==0.8.14
29
+ Requires-Dist: typing_extensions==4.12.2
30
+ Requires-Dist: boto3==1.35.4
31
+ Requires-Dist: azure-keyvault-secrets==4.8.0
32
+ Requires-Dist: twine==5.1.1
33
+ Requires-Dist: httpx==0.27.0
34
+ Requires-Dist: azure-identity==1.17.1
35
+ Requires-Dist: azure-servicebus==7.14.2
36
+ Requires-Dist: azure-mgmt-eventgrid==10.4.0
37
+ Requires-Dist: azure-mgmt-servicebus==9.0.0
38
+ Requires-Dist: azure-eventgrid==4.22.0
39
+ Requires-Dist: azure-storage-blob==12.26.0
40
+ Requires-Dist: azure-batch==14.2.0
41
+ Requires-Dist: azure-data-tables==12.7.0
42
+ Requires-Dist: azure-storage-queue==12.13.0
43
+ Requires-Dist: pyodbc==5.1.0
44
+ Requires-Dist: redshift_connector==2.1.2
45
+ Requires-Dist: pypika
46
+ Requires-Dist: snowflake-connector-python==3.16.0
47
+
48
+ # FDC Shared Kernel
49
+
50
+ Shared Kernel is a lightweight, modular Python library designed to facilitate rapid development of microservices. It provides essential utilities for data manipulation, logging, configuration management, and database connectivity, making it an ideal foundation for building scalable and maintainable microservices.
51
+
52
+ ## Table of Contents
53
+
54
+ - [Getting Started](#getting-started)
55
+ - [Prerequisites](#prerequisites)
56
+ - [Installation](#installation)
57
+ - [Usage](#usage)
58
+ - [Importing Modules](#importing-modules)
59
+ - [Initializing Database Connection](#initializing-database-connection)
60
+
61
+
62
+ ## Getting Started
63
+
64
+ ### Prerequisites
65
+
66
+ - Python 3.6+
67
+ - Pip
68
+
69
+ ### Installation
70
+
71
+ To install Shared Kernel, clone the repository and install it using pip:
72
+
73
+ ```sh
74
+ pip install fdc-shared-kernel
75
+ ```
76
+
77
+ ## Usage
78
+
79
+ ### Importing Modules
80
+
81
+ Import the required modules from Shared Kernel into your project:
82
+
83
+ ```
84
+ from shared_kernel.logger import Logger
85
+ from shared_kernel.config import Config
86
+ from dotenv import find_dotenv
87
+
88
+
89
+ def main():
90
+ logger = Logger(name="my_app")
91
+ logger.configure_logger()
92
+
93
+ # Specify the path to the .env file if it's not in the current directory
94
+ config_manager = Config(env_path=find_dotenv())
95
+
96
+ # Access environment variables
97
+ api_key = config_manager.get("KEY", "default_api_key")
98
+
99
+ # Example usage
100
+ logger.logger.info("This is an info message.")
101
+ logger.logger.error("This is an error message.")
102
+ logger.logger.info(api_key)
103
+
104
+
105
+ if __name__ == "__main__":
106
+ main()
107
+
108
+ ```
109
+
110
+
111
+ ### Initializing Database Connection
112
+
113
+ Use the `DB` class to initialize a database connection:
114
+
115
+ ```
116
+ from shared_kernel.DB import DB
117
+
118
+ db_instance = DB("postgresql://user:password@localhost/dbname")
119
+ engine, SessionLocal = db_instance.init_db_connection()
120
+
121
+ ```
122
+
123
+
124
+
125
+
126
+ ### Initializing NATS Connection
127
+
128
+ Use the `NATSClient` class to initialize:
129
+
130
+ ```
131
+ from shared_kernel.messaging import NATSClient
132
+ import asyncio
133
+
134
+ def run():
135
+ nats_instance = NATSClient("nats://localhost:4222")
136
+ await nc_interface.connect()
137
+
138
+ async def message_callback(data):
139
+ print(f"Received a message: {data}")
140
+
141
+ await nc_interface.subscribe("example_subject", message_callback)
142
+ await nc_interface.publish("example_subject", "Hello NATS!")
143
+
144
+ if __name__ == '__main__':
145
+ asyncio.run(run())
146
+ ```
147
+
148
+
149
+ ### Using Keyvault Manager
150
+
151
+ Use the `KeyVaultManager` class to initialize:
152
+
153
+ ```
154
+ from shared_kernel.security import KeyVaultManager
155
+
156
+ def run():
157
+ aws_vault = KeyVaultManager.create_key_vault('aws', {
158
+ 'region_name': 'us-east-1',
159
+ 'AWS_SERVER_PUBLIC_KEY': '<key here>',
160
+ 'AWS_SERVER_SECRET_KEY': '<secret here>'
161
+ })
162
+ # AWS Secrets Manager operations
163
+ aws_vault.store_secret("fdc_api_key", "123456")
164
+
165
+ print(aws_vault.retrieve_secret("fdc_api_key")) # Output: 123456
166
+
167
+ print(aws_vault.list_secrets()) # Output: ['fdc_api_key']
168
+
169
+ aws_vault.delete_secret("api_key")
170
+ print(aws_vault.list_secrets()) # Output: []
171
+ if __name__ == '__main__':
172
+ run()
173
+ ```
174
+
175
+
176
+ ### Using JWT Token handler
177
+
178
+ Use the `JWTTokenHandler` class to initialize:
179
+
180
+ ```
181
+ from shared_kernel.security import JWTTokenHandler
182
+
183
+ def run():
184
+ secret_key = 'your-secret-key'
185
+ token_handler = JWTTokenHandler(secret_key)
186
+ payload = token_handler.decode_token('your-jwt-token')
187
+
188
+ if __name__ == '__main__':
189
+ run()
190
+ ```
191
+
192
+ ### Using JWTTokenHandler
193
+
194
+ Use the `JWTTokenHandler` class to initialize:
195
+
196
+ ```
197
+ from shared_kernel.auth import JWTTokenHandler
198
+
199
+ def run():
200
+ secret_key = 'your-secret-key'
201
+ token_handler = JWTTokenHandler(secret_key)
202
+ payload = token_handler.decode_token('your-jwt-token')
203
+ if __name__ == '__main__':
204
+ run()
205
+ ```
206
+
207
+ In routes
208
+
209
+ ```
210
+ from shared_kernel.auth import token_required
211
+
212
+ @app.route('/')
213
+ @token_required
214
+ def user(current_user):
215
+ return jsonify(current_user)
216
+ ```
217
+
218
+
219
+ ### Using HTTP Client
220
+
221
+ Use the `HttpClient` class to initialize:
222
+
223
+ ```
224
+ from shared_kernel.http import HttpClient
225
+
226
+ def run():
227
+ client = HttpClient()
228
+ response_data = client.get("https://api.example.com/data")
229
+ print(response_data)
230
+ if __name__ == '__main__':
231
+ run()
232
+ ```
@@ -0,0 +1,218 @@
1
+ # Shared Kernel
2
+
3
+ Shared Kernel is a lightweight, modular Python library designed to facilitate rapid development of microservices. It provides essential utilities for data manipulation, logging, configuration management, and database connectivity, making it an ideal foundation for building scalable and maintainable microservices.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Getting Started](#getting-started)
8
+ - [Prerequisites](#prerequisites)
9
+ - [Installation](#installation)
10
+ - [Usage](#usage)
11
+ - [Importing Modules](#importing-modules)
12
+ - [Initializing Database Connection](#initializing-database-connection)
13
+
14
+
15
+ ## Getting Started
16
+
17
+ ### Prerequisites
18
+
19
+ - Python 3.6+
20
+ - Pip
21
+
22
+ ### Installation
23
+
24
+ To install Shared Kernel, clone the repository and install it using pip:
25
+
26
+ ```sh
27
+ git clone https://bitbucket.org/Weavers/shared-kernel.git
28
+ cd shared-kernel pip install .
29
+ ```
30
+
31
+ ##### Step 1: Set Up Your Environment
32
+ First, ensure you have Python installed on your system. Then, set up a virtual environment for your project to manage dependencies cleanly. Open your terminal and navigate to your project directory:
33
+
34
+ ```sh
35
+ cd path/to/shared-kernel
36
+ python -m venv venv
37
+ source venv/bin/activate # On Windows, use `venv\Scripts\activate`
38
+ ```
39
+
40
+ ##### Step 2: Install Python build frontend.
41
+ Ensure you python's build frontend. installed in your environment. This is necessary for building the wheel package from **.toml** file. You can install them using pip:
42
+ ```sh
43
+ pip install --upgrade build
44
+ ```
45
+
46
+ ##### Step 3: Build the Wheel Package
47
+ ```sh
48
+ python -m build
49
+ ```
50
+ This command will build a wheel distribution and also a source distribution. After running this command, you'll find the .whl and a tar file inside the dist/ directory within your project folder.
51
+
52
+
53
+ ##### Step 4: Distribute the Wheel
54
+ Now that you have a .whl file, you can distribute it to others. Users can install your library using pip by pointing to the .whl file:
55
+
56
+ ```sh
57
+ pip install dist/shared_kernel-0.1.0-py3-none-any.whl
58
+ ```
59
+
60
+
61
+ ## Usage
62
+
63
+ ### Importing Modules
64
+
65
+ Import the required modules from Shared Kernel into your project:
66
+
67
+ ```
68
+ from shared_kernel.logger import Logger
69
+ from shared_kernel.config import Config
70
+ from dotenv import find_dotenv
71
+
72
+
73
+ def main():
74
+ logger = Logger(name="my_app")
75
+ logger.configure_logger()
76
+
77
+ # Specify the path to the .env file if it's not in the current directory
78
+ config_manager = Config(env_path=find_dotenv())
79
+
80
+ # Access environment variables
81
+ api_key = config_manager.get("KEY", "default_api_key")
82
+
83
+ # Example usage
84
+ logger.logger.info("This is an info message.")
85
+ logger.logger.error("This is an error message.")
86
+ logger.logger.info(api_key)
87
+
88
+
89
+ if __name__ == "__main__":
90
+ main()
91
+
92
+ ```
93
+
94
+
95
+ ### Initializing Database Connection
96
+
97
+ Use the `DB` class to initialize a database connection:
98
+
99
+ ```
100
+ from shared_kernel.DB import DB
101
+
102
+ db_instance = DB("postgresql://user:password@localhost/dbname")
103
+ engine, SessionLocal = db_instance.init_db_connection()
104
+
105
+ ```
106
+
107
+
108
+
109
+
110
+ ### Initializing NATS Connection
111
+
112
+ Use the `NATSClient` class to initialize:
113
+
114
+ ```
115
+ from shared_kernel.messaging import NATSClient
116
+ import asyncio
117
+
118
+ def run():
119
+ nats_instance = NATSClient("nats://localhost:4222")
120
+ await nc_interface.connect()
121
+
122
+ async def message_callback(data):
123
+ print(f"Received a message: {data}")
124
+
125
+ await nc_interface.subscribe("example_subject", message_callback)
126
+ await nc_interface.publish("example_subject", "Hello NATS!")
127
+
128
+ if __name__ == '__main__':
129
+ asyncio.run(run())
130
+ ```
131
+
132
+
133
+ ### Using Keyvault Manager
134
+
135
+ Use the `KeyVaultManager` class to initialize:
136
+
137
+ ```
138
+ from shared_kernel.security import KeyVaultManager
139
+
140
+ def run():
141
+ aws_vault = KeyVaultManager.create_key_vault('aws', {
142
+ 'region_name': 'us-east-1',
143
+ 'AWS_SERVER_PUBLIC_KEY': '<key here>',
144
+ 'AWS_SERVER_SECRET_KEY': '<secret here>'
145
+ })
146
+ # AWS Secrets Manager operations
147
+ aws_vault.store_secret("fdc_api_key", "123456")
148
+
149
+ print(aws_vault.retrieve_secret("fdc_api_key")) # Output: 123456
150
+
151
+ print(aws_vault.list_secrets()) # Output: ['fdc_api_key']
152
+
153
+ aws_vault.delete_secret("api_key")
154
+ print(aws_vault.list_secrets()) # Output: []
155
+ if __name__ == '__main__':
156
+ run()
157
+ ```
158
+
159
+
160
+ ### Using JWT Token handler
161
+
162
+ Use the `JWTTokenHandler` class to initialize:
163
+
164
+ ```
165
+ from shared_kernel.security import JWTTokenHandler
166
+
167
+ def run():
168
+ secret_key = 'your-secret-key'
169
+ token_handler = JWTTokenHandler(secret_key)
170
+ payload = token_handler.decode_token('your-jwt-token')
171
+
172
+ if __name__ == '__main__':
173
+ run()
174
+ ```
175
+
176
+ ### Using JWTTokenHandler
177
+
178
+ Use the `JWTTokenHandler` class to initialize:
179
+
180
+ ```
181
+ from shared_kernel.auth import JWTTokenHandler
182
+
183
+ def run():
184
+ secret_key = 'your-secret-key'
185
+ token_handler = JWTTokenHandler(secret_key)
186
+ payload = token_handler.decode_token('your-jwt-token')
187
+ if __name__ == '__main__':
188
+ run()
189
+ ```
190
+
191
+ In routes
192
+
193
+ ```
194
+ from shared_kernel.auth import token_required
195
+
196
+ @app.route('/')
197
+ @token_required
198
+ def user(current_user):
199
+ return jsonify(current_user)
200
+ ```
201
+
202
+
203
+
204
+ ### Using HTTP Client
205
+
206
+ Use the `HttpClient` class to initialize:
207
+
208
+ ```
209
+ from shared_kernel.http import HttpClient
210
+
211
+ def run():
212
+ client = HttpClient()
213
+ response_data = client.get("https://api.example.com/data")
214
+ print(response_data)
215
+ if __name__ == '__main__':
216
+ run()
217
+ ```
218
+
@@ -0,0 +1,185 @@
1
+ # FDC Shared Kernel
2
+
3
+ Shared Kernel is a lightweight, modular Python library designed to facilitate rapid development of microservices. It provides essential utilities for data manipulation, logging, configuration management, and database connectivity, making it an ideal foundation for building scalable and maintainable microservices.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Getting Started](#getting-started)
8
+ - [Prerequisites](#prerequisites)
9
+ - [Installation](#installation)
10
+ - [Usage](#usage)
11
+ - [Importing Modules](#importing-modules)
12
+ - [Initializing Database Connection](#initializing-database-connection)
13
+
14
+
15
+ ## Getting Started
16
+
17
+ ### Prerequisites
18
+
19
+ - Python 3.6+
20
+ - Pip
21
+
22
+ ### Installation
23
+
24
+ To install Shared Kernel, clone the repository and install it using pip:
25
+
26
+ ```sh
27
+ pip install fdc-shared-kernel
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ ### Importing Modules
33
+
34
+ Import the required modules from Shared Kernel into your project:
35
+
36
+ ```
37
+ from shared_kernel.logger import Logger
38
+ from shared_kernel.config import Config
39
+ from dotenv import find_dotenv
40
+
41
+
42
+ def main():
43
+ logger = Logger(name="my_app")
44
+ logger.configure_logger()
45
+
46
+ # Specify the path to the .env file if it's not in the current directory
47
+ config_manager = Config(env_path=find_dotenv())
48
+
49
+ # Access environment variables
50
+ api_key = config_manager.get("KEY", "default_api_key")
51
+
52
+ # Example usage
53
+ logger.logger.info("This is an info message.")
54
+ logger.logger.error("This is an error message.")
55
+ logger.logger.info(api_key)
56
+
57
+
58
+ if __name__ == "__main__":
59
+ main()
60
+
61
+ ```
62
+
63
+
64
+ ### Initializing Database Connection
65
+
66
+ Use the `DB` class to initialize a database connection:
67
+
68
+ ```
69
+ from shared_kernel.DB import DB
70
+
71
+ db_instance = DB("postgresql://user:password@localhost/dbname")
72
+ engine, SessionLocal = db_instance.init_db_connection()
73
+
74
+ ```
75
+
76
+
77
+
78
+
79
+ ### Initializing NATS Connection
80
+
81
+ Use the `NATSClient` class to initialize:
82
+
83
+ ```
84
+ from shared_kernel.messaging import NATSClient
85
+ import asyncio
86
+
87
+ def run():
88
+ nats_instance = NATSClient("nats://localhost:4222")
89
+ await nc_interface.connect()
90
+
91
+ async def message_callback(data):
92
+ print(f"Received a message: {data}")
93
+
94
+ await nc_interface.subscribe("example_subject", message_callback)
95
+ await nc_interface.publish("example_subject", "Hello NATS!")
96
+
97
+ if __name__ == '__main__':
98
+ asyncio.run(run())
99
+ ```
100
+
101
+
102
+ ### Using Keyvault Manager
103
+
104
+ Use the `KeyVaultManager` class to initialize:
105
+
106
+ ```
107
+ from shared_kernel.security import KeyVaultManager
108
+
109
+ def run():
110
+ aws_vault = KeyVaultManager.create_key_vault('aws', {
111
+ 'region_name': 'us-east-1',
112
+ 'AWS_SERVER_PUBLIC_KEY': '<key here>',
113
+ 'AWS_SERVER_SECRET_KEY': '<secret here>'
114
+ })
115
+ # AWS Secrets Manager operations
116
+ aws_vault.store_secret("fdc_api_key", "123456")
117
+
118
+ print(aws_vault.retrieve_secret("fdc_api_key")) # Output: 123456
119
+
120
+ print(aws_vault.list_secrets()) # Output: ['fdc_api_key']
121
+
122
+ aws_vault.delete_secret("api_key")
123
+ print(aws_vault.list_secrets()) # Output: []
124
+ if __name__ == '__main__':
125
+ run()
126
+ ```
127
+
128
+
129
+ ### Using JWT Token handler
130
+
131
+ Use the `JWTTokenHandler` class to initialize:
132
+
133
+ ```
134
+ from shared_kernel.security import JWTTokenHandler
135
+
136
+ def run():
137
+ secret_key = 'your-secret-key'
138
+ token_handler = JWTTokenHandler(secret_key)
139
+ payload = token_handler.decode_token('your-jwt-token')
140
+
141
+ if __name__ == '__main__':
142
+ run()
143
+ ```
144
+
145
+ ### Using JWTTokenHandler
146
+
147
+ Use the `JWTTokenHandler` class to initialize:
148
+
149
+ ```
150
+ from shared_kernel.auth import JWTTokenHandler
151
+
152
+ def run():
153
+ secret_key = 'your-secret-key'
154
+ token_handler = JWTTokenHandler(secret_key)
155
+ payload = token_handler.decode_token('your-jwt-token')
156
+ if __name__ == '__main__':
157
+ run()
158
+ ```
159
+
160
+ In routes
161
+
162
+ ```
163
+ from shared_kernel.auth import token_required
164
+
165
+ @app.route('/')
166
+ @token_required
167
+ def user(current_user):
168
+ return jsonify(current_user)
169
+ ```
170
+
171
+
172
+ ### Using HTTP Client
173
+
174
+ Use the `HttpClient` class to initialize:
175
+
176
+ ```
177
+ from shared_kernel.http import HttpClient
178
+
179
+ def run():
180
+ client = HttpClient()
181
+ response_data = client.get("https://api.example.com/data")
182
+ print(response_data)
183
+ if __name__ == '__main__':
184
+ run()
185
+ ```