hypershell 2.8.1__tar.gz → 2.8.3__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.
- {hypershell-2.8.1 → hypershell-2.8.3}/PKG-INFO +2 -2
- {hypershell-2.8.1 → hypershell-2.8.3}/pyproject.toml +1 -1
- {hypershell-2.8.1 → hypershell-2.8.3}/share/man/man1/hs.1 +1 -1
- {hypershell-2.8.1 → hypershell-2.8.3}/share/man/man1/hsx.1 +1 -1
- {hypershell-2.8.1 → hypershell-2.8.3}/share/man/man1/hyper-shell.1 +1 -1
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/data/model.py +6 -2
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_submit.py +22 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/uv.lock +93 -64
- {hypershell-2.8.1 → hypershell-2.8.3}/.gitignore +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/CODE_OF_CONDUCT.md +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/LICENSE +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/README.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/Makefile +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/citation.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/client_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/client_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/client_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/cluster_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/cluster_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/cluster_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_edit_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_edit_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_edit_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_get_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_get_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_get_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_intro.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_intro_alt.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_param_ref.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_pythonpath.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_set_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_set_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_set_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_site_vars.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_task_env.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_task_env_alt.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_which_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_which_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/config_which_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/database.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/database_alt.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/exit_status.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/initdb_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/initdb_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/initdb_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/license.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/security_alt.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/server_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/server_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/server_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/signals.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/submit_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/submit_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/submit_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_groups_alt.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_info_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_info_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_info_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_run_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_run_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_run_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_search_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_search_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_search_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_submit_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_submit_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_submit_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_update_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_update_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_update_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_wait_desc.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_wait_help.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/task_wait_usage.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/templates.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/templates_alt.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_include/tls_cli_options.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_static/custom.css +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_static/logo-dark-mode.png +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/_static/logo-light-mode.png +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/api/client.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/api/cluster.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/api/data.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/api/index.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/api/server.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/api/submit.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20230329_2_2_0_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20230413_2_3_0_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20230602_2_4_0_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20240518_2_5_0_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20240706_2_5_2_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20241115_2_6_0_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20241115_announce_logo.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20241231_2_6_1_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20250215_2_6_5_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20250405_2_6_6_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20250504_2_7_0_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/20260705_2_8_0_release.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/blog/index.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/client.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/cluster.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/config.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/config_edit.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/config_get.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/config_set.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/config_which.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/index.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/initdb.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/server.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/submit.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/task_info.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/task_run.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/task_search.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/task_submit.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/task_update.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/cli/task_wait.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/conf.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/config.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/database.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/getting_started.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/index.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/install.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/logging.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/manual.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/roadmap.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/security.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/templates.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/tutorial/advanced.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/tutorial/basic.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/tutorial/distributed.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/docs/tutorial/hybrid.rst +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/share/bash_completion.d/hs +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/share/bash_completion.d/hsx +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/share/zsh/site-functions/_hs +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/__init__.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/client.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/cluster/__init__.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/cluster/local.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/cluster/remote.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/cluster/ssh.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/config.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/__init__.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/config.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/exceptions.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/fsm.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/heartbeat.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/logging.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/platform.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/pretty_print.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/queue.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/remote.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/resource.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/signal.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/sys.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/tag.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/template.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/thread.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/tls.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/types.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/core/uuid.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/data/__init__.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/data/core.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/server.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/submit.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/src/hypershell/task.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/__init__.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/conftest.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_autoscale.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_cancel.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_cluster.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_data/__init__.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_data/test_core.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_data/test_model.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_groups.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_initdb.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_logging.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_main.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_queue_tls.py +0 -0
- {hypershell-2.8.1 → hypershell-2.8.3}/tests/test_server.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: hypershell
|
|
3
|
-
Version: 2.8.
|
|
3
|
+
Version: 2.8.3
|
|
4
4
|
Summary: A cross-platform, high-throughput computing utility for processing shell commands over a distributed, asynchronous queue.
|
|
5
5
|
Project-URL: Homepage, https://hypershell.org
|
|
6
6
|
Project-URL: Documentation, https://hypershell.readthedocs.io
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "HS" "1" "
|
|
31
|
+
.TH "HS" "1" "Nov 01, 2026" "2.8.3" "hypershell"
|
|
32
32
|
.SH NAME
|
|
33
33
|
hs \- Process shell commands over a distributed, asynchronous queue
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "HS" "1" "
|
|
31
|
+
.TH "HS" "1" "Nov 01, 2026" "2.8.3" "hypershell"
|
|
32
32
|
.SH NAME
|
|
33
33
|
hs \- Process shell commands over a distributed, asynchronous queue
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "HYPER-SHELL" "1" "
|
|
31
|
+
.TH "HYPER-SHELL" "1" "Nov 01, 2026" "2.8.3" "hypershell"
|
|
32
32
|
.SH NAME
|
|
33
33
|
hyper-shell \- Process shell commands over a distributed, asynchronous queue
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -25,7 +25,7 @@ from sqlalchemy.dialects.postgresql import SMALLINT, UUID as POSTGRES_UUID, JSON
|
|
|
25
25
|
# Internal libs
|
|
26
26
|
from hypershell.core.logging import Logger, HOSTNAME, INSTANCE
|
|
27
27
|
from hypershell.core.heartbeat import Heartbeat
|
|
28
|
-
from hypershell.core.types import JSONData, to_json_type, from_json_type, serialize, deserialize
|
|
28
|
+
from hypershell.core.types import JSONData, to_json_type, from_json_type, serialize, deserialize, parse_bytes
|
|
29
29
|
from hypershell.core.uuid import uuid
|
|
30
30
|
from hypershell.core.tag import Tag
|
|
31
31
|
from hypershell.data.core import schema, Session
|
|
@@ -344,7 +344,11 @@ class Task(Entity):
|
|
|
344
344
|
tag = {**(tag or {}), **inline_tags, **{'part': 0, }}
|
|
345
345
|
other['group'] = tag.pop('group', group)
|
|
346
346
|
other['cores'] = tag.pop('cores', other.get('cores', None))
|
|
347
|
-
|
|
347
|
+
# A memory value may arrive as a unit-bearing string ('2GB') from an inline
|
|
348
|
+
# `memory:` tag (parsed by smart_coerce, which leaves units alone) — parse it to
|
|
349
|
+
# integer bytes as the `--memory` flag does, so resource accounting stays numeric.
|
|
350
|
+
memory = tag.pop('memory', other.get('memory', None))
|
|
351
|
+
other['memory'] = parse_bytes(memory) if isinstance(memory, str) else memory
|
|
348
352
|
other['timeout'] = tag.pop('timeout', other.get('timeout', None))
|
|
349
353
|
return Task(id=uuid(), args=args,
|
|
350
354
|
submit_id=INSTANCE, submit_host=HOSTNAME, submit_time=datetime.now().astimezone(),
|
|
@@ -18,6 +18,7 @@ from cmdkit.app import exit_status
|
|
|
18
18
|
# Internal libs
|
|
19
19
|
from tests import main, main_lines, NO_OUTPUT, create_taskfile_echo, assert_output, UUID_PATTERN
|
|
20
20
|
from hypershell.submit import SubmitApp
|
|
21
|
+
from hypershell.data.model import Task
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
@mark.integration
|
|
@@ -213,3 +214,24 @@ def test_submit_bundled(temp_site: Path) -> None:
|
|
|
213
214
|
assert main_lines(['hs', 'list', 'args', '-f', 'plain', '-s', 'submit_time']) == (
|
|
214
215
|
exit_status.success, [f'echo {n}' for n in range(100)], NO_OUTPUT
|
|
215
216
|
)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
@mark.unit
|
|
220
|
+
def test_inline_memory_tag_parses_units_to_bytes() -> None:
|
|
221
|
+
"""An inline ``memory:<size>`` resource tag is parsed to integer bytes — like the ``--memory``
|
|
222
|
+
flag (parse_bytes) — not stored as a raw string.
|
|
223
|
+
|
|
224
|
+
smart_coerce (used for inline tag values) leaves unit-bearing strings like ``2GB`` untouched, so
|
|
225
|
+
without explicit parsing ``Task.memory`` would be a string and client-side resource accounting
|
|
226
|
+
(``memory_total < task.memory``, an int vs str comparison) crashes.
|
|
227
|
+
"""
|
|
228
|
+
# The reported form: an inline HYPERSHELL comment carrying a unit suffix.
|
|
229
|
+
task = Task.new(args='echo AAA #HYPERSHELL: cores:1 memory:2GB timeout:10')
|
|
230
|
+
assert task.memory == 2147483648 # 2 * 1024**3
|
|
231
|
+
assert task.cores == 1 and task.timeout == 10
|
|
232
|
+
# The tag= kwarg form resolves identically.
|
|
233
|
+
assert Task.new(args='echo', tag={'memory': '512MB'}).memory == 536870912
|
|
234
|
+
# Unit-less, already-integer, and absent values are unaffected (no regression).
|
|
235
|
+
assert Task.new(args='echo', tag={'memory': '2000'}).memory == 2000
|
|
236
|
+
assert Task.new(args='echo', tag={'memory': 4096}).memory == 4096
|
|
237
|
+
assert Task.new(args='echo').memory is None
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
version = 1
|
|
2
|
-
revision =
|
|
2
|
+
revision = 5
|
|
3
3
|
requires-python = ">=3.11"
|
|
4
4
|
resolution-markers = [
|
|
5
5
|
"python_full_version >= '3.13'",
|
|
6
|
-
"python_full_version < '3.13'",
|
|
6
|
+
"python_full_version >= '3.11.5' and python_full_version < '3.13'",
|
|
7
|
+
"python_full_version < '3.11.5'",
|
|
7
8
|
]
|
|
8
9
|
|
|
9
10
|
[manifest]
|
|
@@ -147,7 +148,8 @@ name = "beautifulsoup4"
|
|
|
147
148
|
version = "4.13.3"
|
|
148
149
|
source = { registry = "https://pypi.org/simple" }
|
|
149
150
|
dependencies = [
|
|
150
|
-
{ name = "soupsieve" },
|
|
151
|
+
{ name = "soupsieve", version = "2.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11.5'" },
|
|
152
|
+
{ name = "soupsieve", version = "3.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11.5'" },
|
|
151
153
|
{ name = "typing-extensions" },
|
|
152
154
|
]
|
|
153
155
|
sdist = { url = "https://files.pythonhosted.org/packages/f0/3c/adaf39ce1fb4afdd21b611e3d530b183bb7759c9b673d60db0e347fd4439/beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b", size = 619516, upload-time = "2025-02-04T20:05:01.681Z" }
|
|
@@ -175,11 +177,11 @@ filecache = [
|
|
|
175
177
|
|
|
176
178
|
[[package]]
|
|
177
179
|
name = "certifi"
|
|
178
|
-
version = "
|
|
180
|
+
version = "2026.10.23"
|
|
179
181
|
source = { registry = "https://pypi.org/simple" }
|
|
180
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
182
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fd/11/b524cbd9bbdaca58608e4cf4053fd463417549e1959fa8d3aa18319f9555/certifi-2026.10.23.tar.gz", hash = "sha256:a9895e6e2758b371e0545e321a3a8fd1fcfd9829ada8824a936dfb16aaaf36cd", size = 136225, upload-time = "2026-10-23T11:36:16.478Z" }
|
|
181
183
|
wheels = [
|
|
182
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
184
|
+
{ url = "https://files.pythonhosted.org/packages/32/d1/a3652fe2c19134d0d15922177821d863cbd7e842d53a21bbe7e8e3a1b5ac/certifi-2026.10.23-py3-none-any.whl", hash = "sha256:e9b54de76e530bb6cf0ccd036787103acb58fd42ba930ea8bf948ddbaa2f61d1", size = 135082, upload-time = "2026-10-23T11:36:14.763Z" },
|
|
183
185
|
]
|
|
184
186
|
|
|
185
187
|
[[package]]
|
|
@@ -338,61 +340,71 @@ wheels = [
|
|
|
338
340
|
|
|
339
341
|
[[package]]
|
|
340
342
|
name = "cryptography"
|
|
341
|
-
version = "
|
|
343
|
+
version = "50.0.2"
|
|
342
344
|
source = { registry = "https://pypi.org/simple" }
|
|
343
345
|
dependencies = [
|
|
344
346
|
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
|
345
347
|
]
|
|
346
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
347
|
-
wheels = [
|
|
348
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
349
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
350
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
351
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
352
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
353
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
354
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
355
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
356
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
357
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
358
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
359
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
360
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
361
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
362
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
363
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
364
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
365
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
366
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
367
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
368
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
369
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
370
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
371
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
372
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
373
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
374
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
375
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
376
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
377
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
378
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
379
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
380
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
381
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
382
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
383
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
384
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
385
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
386
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
387
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
388
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
389
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
390
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
391
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
392
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
393
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
394
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
395
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
348
|
+
sdist = { url = "https://files.pythonhosted.org/packages/9d/af/182eb91b0df3fe75c4d9f26fe70684569566745f6ba7e5c9c73a862c5252/cryptography-50.0.2.tar.gz", hash = "sha256:7b46165bb56eb4704e2eaaf86f3c940d19154535d9b0ca7d6d590b04060e00d5", size = 880623, upload-time = "2026-09-30T15:30:04.884Z" }
|
|
349
|
+
wheels = [
|
|
350
|
+
{ url = "https://files.pythonhosted.org/packages/e5/56/d194340cc4a57535e82e1bee9e89667ac4b7c13b5d3f59686deae3094dd5/cryptography-50.0.2-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:fa8f5efb344d6908a1ce62f4a24e2e5780f825d6f53f5f50ec5ffacac72936cb", size = 3914904, upload-time = "2026-09-30T14:43:44.339Z" },
|
|
351
|
+
{ url = "https://files.pythonhosted.org/packages/d9/69/c9bd862c3bf43d6399c433caf002df16e2dffd4be49bdf515cda38038711/cryptography-50.0.2-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:79def8d059362e7831389ed3be0ecdf58a89386e1271e35dd9f5af84e81bffd0", size = 4731146, upload-time = "2026-09-30T14:43:47.113Z" },
|
|
352
|
+
{ url = "https://files.pythonhosted.org/packages/21/69/64cef1f702bf6657e0cc186ed1a2891d50d29fb41586b254e1c07adea261/cryptography-50.0.2-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:630ebfea3bf689d075f82316324ff7433dc447fe6bc1bfc76524b74b4a9567d2", size = 4719841, upload-time = "2026-09-30T14:43:49.01Z" },
|
|
353
|
+
{ url = "https://files.pythonhosted.org/packages/38/6b/61a3f8d8c5e1e49a6cddccafc4015cc1c0021360ab0acb4080e7a423644a/cryptography-50.0.2-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f9f6143a8c75945eb960d9eb98905a441394abfa24afaae239d514ffb2586480", size = 4738340, upload-time = "2026-09-30T14:43:50.932Z" },
|
|
354
|
+
{ url = "https://files.pythonhosted.org/packages/7b/2e/7212ca32fd43dc91f2f41db20160b268098874b4c9a0e7be94d6835f5b2e/cryptography-50.0.2-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:a582ab2ae1d34f67112cadc86702774c9ea4374df6bca6afe672817203c99134", size = 5367029, upload-time = "2026-09-30T14:43:52.911Z" },
|
|
355
|
+
{ url = "https://files.pythonhosted.org/packages/1a/f1/b474e930c4d910328780e3940da76f5aa5cbc48ce1fc14e44d239d9ea9db/cryptography-50.0.2-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4061c0079120205fb760c58acab6443e217307dcf05e3702cf970e0689972856", size = 4753050, upload-time = "2026-09-30T14:43:55.272Z" },
|
|
356
|
+
{ url = "https://files.pythonhosted.org/packages/7c/52/9af10e80ac16b0fcc2123f9cbd5e7afbd0fd5075bb7a607c592258a39cda/cryptography-50.0.2-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:ac9ed99d81760c62fe89d5f0815cdfa1ba9a35141cf30f1c2d044f04b4803d2e", size = 4376724, upload-time = "2026-09-30T14:43:57.24Z" },
|
|
357
|
+
{ url = "https://files.pythonhosted.org/packages/71/37/6202e488cc1eb625ea110c292c6bda92823176e023f427d8d5660ce8d632/cryptography-50.0.2-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:87e9ce85beb6b328ba370cc6e6aea483c92617b4c95b1d33a49297eb662bfb04", size = 4737859, upload-time = "2026-09-30T14:43:59.541Z" },
|
|
358
|
+
{ url = "https://files.pythonhosted.org/packages/8f/30/e86d7d518489b0ae2497091a35287abcb1a2ce4037837a34afbe9b1d6964/cryptography-50.0.2-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:f265528741e048bce55c3463ed721fb0aa45a5888d8add8cfeccb3035451bbdc", size = 5324103, upload-time = "2026-09-30T14:44:01.901Z" },
|
|
359
|
+
{ url = "https://files.pythonhosted.org/packages/d3/69/2c833a049475e0a3444e94c7d0aca0aa51d166374a449b09e92ac98138de/cryptography-50.0.2-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9dab55f57c74c3cad24c323bacbbd04be4705ba6eb0d92e920b1fc4837ed5079", size = 4752576, upload-time = "2026-09-30T14:44:04.545Z" },
|
|
360
|
+
{ url = "https://files.pythonhosted.org/packages/6c/5d/906970b83bbfc1f5bbfb677a143c181f2801f23b6a7204a3b47c42c97e65/cryptography-50.0.2-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25784ce8b9621c90c643efb9e1e2162ab3b0224cae446ad5e70e7fcb1ce18b51", size = 4870819, upload-time = "2026-09-30T14:44:06.884Z" },
|
|
361
|
+
{ url = "https://files.pythonhosted.org/packages/68/e3/f2298d3bb55e0c4a91841ec4d01b3f020ba8c5fbf15ccdcc6dcf03f97025/cryptography-50.0.2-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:85d0d9a31b9098e98534226d5686b47264b95e62ce459dc2e62fdfc809f9fe93", size = 5030152, upload-time = "2026-09-30T14:44:09.443Z" },
|
|
362
|
+
{ url = "https://files.pythonhosted.org/packages/9a/4f/adfc442765721292fff86d314ce385d3249d22db42295c0dd057727b60f3/cryptography-50.0.2-cp311-abi3-win_amd64.whl", hash = "sha256:7afa5a6602a9f29af1f3a2965f831bae7c9d5d597b7cbb716d41ab3b7d89879c", size = 3824692, upload-time = "2026-09-30T14:44:11.671Z" },
|
|
363
|
+
{ url = "https://files.pythonhosted.org/packages/ce/cb/52eb3770c0d0be2702a98c6e96065ddc0a2877cf0845aa9c23397c142cd4/cryptography-50.0.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f785f6161f202ab04d8ca194158968798e480ca058943907972da5f12e2881e8", size = 3892731, upload-time = "2026-09-30T14:44:13.485Z" },
|
|
364
|
+
{ url = "https://files.pythonhosted.org/packages/19/8e/aa1fc533d4546b127b45de8aa024eb5933d23eff9debfe25931e56861095/cryptography-50.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0ecbc5652bdb6fc9eaf89a7d196e20941adfe812f43bc4ca05d9150496821047", size = 4710431, upload-time = "2026-09-30T14:44:15.427Z" },
|
|
365
|
+
{ url = "https://files.pythonhosted.org/packages/6a/64/72bc3f75176e7e406b748a3e3830432b8c51297b38368713df04dc04898a/cryptography-50.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ab50ee449bf968271e820086f10a33d101dd060370abc10bcd22279be2656539", size = 4694824, upload-time = "2026-09-30T14:44:17.69Z" },
|
|
366
|
+
{ url = "https://files.pythonhosted.org/packages/4e/c6/62c77550edfa5ca3f14bf44a1e6739b9fa09d6e998a11d97ed8213bccc98/cryptography-50.0.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:a9f7355e6fab51f6c369b86fb7571cffa05edee2c2121e0380a37fb9ac1cd5c1", size = 4716967, upload-time = "2026-09-30T14:44:19.661Z" },
|
|
367
|
+
{ url = "https://files.pythonhosted.org/packages/f4/37/cce70f150c432914460157a6ecc161752e053aa5ec0ef3b3f7dc6e31039a/cryptography-50.0.2-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:94e5e9f108ee10471288214d3d233fbfbb492840a8457eb85178d643ddeb32c7", size = 5328676, upload-time = "2026-09-30T14:44:21.744Z" },
|
|
368
|
+
{ url = "https://files.pythonhosted.org/packages/aa/9a/6f2f0304d634ceafdeaf23e84537336664ac419b5d07611675c2ad3f6b7a/cryptography-50.0.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:241449bf940a5d27309bd317e6f9a2af6932113818bb2b8f5c59ddc7ef16da18", size = 4727698, upload-time = "2026-09-30T14:44:24.178Z" },
|
|
369
|
+
{ url = "https://files.pythonhosted.org/packages/1d/de/66bcf9244d118663b2e1aaded8990f4640e3d7b7411870a5765f252074d2/cryptography-50.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d8947001be83df1394050758ce0e745dd74fb134eef0a4b5124208dfc3a68c37", size = 4354821, upload-time = "2026-09-30T14:44:26.263Z" },
|
|
370
|
+
{ url = "https://files.pythonhosted.org/packages/bd/e6/db28a28c7b6c676addce89136de3d8db49ea825a8c863472e36e42ead4ad/cryptography-50.0.2-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4a20ce1e5cb4284a86692fdcba7cb8754185c6b2e5c56fcef3751cf451d3cdc2", size = 4716748, upload-time = "2026-09-30T14:44:28.447Z" },
|
|
371
|
+
{ url = "https://files.pythonhosted.org/packages/30/96/01546c7f69ea0e2ab790a2e4f0934a4052fb9b388147fbf83c2fd72f1e57/cryptography-50.0.2-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:84f964e537f916e2cc85199e5a88742e964939b575ac8598b3f9d6cc416cdaf1", size = 5285085, upload-time = "2026-09-30T14:44:30.704Z" },
|
|
372
|
+
{ url = "https://files.pythonhosted.org/packages/6c/01/03263395f74d50b071e9e66daace3f8bef80493e5d410726f2ba8554736b/cryptography-50.0.2-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:828d49b0ff5a0e3975865571c5d91dbbdd0d38d8289b249a163e9425413a5e05", size = 4727268, upload-time = "2026-09-30T14:44:32.92Z" },
|
|
373
|
+
{ url = "https://files.pythonhosted.org/packages/eb/94/2bfe8f29ec0cc9c0d99359c4161adf32858e4934b72c6d100d2ac0bbe962/cryptography-50.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:deb9fde5c60e437ee4821bc9bc39ff31b42135c27e1dc61ef0a629389c1de62e", size = 4849503, upload-time = "2026-09-30T14:44:34.969Z" },
|
|
374
|
+
{ url = "https://files.pythonhosted.org/packages/54/44/e80651ecbf0e42b62e2bb5f5768916e07eea72e1297338956a61df361f88/cryptography-50.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8c71ba2cd31fc93748c38e1b613200ff1c2665cbfd5341fe3a61cfde35a1430e", size = 5004057, upload-time = "2026-09-30T14:44:37.064Z" },
|
|
375
|
+
{ url = "https://files.pythonhosted.org/packages/f8/cc/1d33befb3cd7ea7e77d2d73f43f2066471da1b21f24a6156efcaabf6d2e8/cryptography-50.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:78198641e5be9521beea5aa782bb551a58068d10e6eb04c9c680c1b69f2e7d45", size = 3795868, upload-time = "2026-09-30T14:44:39.71Z" },
|
|
376
|
+
{ url = "https://files.pythonhosted.org/packages/2d/49/93f6a6e7a87c9aa68d44d3e1cdb5fe8f60c90d5d2f46acae9a56892816b8/cryptography-50.0.2-cp315-abi3.abi3t-macosx_11_0_arm64.whl", hash = "sha256:edc3342adf8f697fc5f59c887a304356f147b397809440ed64e2fa6af2f50f37", size = 4133708, upload-time = "2026-09-30T14:44:41.807Z" },
|
|
377
|
+
{ url = "https://files.pythonhosted.org/packages/8c/75/32ac2a56243d778805c16ca6a32b8f74fb757df7e28d7ecb560afafb59cf/cryptography-50.0.2-cp315-abi3.abi3t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d370b8d1dfcdf7130178137f6fbee6140774a1acc6cacefc4b42643ec11d0a3a", size = 4956267, upload-time = "2026-09-30T14:44:43.693Z" },
|
|
378
|
+
{ url = "https://files.pythonhosted.org/packages/aa/a4/2c8d734e43d97f0842ee9f1b7b4bfb3d0cf5e19edebf43c2afe6675c2320/cryptography-50.0.2-cp315-abi3.abi3t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f2f9bd7f90c64fe89253f0a2c05e3c4856072660429ce8831b4235bf29403a67", size = 4966465, upload-time = "2026-09-30T14:44:45.769Z" },
|
|
379
|
+
{ url = "https://files.pythonhosted.org/packages/c2/58/ee288c829a6f41f6235ae9dd33d82fd19b45442b65b4c8a3da36963d9f7a/cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl", hash = "sha256:e275096ea1e60cc595cda2836fd4a6c725d1125108b868be17f53684d164e2cc", size = 4959356, upload-time = "2026-09-30T14:44:48.211Z" },
|
|
380
|
+
{ url = "https://files.pythonhosted.org/packages/92/20/9ded6d51ddd9897f6b6e81fb9ebea7951d7cc5d6c890b0ed8abf77a51a80/cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_28_ppc64le.whl", hash = "sha256:b13478603dcd0a2479ff8e87e2c19a7d525734686fe3c49542472293a204212d", size = 5548822, upload-time = "2026-09-30T14:44:50.86Z" },
|
|
381
|
+
{ url = "https://files.pythonhosted.org/packages/02/a8/8df951850d6b31d2a00218f19e2b3f999523437ed7a819df7fa427942fca/cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl", hash = "sha256:58a0c478eeca76fe5e07993c5a0703def34a6dc6a0cda4f5564639b33112ffe7", size = 5001199, upload-time = "2026-09-30T14:44:53.379Z" },
|
|
382
|
+
{ url = "https://files.pythonhosted.org/packages/8b/f9/36b3022218ce75b7cdf068fb95f809f9bd0d820e4955ef43b90c255cc7ac/cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_31_armv7l.whl", hash = "sha256:d38cdff612d06fa6a32840d5e1b1f7a27cee4a349aa9085d94a67789d6bfd408", size = 4629333, upload-time = "2026-09-30T14:44:55.635Z" },
|
|
383
|
+
{ url = "https://files.pythonhosted.org/packages/8c/72/20f99a219f6af47cdd1cbd978c243b92d71496e168a746138af44ded4f29/cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_34_aarch64.whl", hash = "sha256:fdd28f912fccfec1846a94e2e1e8f9b0012f557f0c46fe4f3eb0d7a87afcf90b", size = 4958822, upload-time = "2026-09-30T14:44:59.639Z" },
|
|
384
|
+
{ url = "https://files.pythonhosted.org/packages/f2/20/196f112617fb08eb4d608a2a6c422373d46f9cc2857f38fc0667033c0899/cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_34_ppc64le.whl", hash = "sha256:cbc8738fd8526d80f35cb3a40d41f41a2e7030bb3b18b09a6778ef63d291c2fd", size = 5506351, upload-time = "2026-09-30T14:45:02.267Z" },
|
|
385
|
+
{ url = "https://files.pythonhosted.org/packages/24/95/83378121ef3eaaaf71d4b781577ff794acb39b9e1b87a3f156898c8497ed/cryptography-50.0.2-cp315-abi3.abi3t-manylinux_2_34_x86_64.whl", hash = "sha256:e105ab60406787da31fccc883fc0f733af1efd78f0136a4599692c4083a73d0c", size = 5000859, upload-time = "2026-09-30T14:45:05.009Z" },
|
|
386
|
+
{ url = "https://files.pythonhosted.org/packages/22/f7/70fd7ae4d1dbfa7ba29b02e1b9068771519a86027756510b700ce81086a8/cryptography-50.0.2-cp315-abi3.abi3t-musllinux_1_2_aarch64.whl", hash = "sha256:6f8700550aa1474a91e5dc07049c46f98b423b5b1ddd0483e0b51362eeeaf5be", size = 5092151, upload-time = "2026-09-30T15:29:15.932Z" },
|
|
387
|
+
{ url = "https://files.pythonhosted.org/packages/d4/be/688367b74de86984bd58d8efacfc7c9e68b89a6a22ced0fb4f38db50254a/cryptography-50.0.2-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl", hash = "sha256:c71be1cbfa5cd9a41ee452acf1eccd82b2c05950358b106ec8ceb83411d1a020", size = 5286120, upload-time = "2026-09-30T15:29:18.309Z" },
|
|
388
|
+
{ url = "https://files.pythonhosted.org/packages/39/d1/55f8a3f2ef5d1529e16835ef10cf0fe3d559ce237b46dddc440c0bba3649/cryptography-50.0.2-cp315-abi3.abi3t-win_amd64.whl", hash = "sha256:c423ab384a46c4dff7217b2ea5ba2e11cffdeab6441acd04cf65a369caf0366c", size = 4111557, upload-time = "2026-09-30T15:29:20.155Z" },
|
|
389
|
+
{ url = "https://files.pythonhosted.org/packages/23/ad/ac987755d00e1e64273760228d2635ae38dae2be83e3c6e0d3289d91dec3/cryptography-50.0.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:0ec5f09541743261e66e291b4a0cbf0fb2997aeaab6d9e9c740b9dba1b58d1c2", size = 3943588, upload-time = "2026-09-30T15:29:22.265Z" },
|
|
390
|
+
{ url = "https://files.pythonhosted.org/packages/d5/8d/6d585339bedf85d45044c85d8412dac53f2bb6f918e8b7777efba1787844/cryptography-50.0.2-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c5e67125c7dca78d199ec4e116aa93dbb83494808ecbb8211a2cb09b1bf41dbd", size = 4756166, upload-time = "2026-09-30T15:29:24.58Z" },
|
|
391
|
+
{ url = "https://files.pythonhosted.org/packages/bf/f1/1c1f6874e8550cfddd4b688ceb38cefb6ed15ceed224d56f133f3d88c214/cryptography-50.0.2-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee247f5c245c9a2fe7c8e2214e295918838e44e00a45a6718451e4004219e767", size = 4749145, upload-time = "2026-09-30T15:29:26.807Z" },
|
|
392
|
+
{ url = "https://files.pythonhosted.org/packages/c1/63/61b15dc1a8de03fe0adbe3fd7608b3ad5c73bf50993bbcb1faaa930afe33/cryptography-50.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dfe9763530994147d9af1def057a5b9658b00e8f8fe8743d144d1e0911c2e454", size = 4763638, upload-time = "2026-09-30T15:29:28.588Z" },
|
|
393
|
+
{ url = "https://files.pythonhosted.org/packages/fc/35/b345bdfa40c9126df1a9d33236aa98418367931b8725f84fc3ae2b98dc59/cryptography-50.0.2-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:58ddb5a8e3179d12f19e4ea34d2d32e9d63a4baa142c875c1eb59f41b7243acd", size = 5382217, upload-time = "2026-09-30T15:29:30.589Z" },
|
|
394
|
+
{ url = "https://files.pythonhosted.org/packages/4f/87/ef344a9e616871f2519c22d6afcda79ddd5d35e9592d95eb6e677608d055/cryptography-50.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f21e8a22c8605750c7af886bab299a363721264061b4ac0a30efb73cfd58efc5", size = 4781387, upload-time = "2026-09-30T15:29:32.605Z" },
|
|
395
|
+
{ url = "https://files.pythonhosted.org/packages/90/5b/f2fdb13cd0b96f6f932c8627bb292a45f11c64d21620a8e120aee9a3b848/cryptography-50.0.2-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:9c8402a82ea0dc4ceeab793db05f0fafa8ca139ca34fcde5df0f596103c74107", size = 4403790, upload-time = "2026-09-30T15:29:34.374Z" },
|
|
396
|
+
{ url = "https://files.pythonhosted.org/packages/bc/ce/7e4f662b1e3c393513569e402cfc85ac7da0bd3d5435e122a3140219eb2d/cryptography-50.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:0ddc924c04591c2811ca024d62ecad4f7f6f08af8939c211438f48a16bd23602", size = 4764319, upload-time = "2026-09-30T15:29:36.149Z" },
|
|
397
|
+
{ url = "https://files.pythonhosted.org/packages/3c/3f/86ff33ce34cc0de6847fb96e035a1a760d81652e38643f617c02ad32ef7a/cryptography-50.0.2-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:a6557e5f38e065ca9fbdaf7cfc7435ecb1d113aa81a022d1b51921ee7432e227", size = 5338560, upload-time = "2026-09-30T15:29:39.053Z" },
|
|
398
|
+
{ url = "https://files.pythonhosted.org/packages/40/cf/6b5c8e2fd9202d98988ab7cb5cc5c991704c4ad55f492ff408e4969f83f1/cryptography-50.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:1981f1db4630889b9ef7803fadef12b056f428cb6b85c27ba57b774793b6093c", size = 4780973, upload-time = "2026-09-30T15:29:41.251Z" },
|
|
399
|
+
{ url = "https://files.pythonhosted.org/packages/10/bf/8d6ebc7dded797bd0f0160d52188021211f011a2b164ef0ae1dac4587465/cryptography-50.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7a8701d6b584d76e909e3d305b7d126b41439876a5aaf76cddc67fc230eafa2e", size = 4897738, upload-time = "2026-09-30T15:29:43.106Z" },
|
|
400
|
+
{ url = "https://files.pythonhosted.org/packages/d4/aa/f3f6e0de7e6253b8baa8b2d8fb9d50924fa75cee3d4624bd4bc1208ee923/cryptography-50.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ce47f66801c20ec6c6632453bb5960fe38939e9306970b48b3a5a26de7745d94", size = 5058280, upload-time = "2026-09-30T15:29:44.827Z" },
|
|
401
|
+
{ url = "https://files.pythonhosted.org/packages/f6/b6/a1faf3a27ae9405fb34b1713cc73b2d8a26b04d5c561578fa2e6ef3e5bb9/cryptography-50.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:4e81d95e5bafc2d6e34e4bed780e53e4d5b9a2f928573428aa4d35fbec1eb0de", size = 3854095, upload-time = "2026-09-30T15:29:46.782Z" },
|
|
402
|
+
{ url = "https://files.pythonhosted.org/packages/1d/7a/f08d34ce09d60f89ebd391e2ebc6ba2b995e6dd7552f41820f8085f94e53/cryptography-50.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:92e665960f25fcdc73725b9cec7a3824f279ba97a98653afe9ffac2e43668f67", size = 4716035, upload-time = "2026-09-30T15:29:48.681Z" },
|
|
403
|
+
{ url = "https://files.pythonhosted.org/packages/45/67/e18fb65592451a2acb76e9f2fbe14e0f47a8318b4c5430f1633851d03daa/cryptography-50.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eef4c2f3423810b3070ab391f85436d2f8bbfcb286ac15cbc73190b3563b1f1a", size = 4726917, upload-time = "2026-09-30T15:29:50.608Z" },
|
|
404
|
+
{ url = "https://files.pythonhosted.org/packages/83/28/38fdce17e60f6b825e69fc3b7f75e70a6612759980704697e1de4cbfaf6e/cryptography-50.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:7c6d0330c472d96f6a6afe24d80dfdf15176c33096f0a4397ae4c60f3dd3be48", size = 4715341, upload-time = "2026-09-30T15:29:52.522Z" },
|
|
405
|
+
{ url = "https://files.pythonhosted.org/packages/b6/b1/d9121a717e0f893c64bd6ca7702614778d7df2a5c309128a002421788516/cryptography-50.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:1ba34f04897fcdaa73f74145c25f3ec146fbd56593853e88adc2e811303c5f42", size = 4726322, upload-time = "2026-09-30T15:29:54.263Z" },
|
|
406
|
+
{ url = "https://files.pythonhosted.org/packages/36/8b/e6d153808bf353e152abd2fd4d8f09670d956ac78379ac46e60d7efbf04c/cryptography-50.0.2-pp311-pypy311_pp80-macosx_11_0_arm64.whl", hash = "sha256:3dc4fd8058cea1644971207d530e1a03a184a805ffc8ebdddf0599d78a331b81", size = 3873097, upload-time = "2026-09-30T15:29:56.097Z" },
|
|
407
|
+
{ url = "https://files.pythonhosted.org/packages/ca/1d/1271f287ff7170ddafc2aad36260c4eec20ccd2fea70f38455e9d56d427b/cryptography-50.0.2-pp311-pypy311_pp80-win_amd64.whl", hash = "sha256:7b75de3c8b3be1cdb1052747c929440c3eea46c1bc2cb8a6e3a48388e9b7b452", size = 3805376, upload-time = "2026-09-30T15:29:58.729Z" },
|
|
396
408
|
]
|
|
397
409
|
|
|
398
410
|
[[package]]
|
|
@@ -604,8 +616,9 @@ wheels = [
|
|
|
604
616
|
|
|
605
617
|
[[package]]
|
|
606
618
|
name = "hypershell"
|
|
607
|
-
version = "2.8.
|
|
619
|
+
version = "2.8.3"
|
|
608
620
|
source = { editable = "." }
|
|
621
|
+
default-groups = ["dev", "docs"]
|
|
609
622
|
dependencies = [
|
|
610
623
|
{ name = "cmdkit", extra = ["toml"] },
|
|
611
624
|
{ name = "cryptography" },
|
|
@@ -1425,11 +1438,27 @@ wheels = [
|
|
|
1425
1438
|
|
|
1426
1439
|
[[package]]
|
|
1427
1440
|
name = "soupsieve"
|
|
1428
|
-
version = "2.
|
|
1441
|
+
version = "2.10"
|
|
1429
1442
|
source = { registry = "https://pypi.org/simple" }
|
|
1430
|
-
|
|
1443
|
+
resolution-markers = [
|
|
1444
|
+
"python_full_version < '3.11.5'",
|
|
1445
|
+
]
|
|
1446
|
+
sdist = { url = "https://files.pythonhosted.org/packages/71/c3/1b817965ac12dc002d7c9cd7dfffdd7d4fbf9b45763ef2ffe7b86ee94670/soupsieve-2.10.tar.gz", hash = "sha256:49e9380d7d2905463583bafe285e818c7366a9ed7b3aee221c1ac79c905d8bc0", size = 124337, upload-time = "2026-09-24T02:36:35.048Z" }
|
|
1447
|
+
wheels = [
|
|
1448
|
+
{ url = "https://files.pythonhosted.org/packages/66/87/5ed59e1d0290564e2027ed066c52b059892c4637741337fc0967183c8d4d/soupsieve-2.10-py3-none-any.whl", hash = "sha256:8596eb8967d744174820280fa62b4542a2e955bfaccca73ed8a13c6eb8e9b502", size = 38019, upload-time = "2026-09-24T02:36:33.709Z" },
|
|
1449
|
+
]
|
|
1450
|
+
|
|
1451
|
+
[[package]]
|
|
1452
|
+
name = "soupsieve"
|
|
1453
|
+
version = "3.0.4"
|
|
1454
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1455
|
+
resolution-markers = [
|
|
1456
|
+
"python_full_version >= '3.13'",
|
|
1457
|
+
"python_full_version >= '3.11.5' and python_full_version < '3.13'",
|
|
1458
|
+
]
|
|
1459
|
+
sdist = { url = "https://files.pythonhosted.org/packages/19/63/0b6bae54546aed98d72f12d09df57b19a287f01c84d22047fa2e23772ab9/soupsieve-3.0.4.tar.gz", hash = "sha256:924fab84ae21604c19e175e1f39815eb6fa83ba23836e09e9de180925e5bc4c0", size = 119017, upload-time = "2026-10-22T00:45:26.362Z" }
|
|
1431
1460
|
wheels = [
|
|
1432
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1461
|
+
{ url = "https://files.pythonhosted.org/packages/07/66/473f7ca0be0b06e38ee8c85ee2db184e3981bd769fac2e7c19c8a8865211/soupsieve-3.0.4-py3-none-any.whl", hash = "sha256:8412826614f9c632227067d0985aeb9f584bd15efc852955430e097a9fe7afbf", size = 42458, upload-time = "2026-10-22T00:45:24.843Z" },
|
|
1433
1462
|
]
|
|
1434
1463
|
|
|
1435
1464
|
[[package]]
|
|
@@ -1842,11 +1871,11 @@ wheels = [
|
|
|
1842
1871
|
|
|
1843
1872
|
[[package]]
|
|
1844
1873
|
name = "urllib3"
|
|
1845
|
-
version = "2.
|
|
1874
|
+
version = "2.8.0"
|
|
1846
1875
|
source = { registry = "https://pypi.org/simple" }
|
|
1847
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1876
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e3/05/b17359e1cefb4f909b5e40b1b90a496d987258916dbbf88e842c729f510e/urllib3-2.8.0.tar.gz", hash = "sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63", size = 458972, upload-time = "2026-09-15T19:29:36.253Z" }
|
|
1848
1877
|
wheels = [
|
|
1849
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1878
|
+
{ url = "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl", hash = "sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3", size = 135717, upload-time = "2026-09-15T19:29:34.577Z" },
|
|
1850
1879
|
]
|
|
1851
1880
|
|
|
1852
1881
|
[[package]]
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|