kleinkram 0.52.0.dev20251013121344__tar.gz → 0.52.0.dev20251015122123__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.
Potentially problematic release.
This version of kleinkram might be problematic. Click here for more details.
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/PKG-INFO +1 -1
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/routes.py +18 -4
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_mission.py +1 -1
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_project.py +1 -1
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/core.py +3 -1
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/errors.py +3 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram.egg-info/PKG-INFO +1 -1
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/setup.cfg +1 -1
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/README.md +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/__init__.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/__main__.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/_version.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/__init__.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/client.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/deser.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/file_transfer.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/pagination.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/query.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/auth.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/__init__.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_download.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_endpoint.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_file.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_list.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_upload.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_verify.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/app.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/error_handling.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/config.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/main.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/models.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/printing.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/py.typed +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/types.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/utils.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/wrappers.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram.egg-info/SOURCES.txt +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram.egg-info/dependency_links.txt +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram.egg-info/entry_points.txt +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram.egg-info/requires.txt +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram.egg-info/top_level.txt +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/pyproject.toml +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/requirements.txt +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/setup.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/testing/__init__.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/testing/backend_fixtures.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/__init__.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/conftest.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_config.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_core.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_end_to_end.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_error_handling.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_fixtures.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_printing.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_query.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_utils.py +0 -0
- {kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_wrappers.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kleinkram
|
|
3
|
-
Version: 0.52.0.
|
|
3
|
+
Version: 0.52.0.dev20251015122123
|
|
4
4
|
Summary: give me your bags
|
|
5
5
|
Author: Cyrill Püntener, Dominique Garmier, Johann Schwabe
|
|
6
6
|
Author-email: pucyril@ethz.ch, dgarmier@ethz.ch, jschwab@ethz.ch
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/routes.py
RENAMED
|
@@ -43,6 +43,7 @@ from kleinkram.errors import MissionNotFound
|
|
|
43
43
|
from kleinkram.errors import MissionValidationError
|
|
44
44
|
from kleinkram.errors import ProjectExists
|
|
45
45
|
from kleinkram.errors import ProjectNotFound
|
|
46
|
+
from kleinkram.errors import ProjectValidationError
|
|
46
47
|
from kleinkram.models import File
|
|
47
48
|
from kleinkram.models import Mission
|
|
48
49
|
from kleinkram.models import Project
|
|
@@ -256,7 +257,7 @@ def _validate_mission_name(
|
|
|
256
257
|
def _project_name_is_available(client: AuthenticatedClient, project_name: str) -> bool:
|
|
257
258
|
project_query = ProjectQuery(patterns=[project_name])
|
|
258
259
|
try:
|
|
259
|
-
_ = get_project(client, project_query)
|
|
260
|
+
_ = get_project(client, project_query, exact_match=True)
|
|
260
261
|
except ProjectNotFound:
|
|
261
262
|
return True
|
|
262
263
|
return False
|
|
@@ -350,10 +351,8 @@ def _create_mission(
|
|
|
350
351
|
def _create_project(
|
|
351
352
|
client: AuthenticatedClient, project_name: str, description: str
|
|
352
353
|
) -> UUID:
|
|
353
|
-
if not _project_name_is_available(client, project_name):
|
|
354
|
-
raise ProjectExists(f"Project with name: `{project_name}` already exists")
|
|
355
354
|
|
|
356
|
-
|
|
355
|
+
_validate_project_name(client, project_name, description)
|
|
357
356
|
payload = {"name": project_name, "description": description}
|
|
358
357
|
resp = client.post(CREATE_PROJECT, json=payload)
|
|
359
358
|
resp.raise_for_status()
|
|
@@ -361,6 +360,21 @@ def _create_project(
|
|
|
361
360
|
return UUID(resp.json()["uuid"], version=4)
|
|
362
361
|
|
|
363
362
|
|
|
363
|
+
def _validate_project_name(
|
|
364
|
+
client: AuthenticatedClient, project_name: str, description: str
|
|
365
|
+
) -> None:
|
|
366
|
+
if not _project_name_is_available(client, project_name):
|
|
367
|
+
raise ProjectExists(f"Project with name: `{project_name}` already exists")
|
|
368
|
+
|
|
369
|
+
if project_name.endswith(" "):
|
|
370
|
+
raise ProjectValidationError(
|
|
371
|
+
f"Project name must not end with a tailing whitespace: `{project_name}`"
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
if not description:
|
|
375
|
+
raise ProjectValidationError("Project description is required")
|
|
376
|
+
|
|
377
|
+
|
|
364
378
|
def _validate_tag_value(tag_value, tag_datatype) -> None:
|
|
365
379
|
if tag_datatype == "NUMBER":
|
|
366
380
|
try:
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_mission.py
RENAMED
|
@@ -46,7 +46,7 @@ def create(
|
|
|
46
46
|
metadata_dct = load_metadata(Path(metadata)) if metadata else {} # noqa
|
|
47
47
|
|
|
48
48
|
client = AuthenticatedClient()
|
|
49
|
-
project = get_project(client, project_query)
|
|
49
|
+
project = get_project(client, project_query, exact_match=True)
|
|
50
50
|
project_id = project.id
|
|
51
51
|
project_required_tags = project.required_tags
|
|
52
52
|
mission_id = kleinkram.api.routes._create_mission(
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_project.py
RENAMED
|
@@ -73,7 +73,7 @@ def update(
|
|
|
73
73
|
project_query = ProjectQuery(ids=project_ids, patterns=project_patterns)
|
|
74
74
|
|
|
75
75
|
client = AuthenticatedClient()
|
|
76
|
-
project_id = get_project(client=client, query=project_query).id
|
|
76
|
+
project_id = get_project(client=client, query=project_query, exact_match=True).id
|
|
77
77
|
kleinkram.core.update_project(
|
|
78
78
|
client=client, project_id=project_id, description=description, new_name=new_name
|
|
79
79
|
)
|
|
@@ -107,7 +107,9 @@ def upload(
|
|
|
107
107
|
|
|
108
108
|
if create and mission is None:
|
|
109
109
|
# check if project exists and get its id at the same time
|
|
110
|
-
project = kleinkram.api.routes.get_project(
|
|
110
|
+
project = kleinkram.api.routes.get_project(
|
|
111
|
+
client, query=query.project_query, exact_match=True
|
|
112
|
+
)
|
|
111
113
|
project_id = project.id
|
|
112
114
|
project_required_tags = project.required_tags
|
|
113
115
|
mission_name = check_mission_query_is_creatable(query)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kleinkram
|
|
3
|
-
Version: 0.52.0.
|
|
3
|
+
Version: 0.52.0.dev20251015122123
|
|
4
4
|
Summary: give me your bags
|
|
5
5
|
Author: Cyrill Püntener, Dominique Garmier, Johann Schwabe
|
|
6
6
|
Author-email: pucyril@ethz.ch, dgarmier@ethz.ch, jschwab@ethz.ch
|
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/__init__.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/__main__.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/_version.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/__init__.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/client.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/deser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/api/query.py
RENAMED
|
File without changes
|
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/__init__.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_download.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_endpoint.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_file.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_list.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_upload.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/_verify.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/cli/app.py
RENAMED
|
File without changes
|
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/models.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/printing.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/py.typed
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/types.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/utils.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/kleinkram/wrappers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/testing/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_config.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_core.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_end_to_end.py
RENAMED
|
File without changes
|
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_fixtures.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_printing.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_query.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_utils.py
RENAMED
|
File without changes
|
{kleinkram-0.52.0.dev20251013121344 → kleinkram-0.52.0.dev20251015122123}/tests/test_wrappers.py
RENAMED
|
File without changes
|