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.
Files changed (46) hide show
  1. {rudi_node_write-1.3.7/src/rudi_node_write.egg-info → rudi_node_write-1.4.2}/PKG-INFO +16 -15
  2. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/pyproject.toml +7 -7
  3. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/requirements-dev.txt +46 -44
  4. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/requirements.txt +4 -4
  5. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/conf/meta_defaults.py +1 -1
  6. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_connector.py +5 -5
  7. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_catalog_write.py +17 -10
  8. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_manager_write.py +30 -9
  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
  10. {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
  11. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_storage_write.py +2 -4
  12. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/rudi_node_auth.py +2 -2
  13. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_node_writer.py +2 -2
  14. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_const.py +1 -1
  15. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_contact.py +3 -3
  16. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_dictionary_entry.py +6 -2
  17. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_geo.py +6 -2
  18. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_licence.py +8 -4
  19. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_media.py +54 -14
  20. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_meta.py +29 -12
  21. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_meta_misc.py +1 -1
  22. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_org.py +1 -1
  23. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/serializable.py +1 -1
  24. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/file_utils.py +115 -37
  25. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/jwt.py +0 -8
  26. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/type_date.py +5 -2
  27. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/typing_utils.py +3 -3
  28. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2/src/rudi_node_write.egg-info}/PKG-INFO +16 -15
  29. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write.egg-info/requires.txt +15 -14
  30. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/LICENCE.md +0 -0
  31. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/README.md +0 -0
  32. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/setup.cfg +0 -0
  33. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/__init__.py +0 -0
  34. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/connectors/io_rudi_jwt_factory.py +0 -0
  35. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/rudi_types/rudi_dates.py +0 -0
  36. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/dict_utils.py +0 -0
  37. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/err.py +0 -0
  38. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/html_utils.py +0 -0
  39. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/list_utils.py +0 -0
  40. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/log.py +0 -0
  41. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/str_utils.py +0 -0
  42. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write/utils/url_utils.py +0 -0
  43. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write.egg-info/SOURCES.txt +0 -0
  44. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write.egg-info/dependency_links.txt +0 -0
  45. {rudi_node_write-1.3.7 → rudi_node_write-1.4.2}/src/rudi_node_write.egg-info/top_level.txt +0 -0
  46. {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.7
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.13.4
20
- Requires-Dist: chardet==5.2.0
21
- Requires-Dist: deepdiff==8.5.0
22
- Requires-Dist: puremagic==1.29
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.2; extra == "dev"
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.12; extra == "dev"
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.2.0; extra == "dev"
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==5.4.0; extra == "dev"
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.401; extra == "dev"
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.1.1; extra == "dev"
64
- Requires-Dist: python-dotenv==1.1.0; extra == "dev"
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.15; extra == "dev"
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.5; extra == "dev"
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.7"
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.3.7"
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.2
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.12
10
+ fastapi==0.115.14
11
11
  fastapi-cli==0.0.7
12
- flake8==7.2.0
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==5.4.0
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.401
38
+ pyright==1.1.402
38
39
  pyside6-addons==6.9.1
39
40
  pytest-check==2.5.3
40
- pytest-cov==6.1.1
41
- python-dotenv==1.1.0
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.15
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.5
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.9.0 # Installed as dependency for httpx, starlette, watchfiles
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.4.26 # Installed as dependency for httpcore, httpx, requests
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.8.2 # Installed as dependency for pytest-cov
69
- # cryptography==45.0.3 # Installed as dependency for fido2, lib-agent, onlykey-solo-python
70
- # cython==3.1.1 # Installed as dependency for onlykey
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.0 # Installed as dependency for cssbeautifier, jsbeautifier
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.3 # Installed as dependency for huggingface-hub
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.32.4 # Installed as dependency for timm
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.3.0 # Installed as dependency for ipykernel
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.0 # Installed as dependency for jaraco.text, keyring
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.2.6 # Installed as dependency for contourpy, torchvision
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.2.1 # Installed as dependency for torchvision
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.13.0 # Installed as dependency for flake8
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.5 # Installed as dependency for fastapi
142
- # pydantic-core==2.34.1 # Installed as dependency for pydantic
143
- # pyflakes==3.3.2 # Installed as dependency for flake8
144
- # pygments==2.19.1 # Installed as dependency for ipython, ipython-pygments-lexers, pytest, readme-renderer, rich
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.0 # Installed as dependency for pytest-check, pytest-cov
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==26.4.0 # Installed as dependency for ipykernel, jupyter-client
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.3 # Installed as dependency for huggingface-hub, id, onlykey-solo-python, requests-toolbelt, twine
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.7 # Installed as dependency for fastapi-cli
164
- # rpds-py==0.25.1 # Installed as dependency for jsonschema, referencing
165
- # ruamel.yaml==0.18.12 # Installed as dependency for pre-commit-hooks
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.47.0 # Installed as dependency for fastapi
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.2 # Installed as dependency for commitizen
178
- # torch==2.7.0 # Installed as dependency for timm, torchvision
179
- # torchvision==0.22.0 # Installed as dependency for timm
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.2 # Installed as dependency for inflect
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.4.0 # Installed as dependency for requests, twine
188
- # uvicorn==0.34.3 # Installed as dependency for fastapi-cli
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.22.0 # Installed as dependency for importlib-metadata
193
+ # zipp==3.23.0 # Installed as dependency for importlib-metadata
@@ -1,7 +1,7 @@
1
- beautifulsoup4==4.13.4
2
- chardet==5.2.0
3
- deepdiff==8.5.0
4
- puremagic==1.29
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.0"
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"
@@ -1,13 +1,13 @@
1
- from http.client import HTTPSConnection, HTTPConnection
2
- from json import dumps, loads, JSONDecodeError
3
- from typing import Literal, get_args, BinaryIO, TextIO
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, log_d
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 MEDIA_TYPE_FILE, RUDI_OBJECT_TYPES, RudiObjectTypeStr
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 RudiMediaService, RudiMediaFile
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 absolute_path, slash_join, uuid4_str, is_uuid_v4
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, "api/admin")
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 check_is_dict, merge_dict_of_list, pick_in_dict, safe_get_key
22
- from rudi_node_write.utils.err import HttpError, HttpErrorNotFound, UnexpectedValueException
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 absolute_path, check_is_uuid4, is_uuid_v4, slash_join, uuid4_str
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 = uuid4_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 = uuid4_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 producer internal API - 1.3.0.yml"
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 RudiNodeManagerConnector, RudiNodeStorageConnector
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 producer internal API - 1.3.0.yml"
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])