ssot-cli 0.1.6.dev1__tar.gz → 0.1.7__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 (30) hide show
  1. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/PKG-INFO +3 -3
  2. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/pyproject.toml +3 -3
  3. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/adr_cmd.py +3 -2
  4. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/boundary_cmd.py +3 -2
  5. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/claim_cmd.py +3 -2
  6. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/common.py +4 -0
  7. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/evidence_cmd.py +3 -2
  8. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/feature_cmd.py +3 -2
  9. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/issue_cmd.py +3 -2
  10. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/profile_cmd.py +3 -2
  11. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/registry_cmd.py +14 -1
  12. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/release_cmd.py +3 -2
  13. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/risk_cmd.py +3 -2
  14. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/spec_cmd.py +3 -2
  15. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/test_cmd.py +3 -2
  16. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli.egg-info/PKG-INFO +3 -3
  17. ssot_cli-0.1.7/src/ssot_cli.egg-info/requires.txt +5 -0
  18. ssot_cli-0.1.6.dev1/src/ssot_cli.egg-info/requires.txt +0 -5
  19. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/README.md +0 -0
  20. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/setup.cfg +0 -0
  21. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/__init__.py +0 -0
  22. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/graph_cmd.py +0 -0
  23. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/init_cmd.py +0 -0
  24. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/main.py +0 -0
  25. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/upgrade_cmd.py +0 -0
  26. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli/validate_cmd.py +0 -0
  27. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli.egg-info/SOURCES.txt +0 -0
  28. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli.egg-info/dependency_links.txt +0 -0
  29. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli.egg-info/entry_points.txt +0 -0
  30. {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.7}/src/ssot_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ssot-cli
3
- Version: 0.1.6.dev1
3
+ Version: 0.1.7
4
4
  Summary: Primary CLI distribution for ssot-registry.
5
5
  Author-email: Jacob Stewart <jacob@swarmauri.com>
6
6
  License-Expression: Apache-2.0
@@ -24,8 +24,8 @@ Classifier: Topic :: Software Development :: Quality Assurance
24
24
  Classifier: Topic :: Utilities
25
25
  Requires-Python: <3.14,>=3.10
26
26
  Description-Content-Type: text/markdown
27
- Requires-Dist: ssot-contracts<0.3.0,>=0.2.11.dev1
28
- Requires-Dist: ssot-core<0.3.0,>=0.2.11.dev1
27
+ Requires-Dist: ssot-contracts<0.3.0,>=0.2.12
28
+ Requires-Dist: ssot-core<0.3.0,>=0.2.12
29
29
  Requires-Dist: tomli>=2.0.1; python_version < "3.11"
30
30
 
31
31
  <div align="center">
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ssot-cli"
7
- version = "0.1.6.dev1"
7
+ version = "0.1.7"
8
8
  description = "Primary CLI distribution for ssot-registry."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10,<3.14"
11
11
  license = "Apache-2.0"
12
12
  authors = [{ name = "Jacob Stewart", email = "jacob@swarmauri.com" }]
13
13
  dependencies = [
14
- "ssot-contracts>=0.2.11.dev1,<0.3.0",
15
- "ssot-core>=0.2.11.dev1,<0.3.0",
14
+ "ssot-contracts>=0.2.12,<0.3.0",
15
+ "ssot-core>=0.2.12,<0.3.0",
16
16
  "tomli>=2.0.1; python_version < '3.11'",
17
17
  ]
18
18
  keywords = ["ssot", "cli", "registry", "governance", "release-management", "validation", "developer-tools"]
@@ -14,7 +14,7 @@ from ssot_registry.api import (
14
14
  supersede_documents,
15
15
  update_document,
16
16
  )
17
- from ssot_cli.common import add_path_argument, compact_dict
17
+ from ssot_cli.common import add_ids_argument, add_path_argument, compact_dict
18
18
 
19
19
 
20
20
  def register_adr(subparsers: argparse._SubParsersAction) -> None:
@@ -49,6 +49,7 @@ def register_adr(subparsers: argparse._SubParsersAction) -> None:
49
49
 
50
50
  list_cmd = adr_sub.add_parser("list", help="List ADRs.", description="List ADR documents currently known to the registry.")
51
51
  add_path_argument(list_cmd)
52
+ add_ids_argument(list_cmd, help_text="ADR ids to include in the list output.")
52
53
  list_cmd.set_defaults(func=run_list)
53
54
 
54
55
  update = adr_sub.add_parser(
@@ -131,7 +132,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
131
132
 
132
133
 
133
134
  def run_list(args: argparse.Namespace) -> dict[str, object]:
134
- return list_documents(args.path, "adr")
135
+ return list_documents(args.path, "adr", ids=args.ids)
135
136
 
136
137
 
137
138
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -14,7 +14,7 @@ from ssot_registry.api import (
14
14
  remove_boundary_profiles,
15
15
  update_entity,
16
16
  )
17
- from ssot_cli.common import add_optional_bool_argument, add_path_argument, compact_dict
17
+ from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, compact_dict
18
18
 
19
19
 
20
20
  def register_boundary(subparsers: argparse._SubParsersAction) -> None:
@@ -42,6 +42,7 @@ def register_boundary(subparsers: argparse._SubParsersAction) -> None:
42
42
 
43
43
  list_cmd = boundary_sub.add_parser("list", help="List boundaries.", description="List boundary records currently known to the registry.")
44
44
  add_path_argument(list_cmd)
45
+ add_ids_argument(list_cmd, help_text="Boundary ids to include in the list output.")
45
46
  list_cmd.set_defaults(func=run_list)
46
47
 
47
48
  update = boundary_sub.add_parser("update", help="Edit boundary metadata.", description="Update mutable boundary fields without changing the feature or profile membership lists.")
@@ -104,7 +105,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
104
105
 
105
106
 
106
107
  def run_list(args: argparse.Namespace) -> dict[str, object]:
107
- return list_entities(args.path, "boundaries")
108
+ return list_entities(args.path, "boundaries", ids=args.ids)
108
109
 
109
110
 
110
111
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -14,7 +14,7 @@ from ssot_registry.api import (
14
14
  unlink_entities,
15
15
  update_entity,
16
16
  )
17
- from ssot_cli.common import add_path_argument, collect_list_fields, compact_dict
17
+ from ssot_cli.common import add_ids_argument, add_path_argument, collect_list_fields, compact_dict
18
18
 
19
19
 
20
20
  _LINK_MAPPING = {
@@ -52,6 +52,7 @@ def register_claim(subparsers: argparse._SubParsersAction) -> None:
52
52
 
53
53
  list_cmd = claim_sub.add_parser("list", help="List claims.", description="List claim records currently known to the registry.")
54
54
  add_path_argument(list_cmd)
55
+ add_ids_argument(list_cmd, help_text="Claim ids to include in the list output.")
55
56
  list_cmd.set_defaults(func=run_list)
56
57
 
57
58
  update = claim_sub.add_parser("update", help="Edit claim metadata.", description="Update mutable claim fields without changing its linked support graph.")
@@ -128,7 +129,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
128
129
 
129
130
 
130
131
  def run_list(args: argparse.Namespace) -> dict[str, object]:
131
- return list_entities(args.path, "claims")
132
+ return list_entities(args.path, "claims", ids=args.ids)
132
133
 
133
134
 
134
135
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -17,6 +17,10 @@ def add_id_argument(parser: argparse.ArgumentParser, flag: str = "--id", *, dest
17
17
  parser.add_argument(flag, dest=dest, required=True, help=help_text)
18
18
 
19
19
 
20
+ def add_ids_argument(parser: argparse.ArgumentParser, flag: str = "--ids", *, dest: str | None = None, help_text: str = "Normalized ids.") -> None:
21
+ parser.add_argument(flag, dest=dest, nargs="+", default=None, help=help_text)
22
+
23
+
20
24
  def add_optional_bool_argument(
21
25
  parser: argparse.ArgumentParser,
22
26
  name: str,
@@ -12,7 +12,7 @@ from ssot_registry.api import (
12
12
  update_entity,
13
13
  verify_evidence_rows,
14
14
  )
15
- from ssot_cli.common import add_path_argument, collect_list_fields, compact_dict
15
+ from ssot_cli.common import add_ids_argument, add_path_argument, collect_list_fields, compact_dict
16
16
 
17
17
 
18
18
  _LINK_MAPPING = {
@@ -48,6 +48,7 @@ def register_evidence(subparsers: argparse._SubParsersAction) -> None:
48
48
 
49
49
  list_cmd = evidence_sub.add_parser("list", help="List evidence rows.", description="List evidence artifacts currently known to the registry.")
50
50
  add_path_argument(list_cmd)
51
+ add_ids_argument(list_cmd, help_text="Evidence ids to include in the list output.")
51
52
  list_cmd.set_defaults(func=run_list)
52
53
 
53
54
  update = evidence_sub.add_parser("update", help="Edit evidence metadata.", description="Update mutable evidence fields without changing its link graph.")
@@ -111,7 +112,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
111
112
 
112
113
 
113
114
  def run_list(args: argparse.Namespace) -> dict[str, object]:
114
- return list_entities(args.path, "evidence")
115
+ return list_entities(args.path, "evidence", ids=args.ids)
115
116
 
116
117
 
117
118
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -14,7 +14,7 @@ from ssot_registry.api import (
14
14
  unlink_entities,
15
15
  update_entity,
16
16
  )
17
- from ssot_cli.common import add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
17
+ from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
18
18
 
19
19
 
20
20
  _LINK_MAPPING = {
@@ -63,6 +63,7 @@ def register_feature(subparsers: argparse._SubParsersAction) -> None:
63
63
 
64
64
  list_cmd = feature_sub.add_parser("list", help="List features.", description="List feature records currently known to the registry.")
65
65
  add_path_argument(list_cmd)
66
+ add_ids_argument(list_cmd, help_text="Feature ids to include in the list output.")
66
67
  list_cmd.set_defaults(func=run_list)
67
68
 
68
69
  update = feature_sub.add_parser("update", help="Edit feature metadata.", description="Update mutable feature fields without changing links or planning state.")
@@ -164,7 +165,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
164
165
 
165
166
 
166
167
  def run_list(args: argparse.Namespace) -> dict[str, object]:
167
- return list_entities(args.path, "features")
168
+ return list_entities(args.path, "features", ids=args.ids)
168
169
 
169
170
 
170
171
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -13,7 +13,7 @@ from ssot_registry.api import (
13
13
  unlink_entities,
14
14
  update_entity,
15
15
  )
16
- from ssot_cli.common import add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
16
+ from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
17
17
 
18
18
 
19
19
  _LINK_MAPPING = {
@@ -57,6 +57,7 @@ def register_issue(subparsers: argparse._SubParsersAction) -> None:
57
57
 
58
58
  list_cmd = issue_sub.add_parser("list", help="List issues.", description="List issue records currently known to the registry.")
59
59
  add_path_argument(list_cmd)
60
+ add_ids_argument(list_cmd, help_text="Issue ids to include in the list output.")
60
61
  list_cmd.set_defaults(func=run_list)
61
62
 
62
63
  update = issue_sub.add_parser("update", help="Edit issue metadata.", description="Update mutable issue fields without changing links or plan assignments.")
@@ -146,7 +147,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
146
147
 
147
148
 
148
149
  def run_list(args: argparse.Namespace) -> dict[str, object]:
149
- return list_entities(args.path, "issues")
150
+ return list_entities(args.path, "issues", ids=args.ids)
150
151
 
151
152
 
152
153
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -12,7 +12,7 @@ from ssot_registry.api import (
12
12
  unlink_entities,
13
13
  update_entity,
14
14
  )
15
- from ssot_cli.common import add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
15
+ from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
16
16
 
17
17
  _LINK_MAPPING = {
18
18
  "feature_ids": "feature_ids",
@@ -53,6 +53,7 @@ def register_profile(subparsers: argparse._SubParsersAction) -> None:
53
53
 
54
54
  list_cmd = profile_sub.add_parser("list", help="List profiles.", description="List profile records currently known to the registry.")
55
55
  add_path_argument(list_cmd)
56
+ add_ids_argument(list_cmd, help_text="Profile ids to include in the list output.")
56
57
  list_cmd.set_defaults(func=run_list)
57
58
 
58
59
  update = profile_sub.add_parser("update", help="Edit profile metadata.", description="Update mutable profile fields without changing its link graph.")
@@ -128,7 +129,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
128
129
 
129
130
 
130
131
  def run_list(args: argparse.Namespace) -> dict[str, object]:
131
- return list_entities(args.path, "profiles")
132
+ return list_entities(args.path, "profiles", ids=args.ids)
132
133
 
133
134
 
134
135
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import argparse
4
4
 
5
- from ssot_registry.api import export_registry
5
+ from ssot_registry.api import export_registry, sync_automated_statuses
6
6
 
7
7
 
8
8
  def register_registry(subparsers: argparse._SubParsersAction) -> None:
@@ -23,6 +23,19 @@ def register_registry(subparsers: argparse._SubParsersAction) -> None:
23
23
  export.add_argument("--output", default=None, help="Destination file path. Defaults under `.ssot/exports`.")
24
24
  export.set_defaults(func=run_export)
25
25
 
26
+ sync_statuses = registry_sub.add_parser(
27
+ "sync-statuses",
28
+ help="Derive and persist automated statuses.",
29
+ description="Recompute profile, feature, test, claim, and evidence statuses from registry links and local artifact paths.",
30
+ )
31
+ sync_statuses.add_argument("path", nargs="?", default=".", help="Repository root or registry file to update.")
32
+ sync_statuses.add_argument("--dry-run", action="store_true", help="Report proposed status changes without saving them.")
33
+ sync_statuses.set_defaults(func=run_sync_statuses)
34
+
26
35
 
27
36
  def run_export(args: argparse.Namespace) -> dict[str, object]:
28
37
  return export_registry(path=args.path, output_format=args.format, output=args.output)
38
+
39
+
40
+ def run_sync_statuses(args: argparse.Namespace) -> dict[str, object]:
41
+ return sync_automated_statuses(path=args.path, dry_run=args.dry_run)
@@ -17,7 +17,7 @@ from ssot_registry.api import (
17
17
  revoke_release,
18
18
  update_entity,
19
19
  )
20
- from ssot_cli.common import add_path_argument, compact_dict
20
+ from ssot_cli.common import add_ids_argument, add_path_argument, compact_dict
21
21
 
22
22
 
23
23
  def register_release(subparsers: argparse._SubParsersAction) -> None:
@@ -45,6 +45,7 @@ def register_release(subparsers: argparse._SubParsersAction) -> None:
45
45
 
46
46
  list_cmd = release_sub.add_parser("list", help="List releases.", description="List release records currently known to the registry.")
47
47
  add_path_argument(list_cmd)
48
+ add_ids_argument(list_cmd, help_text="Release ids to include in the list output.")
48
49
  list_cmd.set_defaults(func=run_list)
49
50
 
50
51
  update = release_sub.add_parser("update", help="Edit release metadata.", description="Update mutable release fields without changing its claim or evidence membership lists.")
@@ -124,7 +125,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
124
125
 
125
126
 
126
127
  def run_list(args: argparse.Namespace) -> dict[str, object]:
127
- return list_entities(args.path, "releases")
128
+ return list_entities(args.path, "releases", ids=args.ids)
128
129
 
129
130
 
130
131
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -12,7 +12,7 @@ from ssot_registry.api import (
12
12
  unlink_entities,
13
13
  update_entity,
14
14
  )
15
- from ssot_cli.common import add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
15
+ from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
16
16
 
17
17
 
18
18
  _LINK_MAPPING = {
@@ -54,6 +54,7 @@ def register_risk(subparsers: argparse._SubParsersAction) -> None:
54
54
 
55
55
  list_cmd = risk_sub.add_parser("list", help="List risks.", description="List risk records currently known to the registry.")
56
56
  add_path_argument(list_cmd)
57
+ add_ids_argument(list_cmd, help_text="Risk ids to include in the list output.")
57
58
  list_cmd.set_defaults(func=run_list)
58
59
 
59
60
  update = risk_sub.add_parser("update", help="Edit risk metadata.", description="Update mutable risk fields without changing linked entities.")
@@ -135,7 +136,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
135
136
 
136
137
 
137
138
  def run_list(args: argparse.Namespace) -> dict[str, object]:
138
- return list_entities(args.path, "risks")
139
+ return list_entities(args.path, "risks", ids=args.ids)
139
140
 
140
141
 
141
142
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -16,7 +16,7 @@ from ssot_registry.api import (
16
16
  supersede_documents,
17
17
  update_document,
18
18
  )
19
- from ssot_cli.common import add_path_argument, compact_dict
19
+ from ssot_cli.common import add_ids_argument, add_path_argument, compact_dict
20
20
 
21
21
 
22
22
  def register_spec(subparsers: argparse._SubParsersAction) -> None:
@@ -53,6 +53,7 @@ def register_spec(subparsers: argparse._SubParsersAction) -> None:
53
53
 
54
54
  list_cmd = spec_sub.add_parser("list", help="List SPECs.", description="List SPEC documents currently registered.")
55
55
  add_path_argument(list_cmd)
56
+ add_ids_argument(list_cmd, help_text="SPEC ids to include in the list output.")
56
57
  list_cmd.set_defaults(func=run_list)
57
58
 
58
59
  link = spec_sub.add_parser("link", help="Attach ADRs to a SPEC.", description="Add typed ADR references to a SPEC without changing other document fields.")
@@ -139,7 +140,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
139
140
 
140
141
 
141
142
  def run_list(args: argparse.Namespace) -> dict[str, object]:
142
- return list_documents(args.path, "spec")
143
+ return list_documents(args.path, "spec", ids=args.ids)
143
144
 
144
145
 
145
146
  def run_link(args: argparse.Namespace) -> dict[str, object]:
@@ -3,7 +3,7 @@
3
3
  import argparse
4
4
 
5
5
  from ssot_registry.api import create_entity, delete_entity, get_entity, link_entities, list_entities, unlink_entities, update_entity
6
- from ssot_cli.common import add_path_argument, collect_list_fields, compact_dict
6
+ from ssot_cli.common import add_ids_argument, add_path_argument, collect_list_fields, compact_dict
7
7
 
8
8
 
9
9
  _LINK_MAPPING = {
@@ -40,6 +40,7 @@ def register_test(subparsers: argparse._SubParsersAction) -> None:
40
40
 
41
41
  list_cmd = test_sub.add_parser("list", help="List tests.", description="List test records currently known to the registry.")
42
42
  add_path_argument(list_cmd)
43
+ add_ids_argument(list_cmd, help_text="Test ids to include in the list output.")
43
44
  list_cmd.set_defaults(func=run_list)
44
45
 
45
46
  update = test_sub.add_parser("update", help="Edit test metadata.", description="Update mutable test fields without changing link relationships.")
@@ -99,7 +100,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
99
100
 
100
101
 
101
102
  def run_list(args: argparse.Namespace) -> dict[str, object]:
102
- return list_entities(args.path, "tests")
103
+ return list_entities(args.path, "tests", ids=args.ids)
103
104
 
104
105
 
105
106
  def run_update(args: argparse.Namespace) -> dict[str, object]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ssot-cli
3
- Version: 0.1.6.dev1
3
+ Version: 0.1.7
4
4
  Summary: Primary CLI distribution for ssot-registry.
5
5
  Author-email: Jacob Stewart <jacob@swarmauri.com>
6
6
  License-Expression: Apache-2.0
@@ -24,8 +24,8 @@ Classifier: Topic :: Software Development :: Quality Assurance
24
24
  Classifier: Topic :: Utilities
25
25
  Requires-Python: <3.14,>=3.10
26
26
  Description-Content-Type: text/markdown
27
- Requires-Dist: ssot-contracts<0.3.0,>=0.2.11.dev1
28
- Requires-Dist: ssot-core<0.3.0,>=0.2.11.dev1
27
+ Requires-Dist: ssot-contracts<0.3.0,>=0.2.12
28
+ Requires-Dist: ssot-core<0.3.0,>=0.2.12
29
29
  Requires-Dist: tomli>=2.0.1; python_version < "3.11"
30
30
 
31
31
  <div align="center">
@@ -0,0 +1,5 @@
1
+ ssot-contracts<0.3.0,>=0.2.12
2
+ ssot-core<0.3.0,>=0.2.12
3
+
4
+ [:python_version < "3.11"]
5
+ tomli>=2.0.1
@@ -1,5 +0,0 @@
1
- ssot-contracts<0.3.0,>=0.2.11.dev1
2
- ssot-core<0.3.0,>=0.2.11.dev1
3
-
4
- [:python_version < "3.11"]
5
- tomli>=2.0.1
File without changes
File without changes