artefacts-cli 0.16.2__tar.gz → 0.17.0__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.
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/CHANGELOG.md +12 -0
- {artefacts_cli-0.16.2/artefacts_cli.egg-info → artefacts_cli-0.17.0}/PKG-INFO +3 -1
- artefacts_cli-0.17.0/artefacts/api/api/job/trigger_platform_launch.py +196 -0
- artefacts_cli-0.17.0/artefacts/api/api/organization/post_create_organization.py +185 -0
- artefacts_cli-0.17.0/artefacts/api/api/user/__init__.py +1 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/__init__.py +6 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/create_new_job.py +40 -0
- artefacts_cli-0.17.0/artefacts/api/models/create_organization.py +51 -0
- artefacts_cli-0.17.0/artefacts/api/models/create_organization_errors.py +46 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/job.py +40 -0
- artefacts_cli-0.17.0/artefacts/api/models/organization.py +51 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/__init__.py +6 -1
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/app.py +97 -61
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/app_project.py +251 -35
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/blob/__init__.py +101 -50
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/blob/helpers.py +0 -9
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/config.py +6 -2
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/core/code_environment.py +31 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/locales/art.pot +116 -15
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/locales/base.pot +137 -24
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/locales/click.pot +2 -2
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/locales/ja_JP/LC_MESSAGES/artefacts.po +109 -7
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/version.py +3 -3
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0/artefacts_cli.egg-info}/PKG-INFO +3 -1
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts_cli.egg-info/SOURCES.txt +6 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts_cli.egg-info/requires.txt +2 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/pyproject.toml +2 -0
- artefacts_cli-0.17.0/scripts/dev_version.py +34 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/core/test_code_environment.py +48 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_app_auth.py +21 -2
- artefacts_cli-0.17.0/tests/cli/test_app_project.py +546 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_cli.py +4 -2
- artefacts_cli-0.16.2/scripts/dev_version.py +0 -28
- artefacts_cli-0.16.2/tests/cli/test_app_project.py +0 -262
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/.coveragerc +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/.pyre_configuration +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/README.md +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/README_INTERNAL.md +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/default/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/default/get_artifact.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/framework/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/framework/list_frameworks.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/framework/list_simulators.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/job/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/job/api_project_new_job.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/job/get_artifact_downloads.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/job/get_job_by_commit.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/job/get_job_test_results.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/job/post_update_job_results.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/job/put_update_job_results.py +0 -0
- {artefacts_cli-0.16.2/artefacts/api/api/project → artefacts_cli-0.17.0/artefacts/api/api/organization}/__init__.py +0 -0
- {artefacts_cli-0.16.2/artefacts/api/api/projects → artefacts_cli-0.17.0/artefacts/api/api/project}/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/project/api_project_info.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/project/create_remote.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/project/get_badge.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/project/get_config.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/project/get_last_jobs.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/project/upload_source.py +0 -0
- {artefacts_cli-0.16.2/artefacts/api/api/run → artefacts_cli-0.17.0/artefacts/api/api/projects}/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/projects/api_create_project.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/projects/api_list_projects.py +0 -0
- {artefacts_cli-0.16.2/artefacts/api/api/user → artefacts_cli-0.17.0/artefacts/api/api/run}/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/run/create_job_run.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/run/submit_run_results.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/api/user/get_user_organizations.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/client.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/errors.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/artifact_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/blob.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/create_project.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/create_remote.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/create_remote_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/create_remote_response_blob_upload_urls.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/create_remote_response_upload_urls.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/error.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/error_errors.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/framework.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/frameworks_list.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/get_artifact_downloads_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/last_jobs_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/list_projects_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/presigned_url.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/presigned_url_fields.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/project.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/register_run.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/register_run_tests_item.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/scenario_map_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/simulator.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/simulators_list.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/submit_run_results.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/submit_run_results_metrics.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/submit_run_results_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/submit_run_results_response_upload_urls.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/submit_run_results_tests_item.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/submit_run_results_uploads.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/update_job_results.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/upload_source_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/upload_source_response_upload_urls.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/models/user_organizations_response.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/api/types.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/app_auth.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/app_containers.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/app_containers.pyi +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/app_experimental.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/blob/filetree_classifyer.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/blob/hash_cache.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/blob/types.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/constants.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/containers/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/containers/docker_cm.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/containers/docker_utils.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/containers/utils.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/core/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/doctor.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/download.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/errors.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/i18n.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/logger.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/reporter.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/runners/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/runners/base_runner.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/runners/launch_test_runner.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/runners/pytest_runner.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/shell_completion.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/templates/sample_config.yaml +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/api.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/auth.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/click_net_watch.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/common.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/config.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/formatting.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/junit.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/parameters.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/proc_tree_tracker.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/ros/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/ros/bagparser.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/cli/utils/ros/rosbags.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts/copava/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts.yaml +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts_cli.egg-info/dependency_links.txt +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts_cli.egg-info/entry_points.txt +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/artefacts_cli.egg-info/top_level.txt +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/bin/release +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/infra-tests/test_run_remote.yaml +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/infra-tests/turtlesim2/launch_turtle.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/infra-tests/turtlesim2/sample_node.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/pytest.ini +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/scripts/whats_latest.rb +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/setup.cfg +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/blob/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/blob/test_compression.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/blob/test_dir_crawl.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/containers/__init__.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/containers/test_docker.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/containers/test_utils.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_app_containers.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_config.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_config_validation.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_download.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_init.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_other.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_parameters.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_pytest.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_reporter.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_ros2.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_signals.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_utils.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_utils_ros.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_warp.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/cli/test_warp_run.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/conftest.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/fixtures/artefacts-env-param.yaml +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/fixtures/artefacts.yaml.template +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/fixtures/artefacts_deprecated.yaml +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/fixtures/bad_launch_test.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/fixtures/sample_pytest_file.py +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/fixtures/test_junit.xml +0 -0
- {artefacts_cli-0.16.2 → artefacts_cli-0.17.0}/tests/utils/docker_mock.py +0 -0
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Show a link to the dashboard when project commands miss arguments (#534)
|
|
13
|
+
- Fail fast on remote runs if some problems found with the configuration file (invalid org or project), to avoid expensive preps and uploads and improve UX (#525)
|
|
14
|
+
- New compact output on remote run submission (#527)
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Create organizations from the CLI with `artefacts organization create` (#497)
|
|
19
|
+
- Fall back to `artefacts.yaml` or the logged-in account for missing arguments in `project info` and `project list` (#526, #535)
|
|
20
|
+
- Auto-generate job descriptions from git diff on `artefacts run` and `artefacts run-remote` when `--description` is omitted (#411)
|
|
21
|
+
|
|
10
22
|
## [0.16.0] - 2026-04-08
|
|
11
23
|
|
|
12
24
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: artefacts_cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.0
|
|
4
4
|
Author-email: FD <fabian@artefacts.com>, AGC <alejandro@artefacts.com>, TN <tomo@artefacts.com>, EP <eric@artefacts.com>
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/art-e-fact/artefacts-client
|
|
@@ -14,6 +14,7 @@ Requires-Dist: artefacts-c2d>=1.8.11
|
|
|
14
14
|
Requires-Dist: artefacts-copava>=0.2.0
|
|
15
15
|
Requires-Dist: artefacts-click==0.2.0
|
|
16
16
|
Requires-Dist: artefacts-xray>=0.2.0
|
|
17
|
+
Requires-Dist: bitmath==1.4.0.1
|
|
17
18
|
Requires-Dist: docker==7.1.0
|
|
18
19
|
Requires-Dist: gitignore_parser>=0.1.11
|
|
19
20
|
Requires-Dist: junitparser>=2.5
|
|
@@ -44,6 +45,7 @@ Requires-Dist: pyre-check; extra == "dev"
|
|
|
44
45
|
Requires-Dist: pytest; extra == "dev"
|
|
45
46
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
46
47
|
Requires-Dist: pytest-env; extra == "dev"
|
|
48
|
+
Requires-Dist: pytest-httpx; extra == "dev"
|
|
47
49
|
Requires-Dist: pytest-mock; extra == "dev"
|
|
48
50
|
Requires-Dist: python-markdown-math; extra == "dev"
|
|
49
51
|
Requires-Dist: ruff>=0.9.2; extra == "dev"
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any, cast
|
|
3
|
+
from urllib.parse import quote
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
from ...client import AuthenticatedClient, Client
|
|
8
|
+
from ...types import Response
|
|
9
|
+
from ... import errors
|
|
10
|
+
|
|
11
|
+
from ...models.error import Error
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _get_kwargs(
|
|
15
|
+
organization_slug: str,
|
|
16
|
+
project_name: str,
|
|
17
|
+
job_uuid: str,
|
|
18
|
+
) -> dict[str, Any]:
|
|
19
|
+
_kwargs: dict[str, Any] = {
|
|
20
|
+
"method": "post",
|
|
21
|
+
"url": "/{organization_slug}/{project_name}/job/{job_uuid}/start".format(
|
|
22
|
+
organization_slug=quote(str(organization_slug), safe=""),
|
|
23
|
+
project_name=quote(str(project_name), safe=""),
|
|
24
|
+
job_uuid=quote(str(job_uuid), safe=""),
|
|
25
|
+
),
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return _kwargs
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _parse_response(
|
|
32
|
+
*, client: AuthenticatedClient | Client, response: httpx.Response
|
|
33
|
+
) -> Any | Error | None:
|
|
34
|
+
if response.status_code == 200:
|
|
35
|
+
response_200 = cast(Any, None)
|
|
36
|
+
return response_200
|
|
37
|
+
|
|
38
|
+
if response.status_code == 401:
|
|
39
|
+
response_401 = Error.from_dict(response.json())
|
|
40
|
+
|
|
41
|
+
return response_401
|
|
42
|
+
|
|
43
|
+
if response.status_code == 403:
|
|
44
|
+
response_403 = Error.from_dict(response.json())
|
|
45
|
+
|
|
46
|
+
return response_403
|
|
47
|
+
|
|
48
|
+
if response.status_code == 404:
|
|
49
|
+
response_404 = cast(Any, None)
|
|
50
|
+
return response_404
|
|
51
|
+
|
|
52
|
+
if client.raise_on_unexpected_status:
|
|
53
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
54
|
+
else:
|
|
55
|
+
return None
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _build_response(
|
|
59
|
+
*, client: AuthenticatedClient | Client, response: httpx.Response
|
|
60
|
+
) -> Response[Any | Error]:
|
|
61
|
+
return Response(
|
|
62
|
+
status_code=HTTPStatus(response.status_code),
|
|
63
|
+
content=response.content,
|
|
64
|
+
headers=response.headers,
|
|
65
|
+
parsed=_parse_response(client=client, response=response),
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def sync_detailed(
|
|
70
|
+
organization_slug: str,
|
|
71
|
+
project_name: str,
|
|
72
|
+
job_uuid: str,
|
|
73
|
+
*,
|
|
74
|
+
client: AuthenticatedClient | Client,
|
|
75
|
+
) -> Response[Any | Error]:
|
|
76
|
+
"""Triggers a job to start running in our infrastructure. Requires the job to not already be running
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
organization_slug (str):
|
|
80
|
+
project_name (str):
|
|
81
|
+
job_uuid (str):
|
|
82
|
+
|
|
83
|
+
Raises:
|
|
84
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
85
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
Response[Any | Error]
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
kwargs = _get_kwargs(
|
|
92
|
+
organization_slug=organization_slug,
|
|
93
|
+
project_name=project_name,
|
|
94
|
+
job_uuid=job_uuid,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
response = client.get_httpx_client().request(
|
|
98
|
+
**kwargs,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
return _build_response(client=client, response=response)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def sync(
|
|
105
|
+
organization_slug: str,
|
|
106
|
+
project_name: str,
|
|
107
|
+
job_uuid: str,
|
|
108
|
+
*,
|
|
109
|
+
client: AuthenticatedClient | Client,
|
|
110
|
+
) -> Any | Error | None:
|
|
111
|
+
"""Triggers a job to start running in our infrastructure. Requires the job to not already be running
|
|
112
|
+
|
|
113
|
+
Args:
|
|
114
|
+
organization_slug (str):
|
|
115
|
+
project_name (str):
|
|
116
|
+
job_uuid (str):
|
|
117
|
+
|
|
118
|
+
Raises:
|
|
119
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
120
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
Any | Error
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
return sync_detailed(
|
|
127
|
+
organization_slug=organization_slug,
|
|
128
|
+
project_name=project_name,
|
|
129
|
+
job_uuid=job_uuid,
|
|
130
|
+
client=client,
|
|
131
|
+
).parsed
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
async def asyncio_detailed(
|
|
135
|
+
organization_slug: str,
|
|
136
|
+
project_name: str,
|
|
137
|
+
job_uuid: str,
|
|
138
|
+
*,
|
|
139
|
+
client: AuthenticatedClient | Client,
|
|
140
|
+
) -> Response[Any | Error]:
|
|
141
|
+
"""Triggers a job to start running in our infrastructure. Requires the job to not already be running
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
organization_slug (str):
|
|
145
|
+
project_name (str):
|
|
146
|
+
job_uuid (str):
|
|
147
|
+
|
|
148
|
+
Raises:
|
|
149
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
150
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
151
|
+
|
|
152
|
+
Returns:
|
|
153
|
+
Response[Any | Error]
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
kwargs = _get_kwargs(
|
|
157
|
+
organization_slug=organization_slug,
|
|
158
|
+
project_name=project_name,
|
|
159
|
+
job_uuid=job_uuid,
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
response = await client.get_async_httpx_client().request(**kwargs)
|
|
163
|
+
|
|
164
|
+
return _build_response(client=client, response=response)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
async def asyncio(
|
|
168
|
+
organization_slug: str,
|
|
169
|
+
project_name: str,
|
|
170
|
+
job_uuid: str,
|
|
171
|
+
*,
|
|
172
|
+
client: AuthenticatedClient | Client,
|
|
173
|
+
) -> Any | Error | None:
|
|
174
|
+
"""Triggers a job to start running in our infrastructure. Requires the job to not already be running
|
|
175
|
+
|
|
176
|
+
Args:
|
|
177
|
+
organization_slug (str):
|
|
178
|
+
project_name (str):
|
|
179
|
+
job_uuid (str):
|
|
180
|
+
|
|
181
|
+
Raises:
|
|
182
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
183
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
184
|
+
|
|
185
|
+
Returns:
|
|
186
|
+
Any | Error
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
return (
|
|
190
|
+
await asyncio_detailed(
|
|
191
|
+
organization_slug=organization_slug,
|
|
192
|
+
project_name=project_name,
|
|
193
|
+
job_uuid=job_uuid,
|
|
194
|
+
client=client,
|
|
195
|
+
)
|
|
196
|
+
).parsed
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
|
|
6
|
+
from ...client import AuthenticatedClient, Client
|
|
7
|
+
from ...types import Response, UNSET
|
|
8
|
+
from ... import errors
|
|
9
|
+
|
|
10
|
+
from ...models.create_organization import CreateOrganization
|
|
11
|
+
from ...models.create_organization_errors import CreateOrganizationErrors
|
|
12
|
+
from ...models.error import Error
|
|
13
|
+
from ...models.organization import Organization
|
|
14
|
+
from ...types import Unset
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _get_kwargs(
|
|
18
|
+
*,
|
|
19
|
+
body: CreateOrganization | Unset = UNSET,
|
|
20
|
+
) -> dict[str, Any]:
|
|
21
|
+
headers: dict[str, Any] = {}
|
|
22
|
+
|
|
23
|
+
_kwargs: dict[str, Any] = {
|
|
24
|
+
"method": "post",
|
|
25
|
+
"url": "/organization/",
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if not isinstance(body, Unset):
|
|
29
|
+
_kwargs["json"] = body.to_dict()
|
|
30
|
+
|
|
31
|
+
headers["Content-Type"] = "application/json"
|
|
32
|
+
|
|
33
|
+
_kwargs["headers"] = headers
|
|
34
|
+
return _kwargs
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _parse_response(
|
|
38
|
+
*, client: AuthenticatedClient | Client, response: httpx.Response
|
|
39
|
+
) -> CreateOrganizationErrors | Error | Organization | None:
|
|
40
|
+
if response.status_code == 200:
|
|
41
|
+
response_200 = Organization.from_dict(response.json())
|
|
42
|
+
|
|
43
|
+
return response_200
|
|
44
|
+
|
|
45
|
+
if response.status_code == 400:
|
|
46
|
+
response_400 = CreateOrganizationErrors.from_dict(response.json())
|
|
47
|
+
|
|
48
|
+
return response_400
|
|
49
|
+
|
|
50
|
+
if response.status_code == 401:
|
|
51
|
+
response_401 = Error.from_dict(response.json())
|
|
52
|
+
|
|
53
|
+
return response_401
|
|
54
|
+
|
|
55
|
+
if response.status_code == 403:
|
|
56
|
+
response_403 = Error.from_dict(response.json())
|
|
57
|
+
|
|
58
|
+
return response_403
|
|
59
|
+
|
|
60
|
+
if response.status_code == 409:
|
|
61
|
+
response_409 = Error.from_dict(response.json())
|
|
62
|
+
|
|
63
|
+
return response_409
|
|
64
|
+
|
|
65
|
+
if client.raise_on_unexpected_status:
|
|
66
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
67
|
+
else:
|
|
68
|
+
return None
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _build_response(
|
|
72
|
+
*, client: AuthenticatedClient | Client, response: httpx.Response
|
|
73
|
+
) -> Response[CreateOrganizationErrors | Error | Organization]:
|
|
74
|
+
return Response(
|
|
75
|
+
status_code=HTTPStatus(response.status_code),
|
|
76
|
+
content=response.content,
|
|
77
|
+
headers=response.headers,
|
|
78
|
+
parsed=_parse_response(client=client, response=response),
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def sync_detailed(
|
|
83
|
+
*,
|
|
84
|
+
client: AuthenticatedClient | Client,
|
|
85
|
+
body: CreateOrganization | Unset = UNSET,
|
|
86
|
+
) -> Response[CreateOrganizationErrors | Error | Organization]:
|
|
87
|
+
"""Create a new organization for the authenticated user.
|
|
88
|
+
|
|
89
|
+
Args:
|
|
90
|
+
body (CreateOrganization | Unset):
|
|
91
|
+
|
|
92
|
+
Raises:
|
|
93
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
94
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
95
|
+
|
|
96
|
+
Returns:
|
|
97
|
+
Response[CreateOrganizationErrors | Error | Organization]
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
kwargs = _get_kwargs(
|
|
101
|
+
body=body,
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
response = client.get_httpx_client().request(
|
|
105
|
+
**kwargs,
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
return _build_response(client=client, response=response)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def sync(
|
|
112
|
+
*,
|
|
113
|
+
client: AuthenticatedClient | Client,
|
|
114
|
+
body: CreateOrganization | Unset = UNSET,
|
|
115
|
+
) -> CreateOrganizationErrors | Error | Organization | None:
|
|
116
|
+
"""Create a new organization for the authenticated user.
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
body (CreateOrganization | Unset):
|
|
120
|
+
|
|
121
|
+
Raises:
|
|
122
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
123
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
124
|
+
|
|
125
|
+
Returns:
|
|
126
|
+
CreateOrganizationErrors | Error | Organization
|
|
127
|
+
"""
|
|
128
|
+
|
|
129
|
+
return sync_detailed(
|
|
130
|
+
client=client,
|
|
131
|
+
body=body,
|
|
132
|
+
).parsed
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
async def asyncio_detailed(
|
|
136
|
+
*,
|
|
137
|
+
client: AuthenticatedClient | Client,
|
|
138
|
+
body: CreateOrganization | Unset = UNSET,
|
|
139
|
+
) -> Response[CreateOrganizationErrors | Error | Organization]:
|
|
140
|
+
"""Create a new organization for the authenticated user.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
body (CreateOrganization | Unset):
|
|
144
|
+
|
|
145
|
+
Raises:
|
|
146
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
147
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
148
|
+
|
|
149
|
+
Returns:
|
|
150
|
+
Response[CreateOrganizationErrors | Error | Organization]
|
|
151
|
+
"""
|
|
152
|
+
|
|
153
|
+
kwargs = _get_kwargs(
|
|
154
|
+
body=body,
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
response = await client.get_async_httpx_client().request(**kwargs)
|
|
158
|
+
|
|
159
|
+
return _build_response(client=client, response=response)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
async def asyncio(
|
|
163
|
+
*,
|
|
164
|
+
client: AuthenticatedClient | Client,
|
|
165
|
+
body: CreateOrganization | Unset = UNSET,
|
|
166
|
+
) -> CreateOrganizationErrors | Error | Organization | None:
|
|
167
|
+
"""Create a new organization for the authenticated user.
|
|
168
|
+
|
|
169
|
+
Args:
|
|
170
|
+
body (CreateOrganization | Unset):
|
|
171
|
+
|
|
172
|
+
Raises:
|
|
173
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
174
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
175
|
+
|
|
176
|
+
Returns:
|
|
177
|
+
CreateOrganizationErrors | Error | Organization
|
|
178
|
+
"""
|
|
179
|
+
|
|
180
|
+
return (
|
|
181
|
+
await asyncio_detailed(
|
|
182
|
+
client=client,
|
|
183
|
+
body=body,
|
|
184
|
+
)
|
|
185
|
+
).parsed
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Contains endpoint functions for accessing the API"""
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
from .artifact_response import ArtifactResponse
|
|
4
4
|
from .blob import Blob
|
|
5
5
|
from .create_new_job import CreateNewJob
|
|
6
|
+
from .create_organization import CreateOrganization
|
|
7
|
+
from .create_organization_errors import CreateOrganizationErrors
|
|
6
8
|
from .create_project import CreateProject
|
|
7
9
|
from .create_remote import CreateRemote
|
|
8
10
|
from .create_remote_response import CreateRemoteResponse
|
|
@@ -16,6 +18,7 @@ from .get_artifact_downloads_response import GetArtifactDownloadsResponse
|
|
|
16
18
|
from .job import Job
|
|
17
19
|
from .last_jobs_response import LastJobsResponse
|
|
18
20
|
from .list_projects_response import ListProjectsResponse
|
|
21
|
+
from .organization import Organization
|
|
19
22
|
from .presigned_url import PresignedUrl
|
|
20
23
|
from .presigned_url_fields import PresignedUrlFields
|
|
21
24
|
from .project import Project
|
|
@@ -39,6 +42,8 @@ __all__ = (
|
|
|
39
42
|
"ArtifactResponse",
|
|
40
43
|
"Blob",
|
|
41
44
|
"CreateNewJob",
|
|
45
|
+
"CreateOrganization",
|
|
46
|
+
"CreateOrganizationErrors",
|
|
42
47
|
"CreateProject",
|
|
43
48
|
"CreateRemote",
|
|
44
49
|
"CreateRemoteResponse",
|
|
@@ -52,6 +57,7 @@ __all__ = (
|
|
|
52
57
|
"Job",
|
|
53
58
|
"LastJobsResponse",
|
|
54
59
|
"ListProjectsResponse",
|
|
60
|
+
"Organization",
|
|
55
61
|
"PresignedUrl",
|
|
56
62
|
"PresignedUrlFields",
|
|
57
63
|
"Project",
|
|
@@ -26,6 +26,8 @@ class CreateNewJob:
|
|
|
26
26
|
message (None | str | Unset):
|
|
27
27
|
commit (None | str | Unset):
|
|
28
28
|
ref (None | str | Unset):
|
|
29
|
+
extras (None | str | Unset):
|
|
30
|
+
untracked_count (int | None | Unset):
|
|
29
31
|
project (None | str | Unset):
|
|
30
32
|
project_id (None | str | Unset):
|
|
31
33
|
"""
|
|
@@ -39,6 +41,8 @@ class CreateNewJob:
|
|
|
39
41
|
message: None | str | Unset = UNSET
|
|
40
42
|
commit: None | str | Unset = UNSET
|
|
41
43
|
ref: None | str | Unset = UNSET
|
|
44
|
+
extras: None | str | Unset = UNSET
|
|
45
|
+
untracked_count: int | None | Unset = UNSET
|
|
42
46
|
project: None | str | Unset = UNSET
|
|
43
47
|
project_id: None | str | Unset = UNSET
|
|
44
48
|
|
|
@@ -73,6 +77,18 @@ class CreateNewJob:
|
|
|
73
77
|
else:
|
|
74
78
|
ref = self.ref
|
|
75
79
|
|
|
80
|
+
extras: None | str | Unset
|
|
81
|
+
if isinstance(self.extras, Unset):
|
|
82
|
+
extras = UNSET
|
|
83
|
+
else:
|
|
84
|
+
extras = self.extras
|
|
85
|
+
|
|
86
|
+
untracked_count: int | None | Unset
|
|
87
|
+
if isinstance(self.untracked_count, Unset):
|
|
88
|
+
untracked_count = UNSET
|
|
89
|
+
else:
|
|
90
|
+
untracked_count = self.untracked_count
|
|
91
|
+
|
|
76
92
|
project: None | str | Unset
|
|
77
93
|
if isinstance(self.project, Unset):
|
|
78
94
|
project = UNSET
|
|
@@ -104,6 +120,10 @@ class CreateNewJob:
|
|
|
104
120
|
field_dict["commit"] = commit
|
|
105
121
|
if ref is not UNSET:
|
|
106
122
|
field_dict["ref"] = ref
|
|
123
|
+
if extras is not UNSET:
|
|
124
|
+
field_dict["extras"] = extras
|
|
125
|
+
if untracked_count is not UNSET:
|
|
126
|
+
field_dict["untracked_count"] = untracked_count
|
|
107
127
|
if project is not UNSET:
|
|
108
128
|
field_dict["project"] = project
|
|
109
129
|
if project_id is not UNSET:
|
|
@@ -153,6 +173,24 @@ class CreateNewJob:
|
|
|
153
173
|
|
|
154
174
|
ref = _parse_ref(d.pop("ref", UNSET))
|
|
155
175
|
|
|
176
|
+
def _parse_extras(data: object) -> None | str | Unset:
|
|
177
|
+
if data is None:
|
|
178
|
+
return data
|
|
179
|
+
if isinstance(data, Unset):
|
|
180
|
+
return data
|
|
181
|
+
return cast(None | str | Unset, data)
|
|
182
|
+
|
|
183
|
+
extras = _parse_extras(d.pop("extras", UNSET))
|
|
184
|
+
|
|
185
|
+
def _parse_untracked_count(data: object) -> int | None | Unset:
|
|
186
|
+
if data is None:
|
|
187
|
+
return data
|
|
188
|
+
if isinstance(data, Unset):
|
|
189
|
+
return data
|
|
190
|
+
return cast(int | None | Unset, data)
|
|
191
|
+
|
|
192
|
+
untracked_count = _parse_untracked_count(d.pop("untracked_count", UNSET))
|
|
193
|
+
|
|
156
194
|
def _parse_project(data: object) -> None | str | Unset:
|
|
157
195
|
if data is None:
|
|
158
196
|
return data
|
|
@@ -181,6 +219,8 @@ class CreateNewJob:
|
|
|
181
219
|
message=message,
|
|
182
220
|
commit=commit,
|
|
183
221
|
ref=ref,
|
|
222
|
+
extras=extras,
|
|
223
|
+
untracked_count=untracked_count,
|
|
184
224
|
project=project,
|
|
185
225
|
project_id=project_id,
|
|
186
226
|
)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="CreateOrganization")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class CreateOrganization:
|
|
14
|
+
"""
|
|
15
|
+
Attributes:
|
|
16
|
+
name (str):
|
|
17
|
+
slug (str):
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
name: str
|
|
21
|
+
slug: str
|
|
22
|
+
|
|
23
|
+
def to_dict(self) -> dict[str, Any]:
|
|
24
|
+
name = self.name
|
|
25
|
+
|
|
26
|
+
slug = self.slug
|
|
27
|
+
|
|
28
|
+
field_dict: dict[str, Any] = {}
|
|
29
|
+
|
|
30
|
+
field_dict.update(
|
|
31
|
+
{
|
|
32
|
+
"name": name,
|
|
33
|
+
"slug": slug,
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
return field_dict
|
|
38
|
+
|
|
39
|
+
@classmethod
|
|
40
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
41
|
+
d = dict(src_dict)
|
|
42
|
+
name = d.pop("name")
|
|
43
|
+
|
|
44
|
+
slug = d.pop("slug")
|
|
45
|
+
|
|
46
|
+
create_organization = cls(
|
|
47
|
+
name=name,
|
|
48
|
+
slug=slug,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
return create_organization
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
from typing import cast
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
T = TypeVar("T", bound="CreateOrganizationErrors")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@_attrs_define
|
|
16
|
+
class CreateOrganizationErrors:
|
|
17
|
+
"""
|
|
18
|
+
Attributes:
|
|
19
|
+
errors (list[str]):
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
errors: list[str]
|
|
23
|
+
|
|
24
|
+
def to_dict(self) -> dict[str, Any]:
|
|
25
|
+
errors = self.errors
|
|
26
|
+
|
|
27
|
+
field_dict: dict[str, Any] = {}
|
|
28
|
+
|
|
29
|
+
field_dict.update(
|
|
30
|
+
{
|
|
31
|
+
"errors": errors,
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
return field_dict
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
39
|
+
d = dict(src_dict)
|
|
40
|
+
errors = cast(list[str], d.pop("errors"))
|
|
41
|
+
|
|
42
|
+
create_organization_errors = cls(
|
|
43
|
+
errors=errors,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
return create_organization_errors
|