diracx-cli 0.0.1a16__py3-none-any.whl → 0.0.1a17__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.
@@ -4,7 +4,7 @@ from typing import Annotated, Optional
4
4
  import git
5
5
  import typer
6
6
  import yaml
7
- from pydantic import parse_obj_as
7
+ from pydantic import TypeAdapter
8
8
 
9
9
  from diracx.core.config import ConfigSource, ConfigSourceUrl
10
10
  from diracx.core.config.schema import (
@@ -25,13 +25,11 @@ app.add_typer(legacy.app, name="legacy")
25
25
 
26
26
 
27
27
  @app.command()
28
- def generate_cs(
29
- config_repo: str,
30
- ):
28
+ def generate_cs(config_repo: str):
31
29
  """Generate a minimal DiracX configuration repository"""
32
- # TODO: The use of parse_obj_as should be moved in to typer itself
33
- config_repo = parse_obj_as(ConfigSourceUrl, config_repo)
34
- if config_repo.scheme != "git+file":
30
+ # TODO: The use of TypeAdapter should be moved in to typer itself
31
+ config_repo = TypeAdapter(ConfigSourceUrl).validate_python(config_repo)
32
+ if config_repo.scheme != "git+file" or config_repo.path is None:
35
33
  raise NotImplementedError("Only git+file:// URLs are supported")
36
34
  repo_path = Path(config_repo.path)
37
35
  if repo_path.exists() and list(repo_path.iterdir()):
@@ -62,8 +60,10 @@ def add_vo(
62
60
  ):
63
61
  """Add a registry entry (vo) to an existing configuration repository"""
64
62
 
65
- # TODO: The use of parse_obj_as should be moved in to typer itself
66
- config_repo = parse_obj_as(ConfigSourceUrl, config_repo)
63
+ # TODO: The use of TypeAdapter should be moved in to typer itself
64
+ config_repo = TypeAdapter(ConfigSourceUrl).validate_python(config_repo)
65
+ if config_repo.scheme != "git+file" or config_repo.path is None:
66
+ raise NotImplementedError("Only git+file:// URLs are supported")
67
67
  repo_path = Path(config_repo.path)
68
68
 
69
69
  # A VO should at least contain a default group
@@ -104,8 +104,10 @@ def add_group(
104
104
  ):
105
105
  """Add a group to an existing vo in the configuration repository"""
106
106
 
107
- # TODO: The use of parse_obj_as should be moved in to typer itself
108
- config_repo = parse_obj_as(ConfigSourceUrl, config_repo)
107
+ # TODO: The use of TypeAdapter should be moved in to typer itself
108
+ config_repo = TypeAdapter(ConfigSourceUrl).validate_python(config_repo)
109
+ if config_repo.scheme != "git+file" or config_repo.path is None:
110
+ raise NotImplementedError("Only git+file:// URLs are supported")
109
111
  repo_path = Path(config_repo.path)
110
112
 
111
113
  new_group = GroupConfig(Properties=set(properties), Quota=None, Users=set())
@@ -139,8 +141,10 @@ def add_user(
139
141
  ):
140
142
  """Add a user to an existing vo and group"""
141
143
 
142
- # TODO: The use of parse_obj_as should be moved in to typer itself
143
- config_repo = parse_obj_as(ConfigSourceUrl, config_repo)
144
+ # TODO: The use of TypeAdapter should be moved in to typer itself
145
+ config_repo = TypeAdapter(ConfigSourceUrl).validate_python(config_repo)
146
+ if config_repo.scheme != "git+file" or config_repo.path is None:
147
+ raise NotImplementedError("Only git+file:// URLs are supported")
144
148
 
145
149
  repo_path = Path(config_repo.path)
146
150
 
@@ -184,6 +188,8 @@ def update_config_and_commit(repo_path: Path, config: Config, message: str):
184
188
  repo = git.Repo(repo_path)
185
189
  yaml_path = repo_path / "default.yml"
186
190
  typer.echo(f"Writing back configuration to {yaml_path}", err=True)
187
- yaml_path.write_text(yaml.safe_dump(config.dict(exclude_unset=True)))
191
+ yaml_path.write_text(
192
+ yaml.safe_dump(config.model_dump(exclude_unset=True, mode="json"))
193
+ )
188
194
  repo.index.add([yaml_path.relative_to(repo_path)])
189
195
  repo.index.commit(message)
@@ -79,14 +79,16 @@ def cs_sync(old_file: Path, new_file: Path):
79
79
 
80
80
  _apply_fixes(raw)
81
81
 
82
- config = Config.parse_obj(raw)
83
- new_file.write_text(yaml.safe_dump(config.dict(exclude_unset=True)))
82
+ config = Config.model_validate(raw)
83
+ new_file.write_text(
84
+ yaml.safe_dump(config.model_dump(exclude_unset=True, mode="json"))
85
+ )
84
86
 
85
87
 
86
88
  def _apply_fixes(raw):
87
89
  """Modify raw in place to make any layout changes between the old and new structure"""
88
90
 
89
- conv_config = ConversionConfig.parse_obj(raw["DiracX"]["CsSync"])
91
+ conv_config = ConversionConfig.model_validate(raw["DiracX"]["CsSync"])
90
92
 
91
93
  raw.pop("DiracX", None)
92
94
  # Remove dips specific parts from the CS
@@ -119,7 +121,7 @@ def _apply_fixes(raw):
119
121
 
120
122
  for vo, vo_meta in conv_config.VOs.items():
121
123
  raw["Registry"][vo] = {
122
- "IdP": vo_meta.IdP,
124
+ "IdP": vo_meta.IdP.model_dump(),
123
125
  "DefaultGroup": vo_meta.DefaultGroup,
124
126
  "Users": {},
125
127
  "Groups": {},
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: diracx-cli
3
- Version: 0.0.1a16
3
+ Version: 0.0.1a17
4
4
  Summary: TODO
5
5
  License: GPL-3.0-only
6
6
  Classifier: Intended Audience :: Science/Research
@@ -4,10 +4,10 @@ diracx/cli/config.py,sha256=r5Lq_SN-1t3IzGAeS57ZzS-ukLhP6PMnmTXNld2pZXU,818
4
4
  diracx/cli/jobs.py,sha256=H1aQGFjaVLG2BShZO0cU3103QiuD1DR81cpm7drQ5Fs,4419
5
5
  diracx/cli/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  diracx/cli/utils.py,sha256=NwhMMHwveKOdW2aoSqpnLnfOKhPnjmPPLpX69naPAzc,855
7
- diracx/cli/internal/__init__.py,sha256=17PDFFNhppYPPq6KPmMxnOG3N6sP3apewpk8VjjHTYY,6041
8
- diracx/cli/internal/legacy.py,sha256=qiO73vIh2LPM6jma6G2RcLINwX6ZP5i1rhYBVMMYOuE,10849
9
- diracx_cli-0.0.1a16.dist-info/METADATA,sha256=T-3BwwSBhj85cqTxaHIkyC3bS9VATqkIxGkdZ2Ae09w,792
10
- diracx_cli-0.0.1a16.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
11
- diracx_cli-0.0.1a16.dist-info/entry_points.txt,sha256=pKKS950WHHoO6teZZXkWztX2XZFZSH6uh9BKY1PA-jg,41
12
- diracx_cli-0.0.1a16.dist-info/top_level.txt,sha256=vJx10tdRlBX3rF2Psgk5jlwVGZNcL3m_7iQWwgPXt-U,7
13
- diracx_cli-0.0.1a16.dist-info/RECORD,,
7
+ diracx/cli/internal/__init__.py,sha256=w61dnlJtwMs13AhWBWP6J4iSMSIc3hU-FVLDhaPYysM,6576
8
+ diracx/cli/internal/legacy.py,sha256=LuFzEi-d7Ayl1G3oiBNfuLXIYshdW37YR9Vh6lN_3No,10905
9
+ diracx_cli-0.0.1a17.dist-info/METADATA,sha256=WHITVK7OOws_P3JbwCcv9SLNpRioRBBoguuqSSerHFo,792
10
+ diracx_cli-0.0.1a17.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
11
+ diracx_cli-0.0.1a17.dist-info/entry_points.txt,sha256=pKKS950WHHoO6teZZXkWztX2XZFZSH6uh9BKY1PA-jg,41
12
+ diracx_cli-0.0.1a17.dist-info/top_level.txt,sha256=vJx10tdRlBX3rF2Psgk5jlwVGZNcL3m_7iQWwgPXt-U,7
13
+ diracx_cli-0.0.1a17.dist-info/RECORD,,