rudi-node-write 1.3.7__tar.gz → 1.4.2__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.
- {rudi_node_write-1.3.7/src/rudi_node_write.egg-info → rudi_node_write-1.4.2}/PKG-INFO +16 -15
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/pyproject.toml +7 -7
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/requirements-dev.txt +46 -44
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/requirements.txt +4 -4
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/conf/meta_defaults.py +1 -1
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_connector.py +5 -5
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_catalog_write.py +17 -10
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_manager_write.py +30 -9
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_manager_write_v2.py +5 -3
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_manager_write_v3.py +38 -13
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_storage_write.py +2 -4
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/rudi_node_auth.py +2 -2
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_node_writer.py +2 -2
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_const.py +1 -1
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_contact.py +3 -3
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_dictionary_entry.py +6 -2
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_geo.py +6 -2
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_licence.py +8 -4
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_media.py +54 -14
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_meta.py +29 -12
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_meta_misc.py +1 -1
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_org.py +1 -1
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/serializable.py +1 -1
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/file_utils.py +115 -37
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/jwt.py +0 -8
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/type_date.py +5 -2
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/typing_utils.py +3 -3
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2/src/rudi_node_write.egg-info}/PKG-INFO +16 -15
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write.egg-info/requires.txt +15 -14
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/LICENCE.md +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/README.md +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/setup.cfg +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/__init__.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_jwt_factory.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_dates.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/dict_utils.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/err.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/html_utils.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/list_utils.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/log.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/str_utils.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/url_utils.py +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write.egg-info/SOURCES.txt +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write.egg-info/dependency_links.txt +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write.egg-info/top_level.txt +0 -0
- {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/tests/test_rudi_node_write.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rudi-node-write
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.2
|
|
4
4
|
Summary: Use the internal API of a RUDI Producer node
|
|
5
5
|
Author-email: Olivier Martineau <olivier.martineau@irisa.fr>
|
|
6
6
|
Maintainer-email: Olivier Martineau <olivier.martineau@irisa.fr>
|
|
@@ -16,34 +16,35 @@ Classifier: Operating System :: OS Independent
|
|
|
16
16
|
Requires-Python: >=3.11
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
18
|
License-File: LICENCE.md
|
|
19
|
-
Requires-Dist: beautifulsoup4==4.
|
|
20
|
-
Requires-Dist: chardet==
|
|
21
|
-
Requires-Dist: deepdiff==
|
|
22
|
-
Requires-Dist: puremagic==
|
|
19
|
+
Requires-Dist: beautifulsoup4==4.15.0
|
|
20
|
+
Requires-Dist: chardet==7.4.3
|
|
21
|
+
Requires-Dist: deepdiff==9.1.0
|
|
22
|
+
Requires-Dist: puremagic==2.2.0
|
|
23
23
|
Provides-Extra: dev
|
|
24
24
|
Requires-Dist: backports.tarfile==1.2.0; extra == "dev"
|
|
25
25
|
Requires-Dist: black==25.1.0; extra == "dev"
|
|
26
26
|
Requires-Dist: build==1.2.2.post1; extra == "dev"
|
|
27
|
-
Requires-Dist: commitizen==4.8.
|
|
27
|
+
Requires-Dist: commitizen==4.8.3; extra == "dev"
|
|
28
28
|
Requires-Dist: configparser==7.2.0; extra == "dev"
|
|
29
29
|
Requires-Dist: contourpy==1.3.2; extra == "dev"
|
|
30
30
|
Requires-Dist: cssbeautifier==1.15.4; extra == "dev"
|
|
31
31
|
Requires-Dist: cycler==0.12.1; extra == "dev"
|
|
32
32
|
Requires-Dist: email-validator==2.2.0; extra == "dev"
|
|
33
|
-
Requires-Dist: fastapi==0.115.
|
|
33
|
+
Requires-Dist: fastapi==0.115.14; extra == "dev"
|
|
34
34
|
Requires-Dist: fastapi-cli==0.0.7; extra == "dev"
|
|
35
|
-
Requires-Dist: flake8==7.
|
|
35
|
+
Requires-Dist: flake8==7.3.0; extra == "dev"
|
|
36
36
|
Requires-Dist: ftfy==6.3.1; extra == "dev"
|
|
37
37
|
Requires-Dist: httptools==0.6.4; extra == "dev"
|
|
38
38
|
Requires-Dist: httpx==0.28.1; extra == "dev"
|
|
39
|
-
Requires-Dist: importlib-metadata==8.7.0; extra == "dev"
|
|
40
39
|
Requires-Dist: importlib-resources==6.5.2; extra == "dev"
|
|
41
40
|
Requires-Dist: inflect==7.5.0; extra == "dev"
|
|
42
41
|
Requires-Dist: ipykernel==6.29.5; extra == "dev"
|
|
42
|
+
Requires-Dist: jaraco-collections==5.2.1; extra == "dev"
|
|
43
|
+
Requires-Dist: jaraco-functools==4.2.1; extra == "dev"
|
|
43
44
|
Requires-Dist: jaraco.collections==5.1.0; extra == "dev"
|
|
44
45
|
Requires-Dist: json5==0.12.0; extra == "dev"
|
|
45
46
|
Requires-Dist: kiwisolver==1.4.8; extra == "dev"
|
|
46
|
-
Requires-Dist: lxml==
|
|
47
|
+
Requires-Dist: lxml==6.0.0; extra == "dev"
|
|
47
48
|
Requires-Dist: nbstripout==0.8.1; extra == "dev"
|
|
48
49
|
Requires-Dist: onlykey-agent==1.1.15; extra == "dev"
|
|
49
50
|
Requires-Dist: ordered-set==4.1.0; extra == "dev"
|
|
@@ -57,18 +58,18 @@ Requires-Dist: pre-commit-hooks==5.0.0; extra == "dev"
|
|
|
57
58
|
Requires-Dist: protobuf==6.31.1; extra == "dev"
|
|
58
59
|
Requires-Dist: py-env==0.0.1; extra == "dev"
|
|
59
60
|
Requires-Dist: pybind11==2.13.6; extra == "dev"
|
|
60
|
-
Requires-Dist: pyright==1.1.
|
|
61
|
+
Requires-Dist: pyright==1.1.402; extra == "dev"
|
|
61
62
|
Requires-Dist: pyside6-addons==6.9.1; extra == "dev"
|
|
62
63
|
Requires-Dist: pytest-check==2.5.3; extra == "dev"
|
|
63
|
-
Requires-Dist: pytest-cov==6.
|
|
64
|
-
Requires-Dist: python-dotenv==1.1.
|
|
64
|
+
Requires-Dist: pytest-cov==6.2.1; extra == "dev"
|
|
65
|
+
Requires-Dist: python-dotenv==1.1.1; extra == "dev"
|
|
65
66
|
Requires-Dist: python-multipart==0.0.20; extra == "dev"
|
|
66
67
|
Requires-Dist: regex==2024.11.6; extra == "dev"
|
|
67
|
-
Requires-Dist: timm==1.0.
|
|
68
|
+
Requires-Dist: timm==1.0.16; extra == "dev"
|
|
68
69
|
Requires-Dist: tomli==2.2.1; extra == "dev"
|
|
69
70
|
Requires-Dist: twine==6.1.0; extra == "dev"
|
|
70
71
|
Requires-Dist: uvloop==0.21.0; extra == "dev"
|
|
71
|
-
Requires-Dist: watchfiles==1.0
|
|
72
|
+
Requires-Dist: watchfiles==1.1.0; extra == "dev"
|
|
72
73
|
Requires-Dist: websockets==15.0.1; extra == "dev"
|
|
73
74
|
Dynamic: license-file
|
|
74
75
|
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=67.0"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
1
|
[project]
|
|
6
2
|
name = "rudi-node-write"
|
|
7
|
-
version = "1.
|
|
3
|
+
version = "1.4.2"
|
|
8
4
|
authors = [{ name = "Olivier Martineau", email = "olivier.martineau@irisa.fr" }]
|
|
9
5
|
maintainers = [
|
|
10
6
|
{ name = "Olivier Martineau", email = "olivier.martineau@irisa.fr" },
|
|
11
7
|
]
|
|
12
8
|
description = "Use the internal API of a RUDI Producer node"
|
|
13
9
|
readme = "README.md"
|
|
14
|
-
requires-python = ">=3.11"
|
|
15
10
|
license-files = ["LICENCE.md"]
|
|
11
|
+
requires-python = ">=3.11"
|
|
16
12
|
license = "EUPL-1.2"
|
|
17
13
|
classifiers = [
|
|
18
14
|
"Programming Language :: Python :: 3.11",
|
|
@@ -37,6 +33,10 @@ Homepage = "https://github.com/OlivierMartineau/rudi-node-write"
|
|
|
37
33
|
Documentation = "https://app.swaggerhub.com/apis/OlivierMartineau/RudiProducer-InternalAPI"
|
|
38
34
|
Repository = "https://github.com/OlivierMartineau/rudi-node-write"
|
|
39
35
|
|
|
36
|
+
[build-system]
|
|
37
|
+
requires = ["setuptools>=82.0.1"]
|
|
38
|
+
build-backend = "setuptools.build_meta"
|
|
39
|
+
|
|
40
40
|
# ----- Tool: black
|
|
41
41
|
[tool.black]
|
|
42
42
|
line-length = 120
|
|
@@ -45,7 +45,7 @@ target-version = ['py311']
|
|
|
45
45
|
# ----- Tool: commitizen
|
|
46
46
|
[tool.commitizen]
|
|
47
47
|
name = "cz_conventional_commits"
|
|
48
|
-
version = "1.
|
|
48
|
+
version = "1.4.2"
|
|
49
49
|
version_files = ["pyproject.toml:version"]
|
|
50
50
|
|
|
51
51
|
# ----- Tool: pytest
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
backports.tarfile==1.2.0
|
|
2
2
|
black==25.1.0
|
|
3
3
|
build==1.2.2.post1
|
|
4
|
-
commitizen==4.8.
|
|
4
|
+
commitizen==4.8.3
|
|
5
5
|
configparser==7.2.0
|
|
6
6
|
contourpy==1.3.2
|
|
7
7
|
cssbeautifier==1.15.4
|
|
8
8
|
cycler==0.12.1
|
|
9
9
|
email-validator==2.2.0
|
|
10
|
-
fastapi==0.115.
|
|
10
|
+
fastapi==0.115.14
|
|
11
11
|
fastapi-cli==0.0.7
|
|
12
|
-
flake8==7.
|
|
12
|
+
flake8==7.3.0
|
|
13
13
|
ftfy==6.3.1
|
|
14
14
|
httptools==0.6.4
|
|
15
15
|
httpx==0.28.1
|
|
16
|
-
importlib-metadata==8.7.0
|
|
17
16
|
importlib-resources==6.5.2
|
|
18
17
|
inflect==7.5.0
|
|
19
18
|
ipykernel==6.29.5
|
|
19
|
+
jaraco-collections==5.2.1
|
|
20
|
+
jaraco-functools==4.2.1
|
|
20
21
|
jaraco.collections==5.1.0
|
|
21
22
|
json5==0.12.0
|
|
22
23
|
kiwisolver==1.4.8
|
|
23
|
-
lxml==
|
|
24
|
+
lxml==6.0.0
|
|
24
25
|
nbstripout==0.8.1
|
|
25
26
|
onlykey-agent==1.1.15
|
|
26
27
|
ordered-set==4.1.0
|
|
@@ -34,22 +35,22 @@ pre-commit-hooks==5.0.0
|
|
|
34
35
|
protobuf==6.31.1
|
|
35
36
|
py-env==0.0.1
|
|
36
37
|
pybind11==2.13.6
|
|
37
|
-
pyright==1.1.
|
|
38
|
+
pyright==1.1.402
|
|
38
39
|
pyside6-addons==6.9.1
|
|
39
40
|
pytest-check==2.5.3
|
|
40
|
-
pytest-cov==6.
|
|
41
|
-
python-dotenv==1.1.
|
|
41
|
+
pytest-cov==6.2.1
|
|
42
|
+
python-dotenv==1.1.1
|
|
42
43
|
python-multipart==0.0.20
|
|
43
44
|
regex==2024.11.6
|
|
44
|
-
timm==1.0.
|
|
45
|
+
timm==1.0.16
|
|
45
46
|
tomli==2.2.1
|
|
46
47
|
twine==6.1.0
|
|
47
48
|
uvloop==0.21.0
|
|
48
|
-
watchfiles==1.0
|
|
49
|
+
watchfiles==1.1.0
|
|
49
50
|
websockets==15.0.1
|
|
50
51
|
# aenum==3.1.16 # Installed as dependency for onlykey
|
|
51
52
|
# annotated-types==0.7.0 # Installed as dependency for pydantic
|
|
52
|
-
# anyio==4.
|
|
53
|
+
# anyio==4.14.0 # Installed as dependency for httpx, starlette, watchfiles
|
|
53
54
|
# appnope==0.1.4 # Installed as dependency for ipykernel
|
|
54
55
|
# argcomplete==3.6.2 # Installed as dependency for commitizen
|
|
55
56
|
# asttokens==3.0.0 # Installed as dependency for stack-data
|
|
@@ -57,7 +58,7 @@ websockets==15.0.1
|
|
|
57
58
|
# autocommand==2.2.2 # Installed as dependency for jaraco.text
|
|
58
59
|
# backports.shutil-which==3.5.2 # Installed as dependency for lib-agent
|
|
59
60
|
# bech32==1.2.0 # Installed as dependency for lib-agent
|
|
60
|
-
# certifi==2025.
|
|
61
|
+
# certifi==2025.6.15 # Installed as dependency for httpcore, httpx, requests
|
|
61
62
|
# cffi==1.17.1 # Installed as dependency for cryptography, pynacl
|
|
62
63
|
# cfgv==3.4.0 # Installed as dependency for pre-commit
|
|
63
64
|
# charset-normalizer==3.4.2 # Installed as dependency for commitizen, requests
|
|
@@ -65,9 +66,9 @@ websockets==15.0.1
|
|
|
65
66
|
# colorama==0.4.6 # Installed as dependency for commitizen
|
|
66
67
|
# comm==0.2.2 # Installed as dependency for ipykernel
|
|
67
68
|
# configargparse==1.7.1 # Installed as dependency for lib-agent
|
|
68
|
-
# coverage==7.
|
|
69
|
-
# cryptography==45.0.
|
|
70
|
-
# cython==3.1.
|
|
69
|
+
# coverage==7.9.1 # Installed as dependency for pytest-cov
|
|
70
|
+
# cryptography==45.0.4 # Installed as dependency for fido2, lib-agent, onlykey-solo-python
|
|
71
|
+
# cython==3.1.2 # Installed as dependency for onlykey
|
|
71
72
|
# debugpy==1.8.14 # Installed as dependency for ipykernel
|
|
72
73
|
# decli==0.6.3 # Installed as dependency for commitizen
|
|
73
74
|
# decorator==5.2.1 # Installed as dependency for ipython
|
|
@@ -75,28 +76,29 @@ websockets==15.0.1
|
|
|
75
76
|
# dnspython==2.7.0 # Installed as dependency for email-validator
|
|
76
77
|
# docutils==0.21.2 # Installed as dependency for lib-agent, readme-renderer
|
|
77
78
|
# ecdsa==0.19.1 # Installed as dependency for lib-agent, onlykey, onlykey-solo-python
|
|
78
|
-
# editorconfig==0.17.
|
|
79
|
+
# editorconfig==0.17.1 # Installed as dependency for cssbeautifier, jsbeautifier
|
|
79
80
|
# executing==2.2.0 # Installed as dependency for stack-data
|
|
80
81
|
# fastjsonschema==2.21.1 # Installed as dependency for nbformat
|
|
81
82
|
# fido2==2.0.0 # Installed as dependency for onlykey-solo-python
|
|
82
83
|
# filelock==3.18.0 # Installed as dependency for huggingface-hub, torch, virtualenv
|
|
83
84
|
# fsspec==2025.5.1 # Installed as dependency for huggingface-hub, torch
|
|
84
85
|
# h11==0.16.0 # Installed as dependency for httpcore, uvicorn
|
|
85
|
-
# hf-xet==1.1.
|
|
86
|
+
# hf-xet==1.1.5 # Installed as dependency for huggingface-hub
|
|
86
87
|
# hidapi==0.14.0.post4 # Installed as dependency for onlykey
|
|
87
88
|
# httpcore==1.0.9 # Installed as dependency for httpx
|
|
88
|
-
# huggingface-hub==0.
|
|
89
|
+
# huggingface-hub==0.33.2 # Installed as dependency for timm
|
|
89
90
|
# id==1.5.0 # Installed as dependency for twine
|
|
90
91
|
# identify==2.6.12 # Installed as dependency for pre-commit
|
|
91
92
|
# idna==3.10 # Installed as dependency for anyio, email-validator, httpx, requests
|
|
93
|
+
# importlib-metadata==8.7.0 # Installed as dependency for commitizen
|
|
92
94
|
# iniconfig==2.1.0 # Installed as dependency for pytest
|
|
93
95
|
# intelhex==2.3.0 # Installed as dependency for onlykey-solo-python
|
|
94
|
-
# ipython==9.
|
|
96
|
+
# ipython==9.4.0 # Installed as dependency for ipykernel
|
|
95
97
|
# ipython-pygments-lexers==1.1.1 # Installed as dependency for ipython
|
|
96
98
|
# jaraco.classes==3.4.0 # Installed as dependency for keyring
|
|
97
99
|
# jaraco.context==6.0.1 # Installed as dependency for jaraco.text, keyring
|
|
98
|
-
# jaraco.functools==4.1
|
|
99
|
-
# jaraco.text==4.0.0 # Installed as dependency for jaraco.collections
|
|
100
|
+
# jaraco.functools==4.0.1 # Installed as dependency for jaraco.text, keyring
|
|
101
|
+
# jaraco.text==4.0.0 # Installed as dependency for jaraco-collections, jaraco.collections
|
|
100
102
|
# jedi==0.19.2 # Installed as dependency for ipython
|
|
101
103
|
# jinja2==3.1.6 # Installed as dependency for commitizen, torch
|
|
102
104
|
# jsbeautifier==1.15.4 # Installed as dependency for cssbeautifier
|
|
@@ -113,7 +115,7 @@ websockets==15.0.1
|
|
|
113
115
|
# mccabe==0.7.0 # Installed as dependency for flake8
|
|
114
116
|
# mdurl==0.1.2 # Installed as dependency for markdown-it-py
|
|
115
117
|
# mnemonic==0.21 # Installed as dependency for lib-agent
|
|
116
|
-
# more-itertools==10.7.0 # Installed as dependency for inflect, jaraco.classes, jaraco.functools, jaraco.text
|
|
118
|
+
# more-itertools==10.7.0 # Installed as dependency for inflect, jaraco-functools, jaraco.classes, jaraco.functools, jaraco.text
|
|
117
119
|
# mpmath==1.3.0 # Installed as dependency for sympy
|
|
118
120
|
# mypy-extensions==1.1.0 # Installed as dependency for black
|
|
119
121
|
# nbformat==5.10.4 # Installed as dependency for nbstripout
|
|
@@ -121,48 +123,48 @@ websockets==15.0.1
|
|
|
121
123
|
# networkx==3.5 # Installed as dependency for torch
|
|
122
124
|
# nh3==0.2.21 # Installed as dependency for readme-renderer
|
|
123
125
|
# nodeenv==1.9.1 # Installed as dependency for pre-commit, pyright
|
|
124
|
-
# numpy==2.
|
|
126
|
+
# numpy==2.3.1 # Installed as dependency for contourpy, torchvision
|
|
125
127
|
# onlykey==1.2.10 # Installed as dependency for onlykey-agent
|
|
126
128
|
# onlykey-solo-python==0.0.32 # Installed as dependency for onlykey
|
|
127
129
|
# packaging==25.0 # Installed as dependency for black, build, commitizen, huggingface-hub, ipykernel, pytest, twine
|
|
128
130
|
# parso==0.8.4 # Installed as dependency for jedi
|
|
129
131
|
# pathspec==0.12.1 # Installed as dependency for black
|
|
130
132
|
# pexpect==4.9.0 # Installed as dependency for ipython
|
|
131
|
-
# pillow==11.
|
|
133
|
+
# pillow==11.3.0 # Installed as dependency for torchvision
|
|
132
134
|
# platformdirs==4.3.8 # Installed as dependency for black, jupyter-core, virtualenv
|
|
133
|
-
# pluggy==1.6.0 # Installed as dependency for pytest
|
|
135
|
+
# pluggy==1.6.0 # Installed as dependency for pytest, pytest-cov
|
|
134
136
|
# prompt-toolkit==3.0.51 # Installed as dependency for ipython, onlykey, questionary
|
|
135
137
|
# psutil==7.0.0 # Installed as dependency for ipykernel
|
|
136
138
|
# ptyprocess==0.7.0 # Installed as dependency for pexpect
|
|
137
139
|
# pure-eval==0.2.3 # Installed as dependency for stack-data
|
|
138
|
-
# pycodestyle==2.
|
|
140
|
+
# pycodestyle==2.14.0 # Installed as dependency for flake8
|
|
139
141
|
# pycparser==2.22 # Installed as dependency for cffi
|
|
140
142
|
# pycryptodome==3.23.0 # Installed as dependency for lib-agent
|
|
141
|
-
# pydantic==2.11.
|
|
142
|
-
# pydantic-core==2.
|
|
143
|
-
# pyflakes==3.
|
|
144
|
-
# pygments==2.19.
|
|
143
|
+
# pydantic==2.11.7 # Installed as dependency for fastapi
|
|
144
|
+
# pydantic-core==2.33.2 # Installed as dependency for pydantic
|
|
145
|
+
# pyflakes==3.4.0 # Installed as dependency for flake8
|
|
146
|
+
# pygments==2.19.2 # Installed as dependency for ipython, ipython-pygments-lexers, pytest, readme-renderer, rich
|
|
145
147
|
# pymsgbox==1.0.9 # Installed as dependency for lib-agent
|
|
146
148
|
# pynacl==1.5.0 # Installed as dependency for lib-agent, onlykey
|
|
147
149
|
# pyproject-hooks==1.2.0 # Installed as dependency for build
|
|
148
150
|
# pyserial==3.5 # Installed as dependency for onlykey-solo-python
|
|
149
151
|
# pyside6-essentials==6.9.1 # Installed as dependency for pyside6-addons
|
|
150
|
-
# pytest==8.4.
|
|
152
|
+
# pytest==8.4.1 # Installed as dependency for pytest-check, pytest-cov
|
|
151
153
|
# python-daemon==3.1.2 # Installed as dependency for lib-agent
|
|
152
154
|
# python-dateutil==2.9.0.post0 # Installed as dependency for jupyter-client
|
|
153
155
|
# pyusb==1.3.1 # Installed as dependency for onlykey-solo-python
|
|
154
156
|
# pyyaml==6.0.2 # Installed as dependency for commitizen, huggingface-hub, pre-commit, timm
|
|
155
|
-
# pyzmq==
|
|
157
|
+
# pyzmq==27.0.0 # Installed as dependency for ipykernel, jupyter-client
|
|
156
158
|
# questionary==2.1.0 # Installed as dependency for commitizen
|
|
157
159
|
# readme-renderer==44.0 # Installed as dependency for twine
|
|
158
160
|
# referencing==0.36.2 # Installed as dependency for jsonschema, jsonschema-specifications
|
|
159
|
-
# requests==2.32.
|
|
161
|
+
# requests==2.32.4 # Installed as dependency for huggingface-hub, id, onlykey-solo-python, requests-toolbelt, twine
|
|
160
162
|
# requests-toolbelt==1.0.0 # Installed as dependency for twine
|
|
161
163
|
# rfc3986==2.0.0 # Installed as dependency for twine
|
|
162
164
|
# rich==14.0.0 # Installed as dependency for rich-toolkit, twine, typer
|
|
163
|
-
# rich-toolkit==0.14.
|
|
164
|
-
# rpds-py==0.
|
|
165
|
-
# ruamel.yaml==0.18.
|
|
165
|
+
# rich-toolkit==0.14.8 # Installed as dependency for fastapi-cli
|
|
166
|
+
# rpds-py==0.26.0 # Installed as dependency for jsonschema, referencing
|
|
167
|
+
# ruamel.yaml==0.18.14 # Installed as dependency for pre-commit-hooks
|
|
166
168
|
# ruamel.yaml.clib==0.2.12 # Installed as dependency for ruamel.yaml
|
|
167
169
|
# safetensors==0.5.3 # Installed as dependency for timm
|
|
168
170
|
# semver==3.0.4 # Installed as dependency for lib-agent
|
|
@@ -171,21 +173,21 @@ websockets==15.0.1
|
|
|
171
173
|
# six==1.17.0 # Installed as dependency for cssbeautifier, ecdsa, jsbeautifier, onlykey, python-dateutil
|
|
172
174
|
# sniffio==1.3.1 # Installed as dependency for anyio
|
|
173
175
|
# stack-data==0.6.3 # Installed as dependency for ipython
|
|
174
|
-
# starlette==0.
|
|
176
|
+
# starlette==0.46.2 # Installed as dependency for fastapi
|
|
175
177
|
# sympy==1.14.0 # Installed as dependency for torch
|
|
176
178
|
# termcolor==3.1.0 # Installed as dependency for commitizen
|
|
177
|
-
# tomlkit==0.13.
|
|
178
|
-
# torch==2.7.
|
|
179
|
-
# torchvision==0.22.
|
|
179
|
+
# tomlkit==0.13.3 # Installed as dependency for commitizen
|
|
180
|
+
# torch==2.7.1 # Installed as dependency for timm, torchvision
|
|
181
|
+
# torchvision==0.22.1 # Installed as dependency for timm
|
|
180
182
|
# tornado==6.5.1 # Installed as dependency for ipykernel, jupyter-client
|
|
181
183
|
# tqdm==4.67.1 # Installed as dependency for huggingface-hub
|
|
182
184
|
# traitlets==5.14.3 # Installed as dependency for comm, ipykernel, ipython, jupyter-client, jupyter-core, matplotlib-inline, nbformat
|
|
183
|
-
# typeguard==4.4.
|
|
185
|
+
# typeguard==4.4.4 # Installed as dependency for inflect
|
|
184
186
|
# typer==0.16.0 # Installed as dependency for fastapi-cli
|
|
185
187
|
# typing-inspection==0.4.1 # Installed as dependency for pydantic
|
|
186
188
|
# unidecode==1.4.0 # Installed as dependency for lib-agent
|
|
187
|
-
# urllib3==2.
|
|
188
|
-
# uvicorn==0.
|
|
189
|
+
# urllib3==2.5.0 # Installed as dependency for requests, twine
|
|
190
|
+
# uvicorn==0.35.0 # Installed as dependency for fastapi-cli
|
|
189
191
|
# virtualenv==20.31.2 # Installed as dependency for pre-commit
|
|
190
192
|
# wcwidth==0.2.13 # Installed as dependency for ftfy, prompt-toolkit
|
|
191
|
-
# zipp==3.
|
|
193
|
+
# zipp==3.23.0 # Installed as dependency for importlib-metadata
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
beautifulsoup4==4.
|
|
2
|
-
chardet==
|
|
3
|
-
deepdiff==
|
|
4
|
-
puremagic==
|
|
1
|
+
beautifulsoup4==4.15.0
|
|
2
|
+
chardet==7.4.3
|
|
3
|
+
deepdiff==9.1.0
|
|
4
|
+
puremagic==2.2.0
|
|
5
5
|
# orderly-set==5.4.1 # Installed as dependency for deepdiff
|
|
6
6
|
# soupsieve==2.7 # Installed as dependency for beautifulsoup4
|
|
7
7
|
# typing-extensions==4.14.0 # Installed as dependency for anyio, beautifulsoup4, fastapi, huggingface-hub, pydantic, pydantic-core, pyright, referencing, rich-toolkit, torch, typeguard, typer, typing-inspection
|
|
@@ -6,7 +6,7 @@ from rudi_node_write.rudi_types.rudi_const import Language
|
|
|
6
6
|
DEFAULT_LANG: Language = "fr"
|
|
7
7
|
|
|
8
8
|
# Current version for RUDI Node metadata
|
|
9
|
-
RUDI_API_VERSION: Final[str] = "1.4.
|
|
9
|
+
RUDI_API_VERSION: Final[str] = "1.4.3"
|
|
10
10
|
|
|
11
11
|
# Current version for ODS
|
|
12
12
|
ODS_API_VERSION: str = "2.1"
|
{rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_connector.py
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
from http.client import
|
|
2
|
-
from json import dumps, loads
|
|
3
|
-
from typing import
|
|
1
|
+
from http.client import HTTPConnection, HTTPSConnection
|
|
2
|
+
from json import JSONDecodeError, dumps, loads
|
|
3
|
+
from typing import BinaryIO, Literal, TextIO, get_args
|
|
4
4
|
from urllib.parse import urlsplit
|
|
5
5
|
|
|
6
6
|
from rudi_node_write.rudi_types.rudi_const import check_is_literal
|
|
7
7
|
from rudi_node_write.rudi_types.serializable import Serializable
|
|
8
8
|
from rudi_node_write.utils.dict_utils import safe_get_key
|
|
9
9
|
from rudi_node_write.utils.err import HttpError
|
|
10
|
-
from rudi_node_write.utils.log import log_d_if, log_e
|
|
10
|
+
from rudi_node_write.utils.log import log_d, log_d_if, log_e
|
|
11
11
|
from rudi_node_write.utils.str_utils import slash_join
|
|
12
12
|
from rudi_node_write.utils.url_utils import get_response_cookies, url_encode_req_params
|
|
13
13
|
|
|
@@ -59,7 +59,7 @@ class Connector:
|
|
|
59
59
|
self.should_log_response: bool = False
|
|
60
60
|
|
|
61
61
|
def _set_url(self, server_url: str):
|
|
62
|
-
here = f"super.{self.class_name}._set_url"
|
|
62
|
+
# here = f"super.{self.class_name}._set_url"
|
|
63
63
|
(scheme, netloc, path, query, fragment) = urlsplit(server_url)
|
|
64
64
|
if scheme not in ("https", "http"):
|
|
65
65
|
raise NotImplementedError(f"only http and https are supported, got '{scheme}'")
|
|
@@ -2,36 +2,43 @@ from os.path import isdir
|
|
|
2
2
|
from time import time
|
|
3
3
|
from urllib.parse import quote
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
from rudi_node_write.connectors.io_connector import Connector, https_download
|
|
7
6
|
from rudi_node_write.connectors.io_rudi_jwt_factory import RudiNodeJwtFactory
|
|
8
|
-
from rudi_node_write.rudi_types.rudi_const import
|
|
7
|
+
from rudi_node_write.rudi_types.rudi_const import (
|
|
8
|
+
MEDIA_TYPE_FILE,
|
|
9
|
+
RUDI_OBJECT_TYPES,
|
|
10
|
+
RudiObjectTypeStr,
|
|
11
|
+
)
|
|
9
12
|
from rudi_node_write.rudi_types.rudi_contact import RudiContact
|
|
10
|
-
from rudi_node_write.rudi_types.rudi_media import
|
|
13
|
+
from rudi_node_write.rudi_types.rudi_media import RudiMediaFile, RudiMediaService
|
|
11
14
|
from rudi_node_write.rudi_types.rudi_meta import RudiMetadata
|
|
12
15
|
from rudi_node_write.rudi_types.rudi_org import RudiOrganization
|
|
13
16
|
from rudi_node_write.rudi_types.serializable import Serializable
|
|
14
17
|
from rudi_node_write.utils.dict_utils import (
|
|
15
|
-
safe_get_key,
|
|
16
|
-
pick_in_dict,
|
|
17
18
|
merge_dict_of_list,
|
|
19
|
+
pick_in_dict,
|
|
20
|
+
safe_get_key,
|
|
18
21
|
)
|
|
19
22
|
from rudi_node_write.utils.err import (
|
|
20
23
|
ExpiredTokenException,
|
|
21
|
-
UnexpectedValueException,
|
|
22
|
-
NoNullException,
|
|
23
24
|
HttpError,
|
|
24
25
|
HttpErrorNotFound,
|
|
26
|
+
NoNullException,
|
|
27
|
+
UnexpectedValueException,
|
|
25
28
|
)
|
|
26
29
|
from rudi_node_write.utils.file_utils import read_json_file, write_file
|
|
27
30
|
from rudi_node_write.utils.jwt import is_jwt_expired
|
|
28
31
|
from rudi_node_write.utils.list_utils import get_first_list_elt_or_none
|
|
29
32
|
from rudi_node_write.utils.log import log_d, log_e, log_w
|
|
30
|
-
from rudi_node_write.utils.str_utils import
|
|
33
|
+
from rudi_node_write.utils.str_utils import (
|
|
34
|
+
absolute_path,
|
|
35
|
+
is_uuid_v4,
|
|
36
|
+
slash_join,
|
|
37
|
+
uuid4_str,
|
|
38
|
+
)
|
|
31
39
|
from rudi_node_write.utils.typing_utils import get_type_name
|
|
32
40
|
from rudi_node_write.utils.url_utils import ensure_url_startswith
|
|
33
41
|
|
|
34
|
-
|
|
35
42
|
REQ_LIMIT = 500
|
|
36
43
|
_DELAY_REFRESH_S = 60 # seconds
|
|
37
44
|
_REFRESH_KEY = "refresh_time" # seconds
|
|
@@ -44,7 +51,7 @@ here = "RudiNodeCatalogConnector"
|
|
|
44
51
|
|
|
45
52
|
|
|
46
53
|
def ensure_url_startswith_api_admin(url):
|
|
47
|
-
return ensure_url_startswith(url, "
|
|
54
|
+
return ensure_url_startswith(url, "catalog/admin")
|
|
48
55
|
|
|
49
56
|
|
|
50
57
|
class RudiNodeCatalogConnector(Connector):
|
|
@@ -18,18 +18,32 @@ from rudi_node_write.rudi_types.rudi_media import RudiMediaFile, RudiMediaServic
|
|
|
18
18
|
from rudi_node_write.rudi_types.rudi_meta import RudiMetadata
|
|
19
19
|
from rudi_node_write.rudi_types.rudi_org import RudiOrganization
|
|
20
20
|
from rudi_node_write.rudi_types.serializable import Serializable
|
|
21
|
-
from rudi_node_write.utils.dict_utils import
|
|
22
|
-
|
|
21
|
+
from rudi_node_write.utils.dict_utils import (
|
|
22
|
+
check_is_dict,
|
|
23
|
+
merge_dict_of_list,
|
|
24
|
+
pick_in_dict,
|
|
25
|
+
safe_get_key,
|
|
26
|
+
)
|
|
27
|
+
from rudi_node_write.utils.err import (
|
|
28
|
+
HttpError,
|
|
29
|
+
HttpErrorNotFound,
|
|
30
|
+
UnexpectedValueException,
|
|
31
|
+
)
|
|
23
32
|
from rudi_node_write.utils.file_utils import check_is_file, read_json_file, write_file
|
|
24
33
|
from rudi_node_write.utils.jwt import is_jwt_expired
|
|
25
34
|
from rudi_node_write.utils.list_utils import get_first_list_elt_or_none
|
|
26
35
|
from rudi_node_write.utils.log import log_d, log_e, log_w
|
|
27
|
-
from rudi_node_write.utils.str_utils import
|
|
36
|
+
from rudi_node_write.utils.str_utils import (
|
|
37
|
+
absolute_path,
|
|
38
|
+
check_is_uuid4,
|
|
39
|
+
is_uuid_v4,
|
|
40
|
+
slash_join,
|
|
41
|
+
uuid4_str,
|
|
42
|
+
)
|
|
28
43
|
from rudi_node_write.utils.type_date import Date
|
|
29
44
|
from rudi_node_write.utils.typing_utils import check_is_int, get_type_name
|
|
30
45
|
from rudi_node_write.utils.url_utils import ensure_url_startswith
|
|
31
46
|
|
|
32
|
-
|
|
33
47
|
# Defaults for constructor
|
|
34
48
|
_DEFAULT_USER_AGENT = "RudiNodeManagerConnector"
|
|
35
49
|
|
|
@@ -195,6 +209,7 @@ class RudiNodeManagerConnector(Connector):
|
|
|
195
209
|
self.get_api(url="data/uuid", headers=self._manager_headers)
|
|
196
210
|
except HttpError:
|
|
197
211
|
raise ConnectionError(f"Identifiers seem to be not working for the node: {self.server_url}")
|
|
212
|
+
return True
|
|
198
213
|
|
|
199
214
|
@property
|
|
200
215
|
def api_version(self):
|
|
@@ -298,7 +313,7 @@ class RudiNodeManagerConnector(Connector):
|
|
|
298
313
|
|
|
299
314
|
@property
|
|
300
315
|
def _storage_jwt(self) -> str:
|
|
301
|
-
here = "_media_jwt"
|
|
316
|
+
# here = "_media_jwt"
|
|
302
317
|
if is_jwt_expired(self._cached_media_jwt):
|
|
303
318
|
res = self.get_api(url="media/jwt", headers=self._manager_headers)
|
|
304
319
|
|
|
@@ -519,7 +534,7 @@ class RudiNodeManagerConnector(Connector):
|
|
|
519
534
|
if not self._gen == 1:
|
|
520
535
|
try:
|
|
521
536
|
list_medias = self.get_data("media")
|
|
522
|
-
except:
|
|
537
|
+
except Exception:
|
|
523
538
|
log_w(here, f"Cannot acces /data/media on node {self.base_url}")
|
|
524
539
|
self._gen = 1
|
|
525
540
|
|
|
@@ -1129,7 +1144,7 @@ class RudiNodeManagerConnector(Connector):
|
|
|
1129
1144
|
def post_local_file(
|
|
1130
1145
|
self,
|
|
1131
1146
|
file_local_path: str,
|
|
1132
|
-
media_id: str =
|
|
1147
|
+
media_id: str | None = None,
|
|
1133
1148
|
rudi_media: RudiMediaFile | None = None,
|
|
1134
1149
|
):
|
|
1135
1150
|
"""
|
|
@@ -1139,6 +1154,9 @@ class RudiNodeManagerConnector(Connector):
|
|
|
1139
1154
|
"""
|
|
1140
1155
|
here = f"{self.class_name}.post_local_file"
|
|
1141
1156
|
|
|
1157
|
+
if media_id is None:
|
|
1158
|
+
media_id = uuid4_str()
|
|
1159
|
+
|
|
1142
1160
|
if rudi_media is None:
|
|
1143
1161
|
rudi_media = RudiMediaFile.from_local_file(file_local_path, media_id)
|
|
1144
1162
|
else:
|
|
@@ -1291,7 +1309,7 @@ class RudiNodeStorageConnector(Connector):
|
|
|
1291
1309
|
def post_local_file(
|
|
1292
1310
|
self,
|
|
1293
1311
|
file_local_path: str,
|
|
1294
|
-
media_id: str =
|
|
1312
|
+
media_id: str | None = None,
|
|
1295
1313
|
rudi_media: RudiMediaFile | None = None,
|
|
1296
1314
|
):
|
|
1297
1315
|
"""
|
|
@@ -1306,6 +1324,9 @@ class RudiNodeStorageConnector(Connector):
|
|
|
1306
1324
|
# :param charset: the encoding of the file
|
|
1307
1325
|
here = f"{self.class_name}.post_local_file"
|
|
1308
1326
|
|
|
1327
|
+
if media_id is None:
|
|
1328
|
+
media_id = uuid4_str()
|
|
1329
|
+
|
|
1309
1330
|
if rudi_media is None:
|
|
1310
1331
|
rudi_media = RudiMediaFile.from_local_file(file_local_path, media_id)
|
|
1311
1332
|
else:
|
|
@@ -1402,7 +1423,7 @@ if __name__ == "__main__": # pragma: no cover
|
|
|
1402
1423
|
"eeeeeeee-3233-4541-855e-55de7086b40f",
|
|
1403
1424
|
]
|
|
1404
1425
|
text_file = "unicode_chars.txt"
|
|
1405
|
-
yaml_file = "RUDI
|
|
1426
|
+
yaml_file = "RUDI node API.yml"
|
|
1406
1427
|
for i, f in enumerate([text_file, yaml_file]):
|
|
1407
1428
|
try:
|
|
1408
1429
|
upload_res = pm_connector.post_local_file(slash_join(dwnld_dir, f), media_uuid[i])
|
|
@@ -3,14 +3,16 @@ from ssl import SSLCertVerificationError
|
|
|
3
3
|
from time import time
|
|
4
4
|
|
|
5
5
|
from rudi_node_write.connectors.io_connector import HttpError
|
|
6
|
-
from rudi_node_write.connectors.io_rudi_manager_write import
|
|
6
|
+
from rudi_node_write.connectors.io_rudi_manager_write import (
|
|
7
|
+
RudiNodeManagerConnector,
|
|
8
|
+
RudiNodeStorageConnector,
|
|
9
|
+
)
|
|
7
10
|
from rudi_node_write.connectors.rudi_node_auth import RudiNodeAuth
|
|
8
11
|
from rudi_node_write.utils.file_utils import read_json_file
|
|
9
12
|
from rudi_node_write.utils.log import log_d, log_w
|
|
10
13
|
from rudi_node_write.utils.str_utils import slash_join
|
|
11
14
|
from rudi_node_write.utils.url_utils import ensure_url_startswith
|
|
12
15
|
|
|
13
|
-
|
|
14
16
|
# Defaults for constructor
|
|
15
17
|
_DEFAULT_USER_AGENT = "RudiNodeManagerConnectorV2"
|
|
16
18
|
|
|
@@ -101,7 +103,7 @@ if __name__ == "__main__": # pragma: no cover
|
|
|
101
103
|
"eeeeeeee-3233-4541-855e-55de7086b40f",
|
|
102
104
|
]
|
|
103
105
|
text_file = "unicode_chars.txt"
|
|
104
|
-
yaml_file = "RUDI
|
|
106
|
+
yaml_file = "RUDI node API.yml"
|
|
105
107
|
for i, f in enumerate([text_file, yaml_file]):
|
|
106
108
|
try:
|
|
107
109
|
upload_res = pm_connector.post_local_file(slash_join(dwnld_dir, f), media_uuid[i])
|