neuroglia-python 0.0.23__tar.gz → 0.1.0__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.
- neuroglia_python-0.1.0/PKG-INFO +50 -0
- neuroglia_python-0.1.0/README.md +19 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/pyproject.toml +3 -1
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/event_sourcing/abstractions.py +21 -1
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/event_sourcing/event_store/event_store.py +9 -2
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/event_sourcing/read_model_reconciliator.py +2 -2
- neuroglia_python-0.0.23/PKG-INFO +0 -127
- neuroglia_python-0.0.23/README.md +0 -98
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/LICENSE +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/core/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/core/module_loader.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/core/operation_result.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/core/problem_details.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/core/type_extensions.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/core/type_finder.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/abstractions.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/abstractions.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/event_sourcing/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/event_sourcing/event_sourcing_repository.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/event_sourcing/event_store/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/memory/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/memory/memory_repository.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/mongo/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/mongo/mongo_repository.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/queries/generic/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/queries/generic/get_by_id_query.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/queries/generic/list_query.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/queryable.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/dependency_injection/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/dependency_injection/service_provider.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/cloud_event.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/decorators.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/infrastructure/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/infrastructure/cloud_event_bus.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/infrastructure/cloud_event_ingestor.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/infrastructure/cloud_event_middleware.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/infrastructure/cloud_event_publisher.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/expressions/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/expressions/javascript_expression_translator.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/hosting/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/hosting/abstractions.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/hosting/configuration/data_access_layer.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/hosting/web.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/integration/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/integration/models.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/mapping/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/mapping/mapper.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/mediation/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/mediation/mediator.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/mvc/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/mvc/controller_base.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/reactive/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/reactive/rx_async.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/serialization/__init__.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/serialization/abstractions.py +0 -0
- {neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/serialization/json.py +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: neuroglia-python
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Port from .NET to Python of the Neuroglia Framework
|
|
5
|
+
License: Apache
|
|
6
|
+
Author: Charles d'Avernas
|
|
7
|
+
Author-email: charles.davernas@neuroglia.io
|
|
8
|
+
Requires-Python: >=3.12,<4.0
|
|
9
|
+
Classifier: License :: Other/Proprietary License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Requires-Dist: annotated-types (>=0.6.0,<0.7.0)
|
|
14
|
+
Requires-Dist: classy-fastapi (>=0.6.1,<0.7.0)
|
|
15
|
+
Requires-Dist: esdbclient (>=1.0.17,<2.0.0)
|
|
16
|
+
Requires-Dist: fastapi (>=0.109.2,<0.110.0)
|
|
17
|
+
Requires-Dist: grpcio (>=1.60.1,<2.0.0)
|
|
18
|
+
Requires-Dist: httpx (>=0.26.0,<0.27.0)
|
|
19
|
+
Requires-Dist: mkdocs (>=1.6.1,<2.0.0)
|
|
20
|
+
Requires-Dist: mkdocs-material (>=9.5.46,<10.0.0)
|
|
21
|
+
Requires-Dist: multipledispatch (>=1.0.0,<2.0.0)
|
|
22
|
+
Requires-Dist: pydantic-settings (>=2.2.0,<3.0.0)
|
|
23
|
+
Requires-Dist: pymongo (>=4.6.1,<5.0.0)
|
|
24
|
+
Requires-Dist: pytest (>=8.1.1,<9.0.0)
|
|
25
|
+
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
|
26
|
+
Requires-Dist: rx (>=3.2.0,<4.0.0)
|
|
27
|
+
Requires-Dist: typing-extensions (>=4.9.0,<5.0.0)
|
|
28
|
+
Requires-Dist: uvicorn (>=0.27.1,<0.28.0)
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# Neuroglia Python Framework
|
|
32
|
+
|
|
33
|
+
A framework of libraries used to build modern Python V3 applications
|
|
34
|
+
|
|
35
|
+
## Disclaimer
|
|
36
|
+
|
|
37
|
+
This project was the opportunity for me (cdavernas) to learn Python while porting some of the concepts and services of the .NET version of the Neuroglia Framework
|
|
38
|
+
|
|
39
|
+
## Packaging
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
# Set the version tag in pyproject.toml
|
|
43
|
+
# Commit changes
|
|
44
|
+
|
|
45
|
+
poetry build
|
|
46
|
+
|
|
47
|
+
poetry publish --repository gitlab -u <token-username> -p <token-password>
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Neuroglia Python Framework
|
|
2
|
+
|
|
3
|
+
A framework of libraries used to build modern Python V3 applications
|
|
4
|
+
|
|
5
|
+
## Disclaimer
|
|
6
|
+
|
|
7
|
+
This project was the opportunity for me (cdavernas) to learn Python while porting some of the concepts and services of the .NET version of the Neuroglia Framework
|
|
8
|
+
|
|
9
|
+
## Packaging
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
# Set the version tag in pyproject.toml
|
|
13
|
+
# Commit changes
|
|
14
|
+
|
|
15
|
+
poetry build
|
|
16
|
+
|
|
17
|
+
poetry publish --repository gitlab -u <token-username> -p <token-password>
|
|
18
|
+
|
|
19
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "neuroglia-python"
|
|
3
|
-
version = "0.0
|
|
3
|
+
version = "0.1.0"
|
|
4
4
|
description = "Port from .NET to Python of the Neuroglia Framework"
|
|
5
5
|
authors = ["Charles d'Avernas <charles.davernas@neuroglia.io>"]
|
|
6
6
|
license = "Apache"
|
|
@@ -25,6 +25,8 @@ rx = "^3.2.0"
|
|
|
25
25
|
uvicorn = "^0.27.1"
|
|
26
26
|
typing-extensions = "^4.9.0"
|
|
27
27
|
pytest = "^8.1.1"
|
|
28
|
+
mkdocs = "^1.6.1"
|
|
29
|
+
mkdocs-material = "^9.5.46"
|
|
28
30
|
|
|
29
31
|
[tool.poetry.group.dev.dependencies]
|
|
30
32
|
pytest = "^8.0.1"
|
|
@@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
|
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
from datetime import datetime
|
|
4
4
|
from enum import Enum
|
|
5
|
-
from typing import Any, List, Optional, Type
|
|
5
|
+
from typing import Any, Callable, List, Optional, Type
|
|
6
6
|
from neuroglia.data.abstractions import AggregateRoot
|
|
7
7
|
|
|
8
8
|
|
|
@@ -69,6 +69,23 @@ class EventRecord:
|
|
|
69
69
|
''' Gets a boolean indicating whether or not the recorded event is being replayed to its consumer/consumer group '''
|
|
70
70
|
|
|
71
71
|
|
|
72
|
+
@dataclass
|
|
73
|
+
class AckableEventRecord(EventRecord):
|
|
74
|
+
''' Represents an ackable recorded event '''
|
|
75
|
+
|
|
76
|
+
_ack_delegate : Callable = None
|
|
77
|
+
|
|
78
|
+
_nack_delegate : Callable= None
|
|
79
|
+
|
|
80
|
+
async def ack_async(self) -> None:
|
|
81
|
+
''' Acks the event record '''
|
|
82
|
+
self._ack_delegate()
|
|
83
|
+
|
|
84
|
+
async def nack_async(self) -> None:
|
|
85
|
+
''' Nacks the event record'''
|
|
86
|
+
self._nack_delegate()
|
|
87
|
+
|
|
88
|
+
|
|
72
89
|
class StreamReadDirection(Enum):
|
|
73
90
|
''' Enumerates all directions in which a event sourcing stream can be read '''
|
|
74
91
|
FORWARDS = 0,
|
|
@@ -82,6 +99,9 @@ class EventStoreOptions:
|
|
|
82
99
|
|
|
83
100
|
database_name: str
|
|
84
101
|
''' Gets/sets the name of the database to use, if any '''
|
|
102
|
+
|
|
103
|
+
consumer_group: str
|
|
104
|
+
''' Gets/sets the name of the consumer group to use, if any '''
|
|
85
105
|
|
|
86
106
|
|
|
87
107
|
class EventStore(ABC):
|
|
@@ -3,10 +3,11 @@ import logging
|
|
|
3
3
|
import sys
|
|
4
4
|
import threading
|
|
5
5
|
from typing import Dict, List, Optional
|
|
6
|
+
from esdbclient.persistent import PersistentSubscription
|
|
6
7
|
import rx
|
|
7
8
|
from rx.disposable.disposable import Disposable
|
|
8
9
|
from neuroglia.data.abstractions import DomainEvent
|
|
9
|
-
from neuroglia.data.infrastructure.event_sourcing.abstractions import Aggregator, EventDescriptor, EventRecord, EventStore, EventStoreOptions, StreamDescriptor, StreamReadDirection
|
|
10
|
+
from neuroglia.data.infrastructure.event_sourcing.abstractions import AckableEventRecord, Aggregator, EventDescriptor, EventRecord, EventStore, EventStoreOptions, StreamDescriptor, StreamReadDirection
|
|
10
11
|
from neuroglia.hosting.abstractions import ApplicationBuilderBase
|
|
11
12
|
from neuroglia.serialization.json import JsonSerializer
|
|
12
13
|
from esdbclient import EventStoreDBClient, NewEvent, StreamState, RecordedEvent
|
|
@@ -98,8 +99,14 @@ class ESEventStore(EventStore):
|
|
|
98
99
|
else:
|
|
99
100
|
try:
|
|
100
101
|
self._eventstore_client.create_subscription_to_stream(stream_name=stream_name, resolve_links=True) # todo: persistence
|
|
102
|
+
# self._eventstore_client.create_subscription_to_stream(group_name = consumer_group, stream_name = stream_name, resolve_links = True, consumer_strategy = 'RoundRobin', min_checkpoint_count=1, max_checkpoint_count=1)
|
|
101
103
|
except AlreadyExists:
|
|
102
104
|
pass
|
|
105
|
+
# subscription = self._eventstore_client.read_subscription_to_stream(group_name = consumer_group, stream_name = stream_name)
|
|
106
|
+
|
|
107
|
+
try : self._eventstore_client.create_subscription_to_stream(group_name = consumer_group, stream_name = stream_name, resolve_links = True, consumer_strategy = 'RoundRobin', min_checkpoint_count=1, max_checkpoint_count=1)
|
|
108
|
+
except AlreadyExists: pass
|
|
109
|
+
|
|
103
110
|
subject = Subject()
|
|
104
111
|
thread = threading.Thread(target=self._consume_events_async, kwargs={'stream_id': stream_id, 'subject': subject, 'subscription': subscription})
|
|
105
112
|
thread.start()
|
|
@@ -144,7 +151,7 @@ class ESEventStore(EventStore):
|
|
|
144
151
|
e: RecordedEvent
|
|
145
152
|
for e in subscription:
|
|
146
153
|
try:
|
|
147
|
-
decoded_event = self._decode_recorded_event(stream_id, e)
|
|
154
|
+
decoded_event = self._decode_recorded_event(stream_id, e, subscription)
|
|
148
155
|
except Exception as ex:
|
|
149
156
|
logging.error(f"An exception occured while decoding event with offset '{e.stream_position}' from stream '{e.stream_name}': {ex}")
|
|
150
157
|
raise
|
|
@@ -2,7 +2,7 @@ import asyncio
|
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
import logging
|
|
4
4
|
from rx.core.typing import Disposable
|
|
5
|
-
from neuroglia.data.infrastructure.event_sourcing.abstractions import EventRecord, EventStore, EventStoreOptions
|
|
5
|
+
from neuroglia.data.infrastructure.event_sourcing.abstractions import AckableEventRecord, EventRecord, EventStore, EventStoreOptions
|
|
6
6
|
from neuroglia.dependency_injection.service_provider import ServiceProviderBase
|
|
7
7
|
from neuroglia.hosting.abstractions import HostedService
|
|
8
8
|
from neuroglia.mediation.mediator import Mediator
|
|
@@ -46,7 +46,7 @@ class ReadModelReconciliator(HostedService):
|
|
|
46
46
|
self._subscription.dispose()
|
|
47
47
|
|
|
48
48
|
async def subscribe_async(self):
|
|
49
|
-
observable = await self._event_store.observe_async(f'$ce-{self._event_store_options.database_name}')
|
|
49
|
+
observable = await self._event_store.observe_async(f'$ce-{self._event_store_options.database_name}', self._event_store_options.consumer_group)
|
|
50
50
|
self._subscription = AsyncRx.subscribe(observable, lambda e: asyncio.run(self.on_event_record_stream_next_async(e)))
|
|
51
51
|
|
|
52
52
|
async def on_event_record_stream_next_async(self, e: EventRecord):
|
neuroglia_python-0.0.23/PKG-INFO
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: neuroglia-python
|
|
3
|
-
Version: 0.0.23
|
|
4
|
-
Summary: Port from .NET to Python of the Neuroglia Framework
|
|
5
|
-
License: Apache
|
|
6
|
-
Author: Charles d'Avernas
|
|
7
|
-
Author-email: charles.davernas@neuroglia.io
|
|
8
|
-
Requires-Python: >=3.12,<4.0
|
|
9
|
-
Classifier: License :: Other/Proprietary License
|
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
-
Requires-Dist: annotated-types (>=0.6.0,<0.7.0)
|
|
14
|
-
Requires-Dist: classy-fastapi (>=0.6.1,<0.7.0)
|
|
15
|
-
Requires-Dist: esdbclient (>=1.0.17,<2.0.0)
|
|
16
|
-
Requires-Dist: fastapi (>=0.109.2,<0.110.0)
|
|
17
|
-
Requires-Dist: grpcio (>=1.60.1,<2.0.0)
|
|
18
|
-
Requires-Dist: httpx (>=0.26.0,<0.27.0)
|
|
19
|
-
Requires-Dist: multipledispatch (>=1.0.0,<2.0.0)
|
|
20
|
-
Requires-Dist: pydantic-settings (>=2.2.0,<3.0.0)
|
|
21
|
-
Requires-Dist: pymongo (>=4.6.1,<5.0.0)
|
|
22
|
-
Requires-Dist: pytest (>=8.1.1,<9.0.0)
|
|
23
|
-
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
|
24
|
-
Requires-Dist: rx (>=3.2.0,<4.0.0)
|
|
25
|
-
Requires-Dist: typing-extensions (>=4.9.0,<5.0.0)
|
|
26
|
-
Requires-Dist: uvicorn (>=0.27.1,<0.28.0)
|
|
27
|
-
Description-Content-Type: text/markdown
|
|
28
|
-
|
|
29
|
-
# Neuroglia Python Framework
|
|
30
|
-
|
|
31
|
-
A framework of libraries used to build modern Python V3 applications
|
|
32
|
-
|
|
33
|
-
## Disclaimer
|
|
34
|
-
|
|
35
|
-
This project was the opportunity for me (cdavernas) to learn Python while porting some of the concepts and services of the .NET version of the Neuroglia Framework
|
|
36
|
-
|
|
37
|
-
## Packaging
|
|
38
|
-
|
|
39
|
-
```sh
|
|
40
|
-
# Set the version tag in pyproject.toml
|
|
41
|
-
# Commit changes
|
|
42
|
-
|
|
43
|
-
poetry build
|
|
44
|
-
|
|
45
|
-
poetry publish --repository gitlab -u <token-username> -p <token-password>
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
_DRAFT_
|
|
52
|
-
|
|
53
|
-
## Developer Guide Structure
|
|
54
|
-
|
|
55
|
-
### Introduction
|
|
56
|
-
|
|
57
|
-
Briefly describe your framework, its purpose, and its target audience.
|
|
58
|
-
Highlight key features and benefits.
|
|
59
|
-
|
|
60
|
-
#### Installation:
|
|
61
|
-
|
|
62
|
-
Provide clear and step-by-step instructions on how to install your framework, including:
|
|
63
|
-
Prerequisites (e.g., Python version, dependencies)
|
|
64
|
-
Installation methods (e.g., pip install <framework_name>, source code compilation)
|
|
65
|
-
Virtual environment recommendations (for isolation and dependency management)
|
|
66
|
-
|
|
67
|
-
#### Getting Started:
|
|
68
|
-
|
|
69
|
-
Offer a simple "Hello, World!" or similar example to demonstrate basic usage and familiarize users with your framework's syntax and structure.
|
|
70
|
-
Include code snippets and explanations where necessary.
|
|
71
|
-
|
|
72
|
-
#### Core Concepts:
|
|
73
|
-
|
|
74
|
-
Dedicate this section to in-depth explanations of the fundamental building blocks and functionalities of your framework. This might include:
|
|
75
|
-
Key objects and classes within the framework
|
|
76
|
-
Data structures and design patterns employed
|
|
77
|
-
Architectural overview (e.g., MVC, MVVM) if applicable
|
|
78
|
-
|
|
79
|
-
#### Tutorials and Examples:
|
|
80
|
-
|
|
81
|
-
Provide a collection of well-structured, step-by-step tutorials that showcase how to accomplish common tasks using your framework.
|
|
82
|
-
Consider varying the difficulty levels (beginner, intermediate, advanced) to cater to a wide range of users.
|
|
83
|
-
Include code examples, explanations, and screenshots as needed.
|
|
84
|
-
|
|
85
|
-
#### API Reference:
|
|
86
|
-
|
|
87
|
-
Create a comprehensive reference for all available classes, functions, and modules within your framework.
|
|
88
|
-
Use a consistent format that includes the following information for each API element:
|
|
89
|
-
Name
|
|
90
|
-
Description
|
|
91
|
-
Arguments (with data types and descriptions)
|
|
92
|
-
Return values (with data types and descriptions)
|
|
93
|
-
Usage examples
|
|
94
|
-
|
|
95
|
-
#### Testing and Debugging:
|
|
96
|
-
|
|
97
|
-
Explain how to effectively test code written using your framework.
|
|
98
|
-
Recommend testing frameworks and tools.
|
|
99
|
-
Provide practical guidance on common debugging techniques and strategies.
|
|
100
|
-
|
|
101
|
-
#### Contributing:
|
|
102
|
-
|
|
103
|
-
Outline how developers can contribute to your framework's development.
|
|
104
|
-
Include information on:
|
|
105
|
-
Issue tracking system (e.g., GitHub issues)
|
|
106
|
-
Pull request guidelines
|
|
107
|
-
Coding style and conventions
|
|
108
|
-
Testing requirements
|
|
109
|
-
|
|
110
|
-
#### Community and Support:
|
|
111
|
-
|
|
112
|
-
Specify available resources for users to seek help and engage with the community. This could include:
|
|
113
|
-
Official channels (e.g., discussion forums, mailing lists)
|
|
114
|
-
Third-party resources (e.g., Stack Overflow tags, community blogs)
|
|
115
|
-
|
|
116
|
-
#### License:
|
|
117
|
-
|
|
118
|
-
Clearly state the license under which your framework is distributed.
|
|
119
|
-
|
|
120
|
-
#### Additional Tips:
|
|
121
|
-
|
|
122
|
-
Maintain a clear and concise writing style, using easy-to-understand language.
|
|
123
|
-
Ensure proper formatting and structure for readability.
|
|
124
|
-
Provide code snippets in a visually appealing format, using code blocks and syntax highlighting.
|
|
125
|
-
Consider adding screenshots or diagrams to illustrate complex concepts.
|
|
126
|
-
Regularly update the guide with new features, bug fixes, and best practices.
|
|
127
|
-
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
# Neuroglia Python Framework
|
|
2
|
-
|
|
3
|
-
A framework of libraries used to build modern Python V3 applications
|
|
4
|
-
|
|
5
|
-
## Disclaimer
|
|
6
|
-
|
|
7
|
-
This project was the opportunity for me (cdavernas) to learn Python while porting some of the concepts and services of the .NET version of the Neuroglia Framework
|
|
8
|
-
|
|
9
|
-
## Packaging
|
|
10
|
-
|
|
11
|
-
```sh
|
|
12
|
-
# Set the version tag in pyproject.toml
|
|
13
|
-
# Commit changes
|
|
14
|
-
|
|
15
|
-
poetry build
|
|
16
|
-
|
|
17
|
-
poetry publish --repository gitlab -u <token-username> -p <token-password>
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
_DRAFT_
|
|
24
|
-
|
|
25
|
-
## Developer Guide Structure
|
|
26
|
-
|
|
27
|
-
### Introduction
|
|
28
|
-
|
|
29
|
-
Briefly describe your framework, its purpose, and its target audience.
|
|
30
|
-
Highlight key features and benefits.
|
|
31
|
-
|
|
32
|
-
#### Installation:
|
|
33
|
-
|
|
34
|
-
Provide clear and step-by-step instructions on how to install your framework, including:
|
|
35
|
-
Prerequisites (e.g., Python version, dependencies)
|
|
36
|
-
Installation methods (e.g., pip install <framework_name>, source code compilation)
|
|
37
|
-
Virtual environment recommendations (for isolation and dependency management)
|
|
38
|
-
|
|
39
|
-
#### Getting Started:
|
|
40
|
-
|
|
41
|
-
Offer a simple "Hello, World!" or similar example to demonstrate basic usage and familiarize users with your framework's syntax and structure.
|
|
42
|
-
Include code snippets and explanations where necessary.
|
|
43
|
-
|
|
44
|
-
#### Core Concepts:
|
|
45
|
-
|
|
46
|
-
Dedicate this section to in-depth explanations of the fundamental building blocks and functionalities of your framework. This might include:
|
|
47
|
-
Key objects and classes within the framework
|
|
48
|
-
Data structures and design patterns employed
|
|
49
|
-
Architectural overview (e.g., MVC, MVVM) if applicable
|
|
50
|
-
|
|
51
|
-
#### Tutorials and Examples:
|
|
52
|
-
|
|
53
|
-
Provide a collection of well-structured, step-by-step tutorials that showcase how to accomplish common tasks using your framework.
|
|
54
|
-
Consider varying the difficulty levels (beginner, intermediate, advanced) to cater to a wide range of users.
|
|
55
|
-
Include code examples, explanations, and screenshots as needed.
|
|
56
|
-
|
|
57
|
-
#### API Reference:
|
|
58
|
-
|
|
59
|
-
Create a comprehensive reference for all available classes, functions, and modules within your framework.
|
|
60
|
-
Use a consistent format that includes the following information for each API element:
|
|
61
|
-
Name
|
|
62
|
-
Description
|
|
63
|
-
Arguments (with data types and descriptions)
|
|
64
|
-
Return values (with data types and descriptions)
|
|
65
|
-
Usage examples
|
|
66
|
-
|
|
67
|
-
#### Testing and Debugging:
|
|
68
|
-
|
|
69
|
-
Explain how to effectively test code written using your framework.
|
|
70
|
-
Recommend testing frameworks and tools.
|
|
71
|
-
Provide practical guidance on common debugging techniques and strategies.
|
|
72
|
-
|
|
73
|
-
#### Contributing:
|
|
74
|
-
|
|
75
|
-
Outline how developers can contribute to your framework's development.
|
|
76
|
-
Include information on:
|
|
77
|
-
Issue tracking system (e.g., GitHub issues)
|
|
78
|
-
Pull request guidelines
|
|
79
|
-
Coding style and conventions
|
|
80
|
-
Testing requirements
|
|
81
|
-
|
|
82
|
-
#### Community and Support:
|
|
83
|
-
|
|
84
|
-
Specify available resources for users to seek help and engage with the community. This could include:
|
|
85
|
-
Official channels (e.g., discussion forums, mailing lists)
|
|
86
|
-
Third-party resources (e.g., Stack Overflow tags, community blogs)
|
|
87
|
-
|
|
88
|
-
#### License:
|
|
89
|
-
|
|
90
|
-
Clearly state the license under which your framework is distributed.
|
|
91
|
-
|
|
92
|
-
#### Additional Tips:
|
|
93
|
-
|
|
94
|
-
Maintain a clear and concise writing style, using easy-to-understand language.
|
|
95
|
-
Ensure proper formatting and structure for readability.
|
|
96
|
-
Provide code snippets in a visually appealing format, using code blocks and syntax highlighting.
|
|
97
|
-
Consider adding screenshots or diagrams to illustrate complex concepts.
|
|
98
|
-
Regularly update the guide with new features, bug fixes, and best practices.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/__init__.py
RENAMED
|
File without changes
|
{neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/infrastructure/abstractions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/queries/generic/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/data/queries/generic/list_query.py
RENAMED
|
File without changes
|
|
File without changes
|
{neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/dependency_injection/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/eventing/cloud_events/decorators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{neuroglia_python-0.0.23 → neuroglia_python-0.1.0}/src/neuroglia/serialization/abstractions.py
RENAMED
|
File without changes
|
|
File without changes
|