saviialib 1.3.0__py3-none-any.whl → 1.5.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.
Potentially problematic release.
This version of saviialib might be problematic. Click here for more details.
- saviialib/__init__.py +73 -3
- saviialib/general_types/api/__init__.py +0 -3
- saviialib/general_types/api/{epii_api_types.py → saviia_api_types.py} +2 -38
- saviialib/general_types/api/saviia_backup_api_types.py +24 -0
- saviialib/general_types/api/saviia_netcamera_api_types.py +11 -0
- saviialib/general_types/api/saviia_shakes_api_types.py +21 -0
- saviialib/general_types/api/saviia_thies_api_types.py +31 -0
- saviialib/general_types/error_types/api/{epii_api_error_types.py → saviia_api_error_types.py} +8 -0
- saviialib/general_types/error_types/api/saviia_netcamera_error_types.py +7 -0
- saviialib/general_types/error_types/common/common_types.py +9 -0
- saviialib/libs/directory_client/client/os_client.py +1 -1
- saviialib/libs/ffmpeg_client/__init__.py +8 -0
- saviialib/libs/ffmpeg_client/clients/ffmpeg_asyncio_client.py +101 -0
- saviialib/libs/ffmpeg_client/ffmpeg_client.py +25 -0
- saviialib/libs/ffmpeg_client/ffmpeg_client_contract.py +12 -0
- saviialib/libs/ffmpeg_client/types/ffmpeg_client_types.py +28 -0
- saviialib/libs/sftp_client/__init__.py +8 -0
- saviialib/libs/sftp_client/clients/asyncssh_sftp_client.py +83 -0
- saviialib/libs/sftp_client/sftp_client.py +26 -0
- saviialib/libs/sftp_client/sftp_client_contract.py +13 -0
- saviialib/libs/sftp_client/types/sftp_client_types.py +24 -0
- saviialib/libs/sharepoint_client/clients/sharepoint_rest_api.py +7 -3
- saviialib/libs/zero_dependency/utils/strings_utils.py +5 -0
- saviialib/services/backup/api.py +36 -0
- saviialib/services/{epii → backup}/controllers/types/__init__.py +1 -1
- saviialib/services/{epii → backup}/controllers/types/upload_backup_to_sharepoint_types.py +2 -2
- saviialib/services/{epii → backup}/controllers/upload_backup_to_sharepoint.py +5 -5
- saviialib/services/{epii → backup}/use_cases/types/__init__.py +1 -1
- saviialib/services/{epii → backup}/use_cases/types/upload_backup_to_sharepoint_types.py +1 -1
- saviialib/services/{epii → backup}/use_cases/upload_backup_to_sharepoint.py +2 -2
- saviialib/services/backup/utils/__init__.py +3 -0
- saviialib/services/{epii → backup}/utils/upload_backup_to_sharepoint_utils.py +1 -1
- saviialib/services/netcamera/api.py +30 -0
- saviialib/services/netcamera/controllers/get_media_files.py +40 -0
- saviialib/services/netcamera/controllers/types/get_media_files_types.py +16 -0
- saviialib/services/netcamera/use_cases/get_media_files.py +76 -0
- saviialib/services/netcamera/use_cases/types/get_media_files_types.py +18 -0
- saviialib/services/shakes/__init__.py +0 -0
- saviialib/services/shakes/api.py +31 -0
- saviialib/services/shakes/controllers/get_miniseed_files.py +48 -0
- saviialib/services/shakes/controllers/types/get_miniseed_files_types.py +16 -0
- saviialib/services/shakes/use_cases/get_miniseed_files.py +79 -0
- saviialib/services/shakes/use_cases/types/get_miniseed_files_types.py +18 -0
- saviialib/services/shakes/use_cases/utils/get_miniseed_files_utils.py +11 -0
- saviialib/services/thies/__init__.py +0 -0
- saviialib/services/thies/api.py +35 -0
- saviialib/services/{epii → thies}/controllers/types/update_thies_data_types.py +2 -4
- saviialib/services/{epii → thies}/controllers/update_thies_data.py +4 -4
- saviialib/services/{epii → thies}/use_cases/components/create_thies_statistics_file.py +11 -2
- saviialib/services/{epii → thies}/use_cases/types/update_thies_data_types.py +4 -1
- saviialib/services/{epii → thies}/use_cases/update_thies_data.py +19 -12
- saviialib-1.5.0.dist-info/METADATA +126 -0
- saviialib-1.5.0.dist-info/RECORD +87 -0
- {saviialib-1.3.0.dist-info → saviialib-1.5.0.dist-info}/WHEEL +1 -1
- saviialib/services/epii/api.py +0 -94
- saviialib/services/epii/utils/__init__.py +0 -3
- saviialib-1.3.0.dist-info/METADATA +0 -122
- saviialib-1.3.0.dist-info/RECORD +0 -57
- /saviialib/services/{epii → backup}/__init__.py +0 -0
- /saviialib/services/{epii → backup}/controllers/__init__.py +0 -0
- /saviialib/services/{epii → backup}/use_cases/constants/upload_backup_to_sharepoint_constants.py +0 -0
- /saviialib/services/{epii → thies}/use_cases/components/thies_bp.py +0 -0
- /saviialib/services/{epii → thies}/utils/update_thies_data_utils.py +0 -0
- {saviialib-1.3.0.dist-info → saviialib-1.5.0.dist-info/licenses}/LICENSE +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from saviialib.general_types.error_types.api.
|
|
1
|
+
from saviialib.general_types.error_types.api.saviia_api_error_types import (
|
|
2
2
|
SharePointFetchingError,
|
|
3
3
|
SharePointDirectoryError,
|
|
4
4
|
SharePointUploadError,
|
|
@@ -26,16 +26,17 @@ from saviialib.libs.sharepoint_client import (
|
|
|
26
26
|
from saviialib.libs.directory_client import DirectoryClient, DirectoryClientArgs
|
|
27
27
|
|
|
28
28
|
from saviialib.libs.files_client import FilesClient, FilesClientInitArgs, WriteArgs
|
|
29
|
-
from saviialib.services.
|
|
29
|
+
from saviialib.services.backup.use_cases.types import (
|
|
30
30
|
FtpClientConfig,
|
|
31
31
|
SharepointConfig,
|
|
32
32
|
UpdateThiesDataUseCaseInput,
|
|
33
33
|
)
|
|
34
|
-
from saviialib.services.
|
|
34
|
+
from saviialib.services.backup.utils import (
|
|
35
35
|
parse_execute_response,
|
|
36
36
|
)
|
|
37
37
|
from saviialib.libs.zero_dependency.utils.datetime_utils import today, datetime_to_str
|
|
38
38
|
from .components.create_thies_statistics_file import create_thies_daily_statistics_file
|
|
39
|
+
from typing import Set, Dict, List
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
class UpdateThiesDataUseCase:
|
|
@@ -95,7 +96,7 @@ class UpdateThiesDataUseCase:
|
|
|
95
96
|
reason=f"The current folder '{folder_name}' doesn't exist."
|
|
96
97
|
)
|
|
97
98
|
|
|
98
|
-
async def fetch_cloud_file_names(self) ->
|
|
99
|
+
async def fetch_cloud_file_names(self) -> Set[str]:
|
|
99
100
|
"""Fetch file names from the RCER cloud."""
|
|
100
101
|
await self._validate_sharepoint_current_folders()
|
|
101
102
|
try:
|
|
@@ -113,7 +114,7 @@ class UpdateThiesDataUseCase:
|
|
|
113
114
|
except Exception as error:
|
|
114
115
|
raise SharePointFetchingError(reason=error)
|
|
115
116
|
|
|
116
|
-
async def fetch_thies_file_names(self) ->
|
|
117
|
+
async def fetch_thies_file_names(self) -> Set[str]:
|
|
117
118
|
"""Fetch file names from the THIES FTP server."""
|
|
118
119
|
try:
|
|
119
120
|
thies_files = set()
|
|
@@ -131,7 +132,7 @@ class UpdateThiesDataUseCase:
|
|
|
131
132
|
except ConnectionAbortedError as error:
|
|
132
133
|
raise ThiesFetchingError(reason=error)
|
|
133
134
|
|
|
134
|
-
async def fetch_thies_file_content(self) ->
|
|
135
|
+
async def fetch_thies_file_content(self) -> Dict[str, bytes]:
|
|
135
136
|
"""Fetch the content of files from the THIES FTP server."""
|
|
136
137
|
try:
|
|
137
138
|
content_files = {}
|
|
@@ -165,8 +166,8 @@ class UpdateThiesDataUseCase:
|
|
|
165
166
|
raise ThiesFetchingError(reason=error)
|
|
166
167
|
|
|
167
168
|
async def upload_thies_files_to_sharepoint(
|
|
168
|
-
self, files:
|
|
169
|
-
) ->
|
|
169
|
+
self, files: Dict
|
|
170
|
+
) -> Dict[str, List[str]]:
|
|
170
171
|
"""Upload files to SharePoint and categorize the results."""
|
|
171
172
|
upload_results = {"failed_files": [], "new_files": []}
|
|
172
173
|
|
|
@@ -269,7 +270,15 @@ class UpdateThiesDataUseCase:
|
|
|
269
270
|
FtpReadFileArgs(file_path)
|
|
270
271
|
)
|
|
271
272
|
except FileNotFoundError as error:
|
|
272
|
-
|
|
273
|
+
reason = (
|
|
274
|
+
str(error) + ". The file might not be available yet for statistics."
|
|
275
|
+
)
|
|
276
|
+
self.logger.warning("[thies_synchronization_lib] Warning: %s", reason)
|
|
277
|
+
self.logger.warning(
|
|
278
|
+
"[thies_synchronization_lib] Skipping the creation of daily statistics %s",
|
|
279
|
+
filename,
|
|
280
|
+
)
|
|
281
|
+
return
|
|
273
282
|
# Destination local folder
|
|
274
283
|
self.logger.debug(file_path)
|
|
275
284
|
|
|
@@ -305,9 +314,7 @@ class UpdateThiesDataUseCase:
|
|
|
305
314
|
dest_folder,
|
|
306
315
|
)
|
|
307
316
|
# Read the files with ThiesDayData class
|
|
308
|
-
await create_thies_daily_statistics_file(
|
|
309
|
-
self.os_client, self.logger, daily_files
|
|
310
|
-
)
|
|
317
|
+
await create_thies_daily_statistics_file(self.os_client, self.logger)
|
|
311
318
|
|
|
312
319
|
async def execute(self):
|
|
313
320
|
"""Synchronize data from the THIES Center to the cloud."""
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: saviialib
|
|
3
|
+
Version: 1.5.0
|
|
4
|
+
Summary: A client library for IoT projects in the RCER initiative
|
|
5
|
+
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Author: pedropablozavalat
|
|
8
|
+
Requires-Python: >=3.11,<4.0
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
+
Requires-Dist: aiofiles
|
|
16
|
+
Requires-Dist: aioftp
|
|
17
|
+
Requires-Dist: aiohttp
|
|
18
|
+
Requires-Dist: asyncssh (==2.21.1)
|
|
19
|
+
Requires-Dist: bitarray
|
|
20
|
+
Requires-Dist: build
|
|
21
|
+
Requires-Dist: certifi
|
|
22
|
+
Requires-Dist: dotenv (>=0.9.9,<0.10.0)
|
|
23
|
+
Requires-Dist: ffmpeg-asyncio (==0.1.3)
|
|
24
|
+
Requires-Dist: numpy (>=2.2.0,<2.4.0)
|
|
25
|
+
Requires-Dist: pandas (>=2.2.3,<2.3.1)
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
|
|
28
|
+
# SAVIIA Library
|
|
29
|
+
*Sistema de Administración y Visualización de Información para la Investigación y Análisis*
|
|
30
|
+
|
|
31
|
+
[](https://github.com/pedrozavalat/saviia-lib/releases)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## Installation
|
|
35
|
+
This library is designed for use with the SAVIIA Home Assistant Integration. It provides an API to retrieve files from a THIES Data Logger via an FTP server and upload them to a Microsoft SharePoint folder using the SharePoint REST API.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install saviialib
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Saviia API Client Usage
|
|
42
|
+
|
|
43
|
+
### Initialize the Saviia API Client
|
|
44
|
+
Import the necessary classes from the library.
|
|
45
|
+
```python
|
|
46
|
+
from saviialib import SaviiaAPI, SaviiaAPIConfig
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
To start using the library, you need to create an `SaviiaAPI` client instance with its configuration class `SaviiaAPIConfig`. Provide the required parameters such as FTP server details and SharePoint credentials:
|
|
50
|
+
```python
|
|
51
|
+
config = SaviiaAPIConfig(
|
|
52
|
+
ftp_port=FTP_PORT,
|
|
53
|
+
ftp_host=FTP_HOST,
|
|
54
|
+
ftp_user=FTP_USER,
|
|
55
|
+
ftp_password=FTP_PASSWORD,
|
|
56
|
+
sharepoint_client_id=SHAREPOINT_CLIENT_ID,
|
|
57
|
+
sharepoint_client_secret=SHAREPOINT_CLIENT_SECRET,
|
|
58
|
+
sharepoint_tenant_id=SHAREPOINT_TENANT_ID,
|
|
59
|
+
sharepoint_tenant_name=SHAREPOINT_TENANT_NAME,
|
|
60
|
+
sharepoint_site_name=SHAREPOINT_SITE_NAME
|
|
61
|
+
)
|
|
62
|
+
```
|
|
63
|
+
```python
|
|
64
|
+
api_client = SaviiaAPI(config)
|
|
65
|
+
```
|
|
66
|
+
**Notes:**
|
|
67
|
+
- Store sensitive data like `FTP_PASSWORD`, `FTP_USER`, and SharePoint credentials securely. Use environment variables or a secrets management tool to avoid hardcoding sensitive information in your codebase.
|
|
68
|
+
|
|
69
|
+
### Access THIES Data Logger Services
|
|
70
|
+
To interact with the THIES Data Logger services, you can access the `thies` attribute of the `SaviiaAPI` instance:
|
|
71
|
+
```python
|
|
72
|
+
thies_client = api_client.get('thies')
|
|
73
|
+
```
|
|
74
|
+
This instance provides methods to interact with the THIES Data Logger. Currently, it includes the main method for extracting files from the FTP server and uploading them to SharePoint.
|
|
75
|
+
|
|
76
|
+
#### THIES files extraction and synchronization
|
|
77
|
+
The library provides a method to extract and synchronize THIES Data Logger files with the Microsoft SharePoint client. This method downloads files from the FTP server and uploads them to the specified SharePoint folder:
|
|
78
|
+
```python
|
|
79
|
+
import asyncio
|
|
80
|
+
async def main():
|
|
81
|
+
# Before calling this method, you must have initialised the THIES service class ...
|
|
82
|
+
response = await thies_client.update_thies_data()
|
|
83
|
+
return response
|
|
84
|
+
|
|
85
|
+
asyncio.run(main())
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Access Backup Services
|
|
89
|
+
To interact with the Backup services, you can access the `backup` attribute of the `SaviiaAPI` instance:
|
|
90
|
+
```python
|
|
91
|
+
backup_client = api_client.get('backup')
|
|
92
|
+
```
|
|
93
|
+
This instance provides methods to interact with the Backup services. Currently, it includes the main method for creating backups of specified directories in a local folder from Home Assistant environment. Then each backup file is uploaded to a Microsoft SharePoint folder.
|
|
94
|
+
|
|
95
|
+
#### Create Backup
|
|
96
|
+
The library provides a method which creates a backup of a specified directory in a local folder from Home Assistant environment. Then each backup file is uploaded to a Microsoft SharePoint folder:
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
import asyncio
|
|
100
|
+
async def main():
|
|
101
|
+
# Before calling this method, you must have initialised the Backup service class ...
|
|
102
|
+
response = await backup_client.upload_backup_to_sharepoint(
|
|
103
|
+
local_backup_path=LOCAL_BACKUP_PATH,
|
|
104
|
+
sharepoint_folder_path=SHAREPOINT_FOLDER_PATH
|
|
105
|
+
)
|
|
106
|
+
return response
|
|
107
|
+
asyncio.run(main())
|
|
108
|
+
```
|
|
109
|
+
**Notes:**
|
|
110
|
+
- Ensure that the `local_backup_path` exists and contains the files you want to back up. It is a relative path from the Home Assistant configuration directory.
|
|
111
|
+
- The `sharepoint_folder_path` should be the path to the folder in SharePoint where you want to upload the backup files. For example, if your url is `https://yourtenant.sharepoint.com/sites/yoursite/Shared Documents/Backups`, the folder path would be `sites/yoursite/Shared Documents/Backups`.
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
## Contributing
|
|
120
|
+
If you're interested in contributing to this project, please follow the contributing guidelines. By contributing to this project, you agree to abide by its terms.
|
|
121
|
+
Contributions are welcome and appreciated!
|
|
122
|
+
|
|
123
|
+
## License
|
|
124
|
+
|
|
125
|
+
`saviialib` was created by Pedro Pablo Zavala Tejos. It is licensed under the terms of the MIT license.
|
|
126
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
saviialib/__init__.py,sha256=pn4KYFwPsVe43mw1e0svWiqA0StzM2B5Cr0iPc481I0,3074
|
|
2
|
+
saviialib/general_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
saviialib/general_types/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
saviialib/general_types/api/saviia_api_types.py,sha256=kX45V3KQb48S1jEstXcAtbiemVUgemJE_XK5qP7BJm0,1318
|
|
5
|
+
saviialib/general_types/api/saviia_backup_api_types.py,sha256=mtXRxFjBOqfUBWWtgLZxNq-vb_mBkCUS9fxoFRJfoYE,791
|
|
6
|
+
saviialib/general_types/api/saviia_netcamera_api_types.py,sha256=WVA3VP_FiTGPhtTl8GCG2RAVo7YDS5TTyl-0I5rUK4Y,208
|
|
7
|
+
saviialib/general_types/api/saviia_shakes_api_types.py,sha256=XlLwfCyFeQXk9kH7H0EcUJHIigj9edFKgn3wKGJ1Z94,623
|
|
8
|
+
saviialib/general_types/api/saviia_thies_api_types.py,sha256=ueqOFjHvRuT-N8H1UZEVXErgK1S1iRw0AXeO8bTdBts,1017
|
|
9
|
+
saviialib/general_types/error_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
saviialib/general_types/error_types/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
saviialib/general_types/error_types/api/saviia_api_error_types.py,sha256=BcDhteS4KsFNCm3L9ZQJTQKs0bKRXq3LgM4mfxsW-HY,3270
|
|
12
|
+
saviialib/general_types/error_types/api/saviia_netcamera_error_types.py,sha256=ipdY8PDJOFLxjgUIWc09cuaiHzPtBvAb7YKoosTL0wY,246
|
|
13
|
+
saviialib/general_types/error_types/common/__init__.py,sha256=yOBLZbt64Ki9Q0IJ0tMAubgq7PtrQ7XQ3RgtAzyOjiE,170
|
|
14
|
+
saviialib/general_types/error_types/common/common_types.py,sha256=2w790TQNRLc4UskXNHAh8RMZIJLA8FYyQbVxkPp89UA,717
|
|
15
|
+
saviialib/libs/directory_client/__init__.py,sha256=ys07nzp74fHew2mUkbGpntp5w4t_PnhZIS6D4_mJw2A,162
|
|
16
|
+
saviialib/libs/directory_client/client/os_client.py,sha256=mBIQc8ek8mDY6GMCX-cPNLleM4RbFdqoiuw5Ccoe3YA,763
|
|
17
|
+
saviialib/libs/directory_client/directory_client.py,sha256=5HmB1Pt9M8Tk18WKzfh3Fwr8gKa_RZCdAqvbU0rg7mw,1086
|
|
18
|
+
saviialib/libs/directory_client/directory_client_contract.py,sha256=wtNaUak1a7r6t9OI1L2ou7XMMJFXWpQFb7WyT6X7fCQ,479
|
|
19
|
+
saviialib/libs/directory_client/types/directory_client_types.py,sha256=ncMwVs_o6EYMuypXXmVInsjVDKJsdxVkmwj1M-LEInA,109
|
|
20
|
+
saviialib/libs/ffmpeg_client/__init__.py,sha256=KjOP--Uv0Z-qvoJI9IwwBrU3ZrroaC55zDG7fm9DEts,207
|
|
21
|
+
saviialib/libs/ffmpeg_client/clients/ffmpeg_asyncio_client.py,sha256=eqm7sNm4BY3WaxobXbeoS39DfzfwtICgmQAm9UE7yZw,3639
|
|
22
|
+
saviialib/libs/ffmpeg_client/ffmpeg_client.py,sha256=evqhjQeT9VejtJ8Gb7A3Vjxoj0PT4n7JnbbsuO7-35U,870
|
|
23
|
+
saviialib/libs/ffmpeg_client/ffmpeg_client_contract.py,sha256=mvGrGYkikExz4VyAErcSu6Sd2utYYm9bqxJj1N22z2U,324
|
|
24
|
+
saviialib/libs/ffmpeg_client/types/ffmpeg_client_types.py,sha256=Vo062LHqfTLgRbwLloZMRkC36CO3r9tFqY97nVxr8vE,444
|
|
25
|
+
saviialib/libs/files_client/__init__.py,sha256=sIi9ne7Z3EfxnqGTaSmH-cZ8QsKyu0hoOz61GyA3njs,192
|
|
26
|
+
saviialib/libs/files_client/clients/aiofiles_client.py,sha256=Mu5pSnnEa3dT3GONmt1O-lCQstuQNXHtJHM3D2L6TU8,1107
|
|
27
|
+
saviialib/libs/files_client/clients/csv_client.py,sha256=Rk4QbiKlVKrYxYtxQt-Pmkp9QoB_dNgs5r36JB9hU0o,1478
|
|
28
|
+
saviialib/libs/files_client/files_client.py,sha256=oWfaMLA_Lw91H1_pPirFtFbdJh4abSyZp91qBsAiePs,950
|
|
29
|
+
saviialib/libs/files_client/files_client_contract.py,sha256=fYvd68IMpc1OFkxbzNSmRUoTWVctf3hkNVQ7QZV0m6I,304
|
|
30
|
+
saviialib/libs/files_client/types/files_client_types.py,sha256=GOTM5fBY304-EX6IiUnWmt2JpsyQ6Nmb_Tp0wingt0M,755
|
|
31
|
+
saviialib/libs/ftp_client/__init__.py,sha256=dW2Yutgc7mJJJzgKLhWKXMgQ6KIWJYfFa1sGpjHH5xU,191
|
|
32
|
+
saviialib/libs/ftp_client/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
+
saviialib/libs/ftp_client/clients/aioftp_client.py,sha256=5sgr3PMETgaBRlKeu_avxHIh6tr1gb7t2mkxmpRas_k,1925
|
|
34
|
+
saviialib/libs/ftp_client/clients/ftplib_client.py,sha256=VcpAn23r03iyCUAj35xHU_AVNrll_45uHFN8Z9OnBkE,2203
|
|
35
|
+
saviialib/libs/ftp_client/ftp_client.py,sha256=Naj9p0yYWlXt9um0zKfvuHSoycM8JZg2SPBm8110pYk,1008
|
|
36
|
+
saviialib/libs/ftp_client/ftp_client_contract.py,sha256=tymkugDzsJ5PzUXIaSkwX1h7T0naR15qAkjrqswqDyM,338
|
|
37
|
+
saviialib/libs/ftp_client/types/__init__.py,sha256=syfwf9feP4QK7fkCTfl4j8l11ic-jHtfi1DE2chaWbs,155
|
|
38
|
+
saviialib/libs/ftp_client/types/ftp_client_types.py,sha256=e4SmYkewldulaD8ms2q75zVgLFXyBxBqoa_L-IQOmso,256
|
|
39
|
+
saviialib/libs/sftp_client/__init__.py,sha256=f51sFOd_XIhhd6x6AZ3ZdbJ86hO1xnqAk9MmEjwRJ-c,229
|
|
40
|
+
saviialib/libs/sftp_client/clients/asyncssh_sftp_client.py,sha256=vqCKHIx3K6QFujQP5DIAB5EYOz1zAdhi825LTRvhG20,3469
|
|
41
|
+
saviialib/libs/sftp_client/sftp_client.py,sha256=_5HRYSBPadxZEdHuHSpQ_VrwerBfu24izNRg-pvLzlU,918
|
|
42
|
+
saviialib/libs/sftp_client/sftp_client_contract.py,sha256=JWWxIfNBXcsBd8z3gQHGpeRASRjtP9WGkznoMfP0IZc,365
|
|
43
|
+
saviialib/libs/sftp_client/types/sftp_client_types.py,sha256=NzUZVq6yeGKkO7KF-v4Cc-rwaWeOgFCUGVPL1YBbYgA,446
|
|
44
|
+
saviialib/libs/sharepoint_client/__init__.py,sha256=6RbEzFtCfMrrY8F0JOCVcK6Gqt1FBJ09m0NuWHMCmCI,384
|
|
45
|
+
saviialib/libs/sharepoint_client/clients/sharepoint_rest_api.py,sha256=I3OfZ5M4uR86hLIBOlOQzGNyTzQRy1yckrLF1ne7F1g,6319
|
|
46
|
+
saviialib/libs/sharepoint_client/sharepoint_client.py,sha256=gXFisWWCk6pKhoEeaNN8dcHA5ywrGDLqfiKjchrHRy0,1816
|
|
47
|
+
saviialib/libs/sharepoint_client/sharepoint_client_contract.py,sha256=H-WsXR5f50jy5RRYNlgV61y_YGjOUq4U_E1DWUUrDYw,612
|
|
48
|
+
saviialib/libs/sharepoint_client/types/sharepoint_client_types.py,sha256=JruUCn6o16w00t4zxDrxmv_Bxa52UyShGYmwUFfBCCQ,482
|
|
49
|
+
saviialib/libs/zero_dependency/utils/datetime_utils.py,sha256=c2H_JpUKpunCzDw6I4alDWNftEqaciWGtEUklPepm_s,759
|
|
50
|
+
saviialib/libs/zero_dependency/utils/strings_utils.py,sha256=XqEukvCLkQ0PhjjPm9FTjrzbwBYMejs-0uSoLwSxhPo,133
|
|
51
|
+
saviialib/services/backup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
|
+
saviialib/services/backup/api.py,sha256=S1dMGyyjYzVyo-E8FMttHZMOO2TtQoAMaLp-oquW46g,1408
|
|
53
|
+
saviialib/services/backup/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
|
+
saviialib/services/backup/controllers/types/__init__.py,sha256=0zIWXQb6YQVIIbb5b_FeL-D9Zy_d1GqR8kVz3hen4IU,222
|
|
55
|
+
saviialib/services/backup/controllers/types/upload_backup_to_sharepoint_types.py,sha256=AzoHx3AWrVCM8LjmlEovDlRe4kJPJBbRoMToG8QK_Nw,464
|
|
56
|
+
saviialib/services/backup/controllers/upload_backup_to_sharepoint.py,sha256=rW8FmcalRO1Ip8rhOsfpJIKRVYyn8oO-_jJSiS7MJOk,3827
|
|
57
|
+
saviialib/services/backup/use_cases/constants/upload_backup_to_sharepoint_constants.py,sha256=erkn-3E8YwBMFs25o7exXoK7s73NdgP9IYDXeWzALcI,98
|
|
58
|
+
saviialib/services/backup/use_cases/types/__init__.py,sha256=uVfu-L3-2QGnki0-rL2fOVTj4hVMvykyqKEv7kQHNvE,224
|
|
59
|
+
saviialib/services/backup/use_cases/types/upload_backup_to_sharepoint_types.py,sha256=QSZ32Fsan-jGpmGFpip86N3S16oWaeIxri5at2x46nw,322
|
|
60
|
+
saviialib/services/backup/use_cases/upload_backup_to_sharepoint.py,sha256=tBAfztcXdr3pmJqhwdHKc6AbddajZubs_wkL93Wajv4,11890
|
|
61
|
+
saviialib/services/backup/utils/__init__.py,sha256=Khz07TAC17xGBbkSgNcOXSjzeFm6-NiQadNJ3R7tRgg,112
|
|
62
|
+
saviialib/services/backup/utils/upload_backup_to_sharepoint_utils.py,sha256=J2PkLvNFHqka4NLW4lrAdaK5pRgHnU3ZSOflO43uu78,3530
|
|
63
|
+
saviialib/services/netcamera/api.py,sha256=W8ZKfh_iGEvfE36yGXYH9RlveUUtHoxQI_E3__YGfq0,1182
|
|
64
|
+
saviialib/services/netcamera/controllers/get_media_files.py,sha256=CEfZ7YRhXBcuGeK3HWB3Bpp-i-pIvAs70krreCHL_eA,1507
|
|
65
|
+
saviialib/services/netcamera/controllers/types/get_media_files_types.py,sha256=40V0ARqtloRM16KYYxzeq5aQU-mrghEK7FfkeFoSmbk,417
|
|
66
|
+
saviialib/services/netcamera/use_cases/get_media_files.py,sha256=ct_MOOgxzqCURQo2JJx1ioBaO-Qq-Gj-27Y4JAdZbeo,2801
|
|
67
|
+
saviialib/services/netcamera/use_cases/types/get_media_files_types.py,sha256=XCpodI-WdZYbhd3DD1LkKDgLTSRKlXkHClbhwT8zXm8,333
|
|
68
|
+
saviialib/services/shakes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
+
saviialib/services/shakes/api.py,sha256=WvmOJ35lPdJuqSEl9-q9VOGNxqkqvzfBUmkp-G8WKj4,1230
|
|
70
|
+
saviialib/services/shakes/controllers/get_miniseed_files.py,sha256=k55QiIQoNHyMQsgW939IbrPY4tHy8cFMg51LDVQQSgs,1934
|
|
71
|
+
saviialib/services/shakes/controllers/types/get_miniseed_files_types.py,sha256=LZ8LZxpjPYrl-EIuwQixXl8z4Ygl81DgodoHyxzvIxY,366
|
|
72
|
+
saviialib/services/shakes/use_cases/get_miniseed_files.py,sha256=HD6VphToOF8eq-J281qOg9AgeD6hFAsVfScwvP5c9jc,3033
|
|
73
|
+
saviialib/services/shakes/use_cases/types/get_miniseed_files_types.py,sha256=bb5XurP08pHhhNK80dvgoSP_OmHFEdKhT-jzyd8w5kk,385
|
|
74
|
+
saviialib/services/shakes/use_cases/utils/get_miniseed_files_utils.py,sha256=6TEdu9MglnM0_FTuxs9BETneXqQBUGb-Q1rDKhvRLvg,288
|
|
75
|
+
saviialib/services/thies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
+
saviialib/services/thies/api.py,sha256=ibXBSzs_LJjZbC9LWh1EcHMWUp5qWTz-P_qOIb3rx6Y,1365
|
|
77
|
+
saviialib/services/thies/controllers/types/update_thies_data_types.py,sha256=YSLd0HgkeB7auTXFjZVYz_g9jv2hY2vaK7x6VLZ2BK4,439
|
|
78
|
+
saviialib/services/thies/controllers/update_thies_data.py,sha256=j_orYJfom4lo8xm8Jsru1h8JjDFI4xAfUL2oSM_XpcE,4890
|
|
79
|
+
saviialib/services/thies/use_cases/components/create_thies_statistics_file.py,sha256=_1wY_yI_Lg2QTOGag4lVZBWM3B1gp2Duz7ore-kOHhQ,5575
|
|
80
|
+
saviialib/services/thies/use_cases/components/thies_bp.py,sha256=1Iq5Wz3kqzJfQNawV_v8ORr_Pl-PoamFp_2Xo8DjvmI,15042
|
|
81
|
+
saviialib/services/thies/use_cases/types/update_thies_data_types.py,sha256=S9_oS4Laygh_XIQoKWzaLd9QrAjVajyHcgJgbzEFPww,554
|
|
82
|
+
saviialib/services/thies/use_cases/update_thies_data.py,sha256=6l3AvFRwDMTCChJfMR_f1Y6ejDNiy9eKlD1mfxqFjPw,14962
|
|
83
|
+
saviialib/services/thies/utils/update_thies_data_utils.py,sha256=EpjYWXqyHxJ-dO3MHhdXp-rGV7WyUckeFko-nnfnNac,555
|
|
84
|
+
saviialib-1.5.0.dist-info/METADATA,sha256=gp3HoVlafLCIXXrjex5UmaJHV-2a8uBYpap7EzpkAEk,5235
|
|
85
|
+
saviialib-1.5.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
86
|
+
saviialib-1.5.0.dist-info/licenses/LICENSE,sha256=NWpf6b38xgBWPBo5HZsCbdfp9hZSliEbRqWQgm0fkOo,1076
|
|
87
|
+
saviialib-1.5.0.dist-info/RECORD,,
|
saviialib/services/epii/api.py
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
from typing import Any, Dict, List
|
|
2
|
-
|
|
3
|
-
from .controllers.types.update_thies_data_types import UpdateThiesDataControllerInput
|
|
4
|
-
from .controllers.types.upload_backup_to_sharepoint_types import (
|
|
5
|
-
UploadBackupToSharepointControllerInput,
|
|
6
|
-
)
|
|
7
|
-
from .controllers.update_thies_data import UpdateThiesDataController
|
|
8
|
-
from .controllers.upload_backup_to_sharepoint import UploadBackupToSharepointController
|
|
9
|
-
from saviialib.general_types.api.epii_api_types import (
|
|
10
|
-
EpiiUpdateThiesConfig,
|
|
11
|
-
EpiiSharepointBackupConfig,
|
|
12
|
-
EpiiAPIConfig,
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class EpiiAPI:
|
|
17
|
-
"""
|
|
18
|
-
EpiiAPI is a service class that provides methods to interact with Patagonia Center system.
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
def __init__(self, config: EpiiAPIConfig):
|
|
22
|
-
self.ftp_port = config.ftp_port
|
|
23
|
-
self.ftp_host = config.ftp_host
|
|
24
|
-
self.ftp_user = config.ftp_user
|
|
25
|
-
self.ftp_password = config.ftp_password
|
|
26
|
-
self.sharepoint_client_id = config.sharepoint_client_id
|
|
27
|
-
self.sharepoint_client_secret = config.sharepoint_client_secret
|
|
28
|
-
self.sharepoint_tenant_id = config.sharepoint_tenant_id
|
|
29
|
-
self.sharepoint_tenant_name = config.sharepoint_tenant_name
|
|
30
|
-
self.sharepoint_site_name = config.sharepoint_site_name
|
|
31
|
-
self.logger = config.logger
|
|
32
|
-
|
|
33
|
-
async def update_thies_data(
|
|
34
|
-
self, sharepoint_folders_path: List[str], ftp_server_folders_path: List[str]
|
|
35
|
-
) -> Dict[str, Any]:
|
|
36
|
-
"""Updates data from a THIES Data Logger by connecting to an FTP server
|
|
37
|
-
and transferring data to specified Sharepoint folders.
|
|
38
|
-
|
|
39
|
-
Args:
|
|
40
|
-
sharepoint_folders_path (list): List of Sharepoint folder paths for AVG and EXT data.
|
|
41
|
-
The AVG path must be the first element.
|
|
42
|
-
ftp_server_folders_path (list): List of FTP server folder paths for AVG and EXT data.
|
|
43
|
-
The AVG path must be the first element.
|
|
44
|
-
|
|
45
|
-
Returns:
|
|
46
|
-
dict: A dictionary representation of the API response.
|
|
47
|
-
"""
|
|
48
|
-
config = EpiiUpdateThiesConfig(
|
|
49
|
-
ftp_port=self.ftp_port,
|
|
50
|
-
ftp_host=self.ftp_host,
|
|
51
|
-
ftp_user=self.ftp_user,
|
|
52
|
-
ftp_password=self.ftp_password,
|
|
53
|
-
sharepoint_client_id=self.sharepoint_client_id,
|
|
54
|
-
sharepoint_client_secret=self.sharepoint_client_secret,
|
|
55
|
-
sharepoint_site_name=self.sharepoint_site_name,
|
|
56
|
-
sharepoint_tenant_id=self.sharepoint_tenant_id,
|
|
57
|
-
sharepoint_tenant_name=self.sharepoint_tenant_name,
|
|
58
|
-
logger=self.logger,
|
|
59
|
-
)
|
|
60
|
-
controller = UpdateThiesDataController(
|
|
61
|
-
UpdateThiesDataControllerInput(
|
|
62
|
-
config, sharepoint_folders_path, ftp_server_folders_path
|
|
63
|
-
)
|
|
64
|
-
)
|
|
65
|
-
response = await controller.execute()
|
|
66
|
-
return response.__dict__
|
|
67
|
-
|
|
68
|
-
async def upload_backup_to_sharepoint(
|
|
69
|
-
self, local_backup_source_path: str, sharepoint_destination_path: str
|
|
70
|
-
) -> Dict[str, Any]:
|
|
71
|
-
"""Migrate a backup folder from Home assistant to Sharepoint directory.
|
|
72
|
-
Args:
|
|
73
|
-
local_backup_source_path (str): Local path to backup.
|
|
74
|
-
Returns:
|
|
75
|
-
response (dict): A dictionary containing the response from the upload operation.
|
|
76
|
-
This dictionary will typically include information about the success or
|
|
77
|
-
failure of the upload, as well as any relevant metadata.
|
|
78
|
-
"""
|
|
79
|
-
config = EpiiSharepointBackupConfig(
|
|
80
|
-
sharepoint_client_id=self.sharepoint_client_id,
|
|
81
|
-
sharepoint_client_secret=self.sharepoint_client_secret,
|
|
82
|
-
sharepoint_site_name=self.sharepoint_site_name,
|
|
83
|
-
sharepoint_tenant_id=self.sharepoint_tenant_id,
|
|
84
|
-
sharepoint_tenant_name=self.sharepoint_tenant_name,
|
|
85
|
-
logger=self.logger,
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
controller = UploadBackupToSharepointController(
|
|
89
|
-
UploadBackupToSharepointControllerInput(
|
|
90
|
-
config, local_backup_source_path, sharepoint_destination_path
|
|
91
|
-
)
|
|
92
|
-
)
|
|
93
|
-
response = await controller.execute()
|
|
94
|
-
return response.__dict__
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.3
|
|
2
|
-
Name: saviialib
|
|
3
|
-
Version: 1.3.0
|
|
4
|
-
Summary: A client library for IoT projects in the RCER initiative
|
|
5
|
-
License: MIT
|
|
6
|
-
Author: pedropablozavalat
|
|
7
|
-
Requires-Python: >=3.11,<4.0
|
|
8
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
-
Requires-Dist: aiofiles
|
|
14
|
-
Requires-Dist: aioftp
|
|
15
|
-
Requires-Dist: aiohttp
|
|
16
|
-
Requires-Dist: bitarray
|
|
17
|
-
Requires-Dist: build
|
|
18
|
-
Requires-Dist: dotenv (>=0.9.9,<0.10.0)
|
|
19
|
-
Requires-Dist: numpy (>=2.2.0,<2.4.0)
|
|
20
|
-
Requires-Dist: pandas (>=2.2.3,<2.3.1)
|
|
21
|
-
Requires-Dist: pytest-cov (>=6.1.1,<7.0.0)
|
|
22
|
-
Description-Content-Type: text/markdown
|
|
23
|
-
|
|
24
|
-
# SAVIIA Library
|
|
25
|
-
*Sistema de Administración y Visualización de Información para la Investigación y Análisis*
|
|
26
|
-
|
|
27
|
-
[](https://github.com/pedrozavalat/saviia-lib/releases)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
## Installation
|
|
31
|
-
This library is designed for use with the SAVIIA Home Assistant Integration. It provides an API to retrieve files from a THIES Data Logger via an FTP server and upload them to a Microsoft SharePoint folder using the SharePoint REST API.
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
pip install saviialib
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Usage
|
|
38
|
-
|
|
39
|
-
### Initialize the EPii API Client
|
|
40
|
-
To start using the library, you need to create an `EpiiAPI` client instance with its configuration class:
|
|
41
|
-
|
|
42
|
-
```python
|
|
43
|
-
from saviialib import EpiiAPI, EpiiAPIConfig
|
|
44
|
-
config = EpiiAPIConfig(
|
|
45
|
-
ftp_port=FTP_PORT,
|
|
46
|
-
ftp_host=FTP_HOST,
|
|
47
|
-
ftp_user=FTP_USER,
|
|
48
|
-
ftp_password=FTP_PASSWORD,
|
|
49
|
-
sharepoint_client_id=SHAREPOINT_CLIENT_ID,
|
|
50
|
-
sharepoint_client_secret=SHAREPOINT_CLIENT_SECRET,
|
|
51
|
-
sharepoint_tenant_id=SHAREPOINT_TENANT_ID,
|
|
52
|
-
sharepoint_tenant_name=SHAREPOINT_TENANT_NAME,
|
|
53
|
-
sharepoint_site_name=SHAREPOINT_SITE_NAME
|
|
54
|
-
)
|
|
55
|
-
api_client = EpiiAPI(config)
|
|
56
|
-
```
|
|
57
|
-
**Notes:**
|
|
58
|
-
- Store sensitive data like `FTP_PASSWORD`, `FTP_USER`, and SharePoint credentials securely. Use environment variables or a secrets management tool to avoid hardcoding sensitive information in your codebase.
|
|
59
|
-
|
|
60
|
-
### Update THIES Data Logger Files
|
|
61
|
-
The library provides a method to synchronize THIES Data Logger files with the RCER SharePoint client. This method updates the folder containing binary files with meteorological data:
|
|
62
|
-
|
|
63
|
-
```python
|
|
64
|
-
from saviialib import EpiiUpdateThiesConfig
|
|
65
|
-
import asyncio
|
|
66
|
-
|
|
67
|
-
async def main():
|
|
68
|
-
# Before calling this method, you must have initialised the api class ...
|
|
69
|
-
response = await api_client.update_thies_data()
|
|
70
|
-
return response
|
|
71
|
-
|
|
72
|
-
asyncio.run(main())
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Development
|
|
76
|
-
|
|
77
|
-
This project includes a `Makefile` to simplify common tasks. Below are the available commands:
|
|
78
|
-
|
|
79
|
-
### Install Basic Dependencies
|
|
80
|
-
To install the basic dependencies required for the project, run the following command:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
make install-deps
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
This will ensure that all necessary libraries and tools are installed for the project to function properly.
|
|
87
|
-
|
|
88
|
-
### Install Development Requirements
|
|
89
|
-
For setting up a development environment with additional tools and libraries, execute:
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
make dev
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
This command installs all the dependencies needed for development, including testing and linting tools.
|
|
96
|
-
|
|
97
|
-
### Run Tests
|
|
98
|
-
To verify that the code is functioning as expected, you can run the test suite using:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
make test
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
This will execute all the tests in the project and provide a summary of the results.
|
|
105
|
-
|
|
106
|
-
### Lint the Code
|
|
107
|
-
To ensure that the code adheres to the project's style guidelines and is free of common errors, run:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
make lint
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
This command checks the codebase for linting issues and outputs any problems that need to be addressed.
|
|
114
|
-
|
|
115
|
-
## Contributing
|
|
116
|
-
If you're interested in contributing to this project, please follow the contributing guidelines. By contributing to this project, you agree to abide by its terms.
|
|
117
|
-
Contributions are welcome and appreciated!
|
|
118
|
-
|
|
119
|
-
## License
|
|
120
|
-
|
|
121
|
-
`saviialib` was created by Pedro Pablo Zavala Tejos. It is licensed under the terms of the MIT license.
|
|
122
|
-
|
saviialib-1.3.0.dist-info/RECORD
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
saviialib/__init__.py,sha256=TMsEY8OOjo9KOz-0jf3QBh6WFOhCY07Rd7W2PK7C-1A,253
|
|
2
|
-
saviialib/general_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
saviialib/general_types/api/__init__.py,sha256=jXhoMlbSv7UCizW_Fm2mqR_3n99qkocVwg6CF7s3w7w,145
|
|
4
|
-
saviialib/general_types/api/epii_api_types.py,sha256=jspp5tDN06qx27O3ubRyPfZ3i9ybvn2HLxjh3UTFNcY,2345
|
|
5
|
-
saviialib/general_types/error_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
saviialib/general_types/error_types/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
saviialib/general_types/error_types/api/epii_api_error_types.py,sha256=iprpNvVoNA3vakMm7-dQdjCv7ZrRs6tRiXK1uaV3DNU,3049
|
|
8
|
-
saviialib/general_types/error_types/common/__init__.py,sha256=yOBLZbt64Ki9Q0IJ0tMAubgq7PtrQ7XQ3RgtAzyOjiE,170
|
|
9
|
-
saviialib/general_types/error_types/common/common_types.py,sha256=n5yuw-gVtkrtNfmaZ83ZkYxYHGl4jynOLUB9C8Tr32w,474
|
|
10
|
-
saviialib/libs/directory_client/__init__.py,sha256=ys07nzp74fHew2mUkbGpntp5w4t_PnhZIS6D4_mJw2A,162
|
|
11
|
-
saviialib/libs/directory_client/client/os_client.py,sha256=TgDnIQvgMP7sIVjn5kAKEJ5BYET7pN-FIQP0lvFMl4Q,763
|
|
12
|
-
saviialib/libs/directory_client/directory_client.py,sha256=5HmB1Pt9M8Tk18WKzfh3Fwr8gKa_RZCdAqvbU0rg7mw,1086
|
|
13
|
-
saviialib/libs/directory_client/directory_client_contract.py,sha256=wtNaUak1a7r6t9OI1L2ou7XMMJFXWpQFb7WyT6X7fCQ,479
|
|
14
|
-
saviialib/libs/directory_client/types/directory_client_types.py,sha256=ncMwVs_o6EYMuypXXmVInsjVDKJsdxVkmwj1M-LEInA,109
|
|
15
|
-
saviialib/libs/files_client/__init__.py,sha256=sIi9ne7Z3EfxnqGTaSmH-cZ8QsKyu0hoOz61GyA3njs,192
|
|
16
|
-
saviialib/libs/files_client/clients/aiofiles_client.py,sha256=Mu5pSnnEa3dT3GONmt1O-lCQstuQNXHtJHM3D2L6TU8,1107
|
|
17
|
-
saviialib/libs/files_client/clients/csv_client.py,sha256=Rk4QbiKlVKrYxYtxQt-Pmkp9QoB_dNgs5r36JB9hU0o,1478
|
|
18
|
-
saviialib/libs/files_client/files_client.py,sha256=oWfaMLA_Lw91H1_pPirFtFbdJh4abSyZp91qBsAiePs,950
|
|
19
|
-
saviialib/libs/files_client/files_client_contract.py,sha256=fYvd68IMpc1OFkxbzNSmRUoTWVctf3hkNVQ7QZV0m6I,304
|
|
20
|
-
saviialib/libs/files_client/types/files_client_types.py,sha256=GOTM5fBY304-EX6IiUnWmt2JpsyQ6Nmb_Tp0wingt0M,755
|
|
21
|
-
saviialib/libs/ftp_client/__init__.py,sha256=dW2Yutgc7mJJJzgKLhWKXMgQ6KIWJYfFa1sGpjHH5xU,191
|
|
22
|
-
saviialib/libs/ftp_client/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
-
saviialib/libs/ftp_client/clients/aioftp_client.py,sha256=5sgr3PMETgaBRlKeu_avxHIh6tr1gb7t2mkxmpRas_k,1925
|
|
24
|
-
saviialib/libs/ftp_client/clients/ftplib_client.py,sha256=VcpAn23r03iyCUAj35xHU_AVNrll_45uHFN8Z9OnBkE,2203
|
|
25
|
-
saviialib/libs/ftp_client/ftp_client.py,sha256=Naj9p0yYWlXt9um0zKfvuHSoycM8JZg2SPBm8110pYk,1008
|
|
26
|
-
saviialib/libs/ftp_client/ftp_client_contract.py,sha256=tymkugDzsJ5PzUXIaSkwX1h7T0naR15qAkjrqswqDyM,338
|
|
27
|
-
saviialib/libs/ftp_client/types/__init__.py,sha256=syfwf9feP4QK7fkCTfl4j8l11ic-jHtfi1DE2chaWbs,155
|
|
28
|
-
saviialib/libs/ftp_client/types/ftp_client_types.py,sha256=e4SmYkewldulaD8ms2q75zVgLFXyBxBqoa_L-IQOmso,256
|
|
29
|
-
saviialib/libs/sharepoint_client/__init__.py,sha256=6RbEzFtCfMrrY8F0JOCVcK6Gqt1FBJ09m0NuWHMCmCI,384
|
|
30
|
-
saviialib/libs/sharepoint_client/clients/sharepoint_rest_api.py,sha256=Gq__zrYtSyiwi5NguMYCqJ5Bbs84UqzC9L5qvOMhfVI,6100
|
|
31
|
-
saviialib/libs/sharepoint_client/sharepoint_client.py,sha256=gXFisWWCk6pKhoEeaNN8dcHA5ywrGDLqfiKjchrHRy0,1816
|
|
32
|
-
saviialib/libs/sharepoint_client/sharepoint_client_contract.py,sha256=H-WsXR5f50jy5RRYNlgV61y_YGjOUq4U_E1DWUUrDYw,612
|
|
33
|
-
saviialib/libs/sharepoint_client/types/sharepoint_client_types.py,sha256=JruUCn6o16w00t4zxDrxmv_Bxa52UyShGYmwUFfBCCQ,482
|
|
34
|
-
saviialib/libs/zero_dependency/utils/datetime_utils.py,sha256=c2H_JpUKpunCzDw6I4alDWNftEqaciWGtEUklPepm_s,759
|
|
35
|
-
saviialib/services/epii/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
saviialib/services/epii/api.py,sha256=99G-iC8Nz8vv9TuNPpdFsHxDAH8DXVCHnUQzwAUO9Ao,4036
|
|
37
|
-
saviialib/services/epii/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
-
saviialib/services/epii/controllers/types/__init__.py,sha256=xzky-oTSojLNkWETp_k8a4dcXYvYSQY0VhWo23Yhb8U,195
|
|
39
|
-
saviialib/services/epii/controllers/types/update_thies_data_types.py,sha256=kmt18vq7RLEAfIJj9MYz62fJH9etuU1WqZJ5MYmjiIg,448
|
|
40
|
-
saviialib/services/epii/controllers/types/upload_backup_to_sharepoint_types.py,sha256=5mDMLy3J5grACl1ezBGYZPOyhIkWYeIWWBOklaP2IlQ,471
|
|
41
|
-
saviialib/services/epii/controllers/update_thies_data.py,sha256=8TV420d4VWTvCW18M6sAguHZrX5VODXscgrUfhwO1fs,4884
|
|
42
|
-
saviialib/services/epii/controllers/upload_backup_to_sharepoint.py,sha256=7-ABo89yXhrWv-iOFjCkBGX-y_I62eFaOi1LtO5Gb4k,3817
|
|
43
|
-
saviialib/services/epii/use_cases/components/create_thies_statistics_file.py,sha256=G9K5UpsUYPM_w2sbusiyRWnZwbumSh5rYgil-rt8EB8,5171
|
|
44
|
-
saviialib/services/epii/use_cases/components/thies_bp.py,sha256=1Iq5Wz3kqzJfQNawV_v8ORr_Pl-PoamFp_2Xo8DjvmI,15042
|
|
45
|
-
saviialib/services/epii/use_cases/constants/upload_backup_to_sharepoint_constants.py,sha256=erkn-3E8YwBMFs25o7exXoK7s73NdgP9IYDXeWzALcI,98
|
|
46
|
-
saviialib/services/epii/use_cases/types/__init__.py,sha256=u6fyodOEJE2j6FMqJux40Xf9ccYAi-UUYxqT-Kzc0kE,199
|
|
47
|
-
saviialib/services/epii/use_cases/types/update_thies_data_types.py,sha256=3lJzG1nuZoP1mqFlvQ0-aFJp80SECaeiROlvucVhaSY,539
|
|
48
|
-
saviialib/services/epii/use_cases/types/upload_backup_to_sharepoint_types.py,sha256=J_sGhqSaPoMZA0GIrzCx6pmgSKgIkGi0uyrsltU_H8w,320
|
|
49
|
-
saviialib/services/epii/use_cases/update_thies_data.py,sha256=moB4fz_aOiKBqQixjm5uS0hyvpF9ufLIMWbVxwXqICc,14591
|
|
50
|
-
saviialib/services/epii/use_cases/upload_backup_to_sharepoint.py,sha256=-0MvCzkFM7T2y7XLgFevWAXmqAsthzuY68ReiiL2zDU,11886
|
|
51
|
-
saviialib/services/epii/utils/__init__.py,sha256=cYt2tvq65_OMjFaqb8-CCC7IGCQgFd4ziEUWJV7s1iY,98
|
|
52
|
-
saviialib/services/epii/utils/update_thies_data_utils.py,sha256=EpjYWXqyHxJ-dO3MHhdXp-rGV7WyUckeFko-nnfnNac,555
|
|
53
|
-
saviialib/services/epii/utils/upload_backup_to_sharepoint_utils.py,sha256=hEeV4_kcG8YL6t_3V8AlhgDHtHiUNsdYpilfgTLaQMc,3528
|
|
54
|
-
saviialib-1.3.0.dist-info/LICENSE,sha256=NWpf6b38xgBWPBo5HZsCbdfp9hZSliEbRqWQgm0fkOo,1076
|
|
55
|
-
saviialib-1.3.0.dist-info/METADATA,sha256=-qovhCVP7ZvvgeEKiFLSEo2OhlcVselpsLdvW82umIc,4113
|
|
56
|
-
saviialib-1.3.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
57
|
-
saviialib-1.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
/saviialib/services/{epii → backup}/use_cases/constants/upload_backup_to_sharepoint_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|