datex-studio-cli 0.4.3__tar.gz → 0.4.4__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.
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/PKG-INFO +1 -1
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/pyproject.toml +1 -1
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/__init__.py +1 -1
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/update_check.py +86 -14
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/.gitignore +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/README.md +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/report-creator.skill +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/scripts/analyze_corpus.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/scripts/generate_rdlx_schema.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/__main__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/cli.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/api.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/auth.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/branch.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/config.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/configuration.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/crm.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/datasource.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/devops.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/document.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/endpoint.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/env.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/explore.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/function.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/marketplace.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/odata.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/organization.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/proxy.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/release_notes.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/repo.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/add_cmds.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/api.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/batch.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/create.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/data.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/dataset.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/edit.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/folder.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/preview.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/report/schema_cmds.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/schema.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/servicepack.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/source.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/studio.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/telemetry.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/commands/user.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/context.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/api/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/api/app_config.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/api/client.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/api/endpoints.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/api/metadata_models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/api/models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/auth/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/auth/decorators.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/auth/msal_client.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/auth/token_cache.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/cache.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/flow_generator.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/flow_models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/generator.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/parsers.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/resolver.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/type_def_parser.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/validator.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/designer/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/designer/flow_models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/designer/models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/designer/parsers.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/devops/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/devops/client.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/devops/helpers.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/devops/models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/dynamics/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/dynamics/client.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/dynamics/metadata_cache.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/footprint/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/footprint/client.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/footprint/edmx_parser.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/footprint/metadata.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/function/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/function/generator.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/function/models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/function/validator.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/graph.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/output/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/output/csv_fmt.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/output/formatter.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/output/json_fmt.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/output/redaction.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/output/yaml_fmt.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/release_notes.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/responses.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/telemetry/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/telemetry/config.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/telemetry/identity.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/telemetry/recorder.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/telemetry/scrubber.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/telemetry/sender.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/models/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/datasource_binding.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/engine.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/field_parser.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/folder.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/manifest.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/models.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/preview.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/preview_arjs.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/schema.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/svg_renderer.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/templates/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/templates/bill_of_lading.rdlx-json +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/templates/shipping_label.rdlx-json +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/validate_arjs.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/validator.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/wrapper.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/click_options.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/config.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/errors.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/filtering.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/image.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/paths.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/resolvers.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/responses.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/restricted.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/utils/sorting.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/__init__.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/app.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/design.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/proxy_app.py +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/404/index.html +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/404.html +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/UgyAMtPjH-Pt0RYWOHzIT/_buildManifest.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/UgyAMtPjH-Pt0RYWOHzIT/_ssgManifest.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/0b24cca5-c1e1c8810348f107.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/255-102f2e5b2e3dc2ef.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/4bd1b696-c023c6e3521b1417.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/538-84e2e111415f1fda.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/697-0e000ab410d9f470.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/871-1acacdb7b4022abf.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/8b8f67fc-6295949a4b5485a4.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/909-c88abba3cf0caec3.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/app/_not-found/page-ea1be7001c230704.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/app/design/capture/page-a5e129c2d223432c.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/app/design/page-21ba66a3dd3b03f0.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/app/layout-2cc6eac09e476c91.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/app/page-20c358395882cdac.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/framework-de98b93a850cfc71.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/main-0f18f91200dac003.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/main-app-b69998d8941231d8.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/pages/_app-7d307437aca18ad4.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/chunks/webpack-2b297ada5306c17f.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/_next/static/css/360c657de5e04df8.css +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/design/capture/index.html +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/design/capture/index.txt +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/design/index.html +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/design/index.txt +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/index.html +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/index.txt +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/render-cli.js +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/report-preview.html +0 -0
- {datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/report-validate.html +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datex-studio-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: CLI for Datex Studio low-code platform, designed for LLM-based AI agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/datex/datex-studio-cli
|
|
6
6
|
Project-URL: Documentation, https://github.com/datex/datex-studio-cli
|
|
@@ -15,9 +15,12 @@ from __future__ import annotations
|
|
|
15
15
|
|
|
16
16
|
import json
|
|
17
17
|
import os
|
|
18
|
+
import platform
|
|
18
19
|
import re
|
|
19
20
|
import shlex
|
|
21
|
+
import subprocess
|
|
20
22
|
import sys
|
|
23
|
+
import tempfile
|
|
21
24
|
import threading
|
|
22
25
|
import time
|
|
23
26
|
from pathlib import Path
|
|
@@ -146,16 +149,29 @@ def detect_upgrade_command() -> str:
|
|
|
146
149
|
|
|
147
150
|
|
|
148
151
|
def _run_upgrade(command: str) -> int:
|
|
149
|
-
"""
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
152
|
+
"""Hand off to the upgrade command, tearing down this process first.
|
|
153
|
+
|
|
154
|
+
POSIX uses ``os.execvp``, which truly replaces the process image and
|
|
155
|
+
frees all file handles before the upgrader (uv/pipx/pip) starts rewriting
|
|
156
|
+
the venv.
|
|
157
|
+
|
|
158
|
+
Windows is different: ``os.execvp`` there spawns a child and exits, but
|
|
159
|
+
Windows holds an exclusive image-file lock on the running ``dxs.exe``
|
|
160
|
+
launcher (e.g. ``~/.local/bin/dxs.exe``) until the launcher process fully
|
|
161
|
+
terminates — uv races ahead and fails to overwrite the entry-point shim
|
|
162
|
+
with "os error 32: file in use". So on Windows we write a small batch
|
|
163
|
+
helper that waits briefly for the launcher to exit, then runs the
|
|
164
|
+
upgrade in a fresh console window, and we exit immediately to release
|
|
165
|
+
the lock.
|
|
166
|
+
|
|
167
|
+
On success this function does not return. Returns 1 only when the
|
|
168
|
+
upgrade fails to start.
|
|
158
169
|
"""
|
|
170
|
+
command = command.strip()
|
|
171
|
+
if not command:
|
|
172
|
+
click.echo("Upgrade command was empty.", err=True)
|
|
173
|
+
return 1
|
|
174
|
+
|
|
159
175
|
click.echo(f"Running: {command}", err=True)
|
|
160
176
|
try:
|
|
161
177
|
sys.stdout.flush()
|
|
@@ -163,10 +179,10 @@ def _run_upgrade(command: str) -> int:
|
|
|
163
179
|
except Exception: # noqa: BLE001
|
|
164
180
|
pass
|
|
165
181
|
|
|
182
|
+
if platform.system() == "Windows":
|
|
183
|
+
return _spawn_windows_upgrade(command)
|
|
184
|
+
|
|
166
185
|
args = shlex.split(command)
|
|
167
|
-
if not args:
|
|
168
|
-
click.echo("Upgrade command was empty.", err=True)
|
|
169
|
-
return 1
|
|
170
186
|
try:
|
|
171
187
|
os.execvp(args[0], args)
|
|
172
188
|
except OSError as e:
|
|
@@ -175,6 +191,62 @@ def _run_upgrade(command: str) -> int:
|
|
|
175
191
|
return 1 # unreachable on success
|
|
176
192
|
|
|
177
193
|
|
|
194
|
+
def _spawn_windows_upgrade(command: str) -> int:
|
|
195
|
+
"""Spawn the upgrade in a new console window detached from this process.
|
|
196
|
+
|
|
197
|
+
Writes a temporary ``.cmd`` file that waits ~3 seconds for ``dxs.exe`` to
|
|
198
|
+
fully terminate (releasing Windows' image-file lock on the launcher),
|
|
199
|
+
then runs the upgrade with one short retry if the first attempt still
|
|
200
|
+
hits a file-in-use error. The current process exits immediately so the
|
|
201
|
+
lock is released as quickly as possible.
|
|
202
|
+
"""
|
|
203
|
+
script = (
|
|
204
|
+
"@echo off\r\n"
|
|
205
|
+
"echo Waiting for dxs to exit so its files can be replaced...\r\n"
|
|
206
|
+
# ping -n N sleeps roughly (N-1) seconds; portable across all
|
|
207
|
+
# Windows versions where `timeout` may not be available.
|
|
208
|
+
"ping -n 4 127.0.0.1 > nul\r\n"
|
|
209
|
+
f"echo Running: {command}\r\n"
|
|
210
|
+
f"{command}\r\n"
|
|
211
|
+
"if %ERRORLEVEL% NEQ 0 (\r\n"
|
|
212
|
+
" echo.\r\n"
|
|
213
|
+
" echo First attempt failed; waiting and retrying once...\r\n"
|
|
214
|
+
" ping -n 6 127.0.0.1 > nul\r\n"
|
|
215
|
+
f" {command}\r\n"
|
|
216
|
+
")\r\n"
|
|
217
|
+
"echo.\r\n"
|
|
218
|
+
"if %ERRORLEVEL% NEQ 0 (echo Upgrade failed.) else (echo Upgrade complete.)\r\n"
|
|
219
|
+
"echo.\r\n"
|
|
220
|
+
"pause\r\n"
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
try:
|
|
224
|
+
fd, script_path = tempfile.mkstemp(prefix="dxs-upgrade-", suffix=".cmd")
|
|
225
|
+
with os.fdopen(fd, "w", newline="") as f:
|
|
226
|
+
f.write(script)
|
|
227
|
+
except OSError as e:
|
|
228
|
+
click.echo(f"Failed to write upgrade helper script: {e}", err=True)
|
|
229
|
+
return 1
|
|
230
|
+
|
|
231
|
+
click.echo(
|
|
232
|
+
"Spawning the upgrade in a new console window so dxs can exit and release its files.",
|
|
233
|
+
err=True,
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
CREATE_NEW_CONSOLE = 0x00000010
|
|
237
|
+
try:
|
|
238
|
+
subprocess.Popen(
|
|
239
|
+
["cmd.exe", "/c", script_path],
|
|
240
|
+
creationflags=CREATE_NEW_CONSOLE,
|
|
241
|
+
close_fds=True,
|
|
242
|
+
)
|
|
243
|
+
except OSError as e:
|
|
244
|
+
click.echo(f"Failed to spawn upgrade: {e}", err=True)
|
|
245
|
+
return 1
|
|
246
|
+
|
|
247
|
+
sys.exit(0)
|
|
248
|
+
|
|
249
|
+
|
|
178
250
|
def _interactive() -> bool:
|
|
179
251
|
"""True only when stdin, stderr, and stdout are all attached to a TTY.
|
|
180
252
|
|
|
@@ -231,8 +303,8 @@ def maybe_show_update_notice(skip: bool = False) -> None:
|
|
|
231
303
|
err=True,
|
|
232
304
|
)
|
|
233
305
|
exit_code = _run_upgrade(upgrade_cmd)
|
|
234
|
-
# _run_upgrade only returns when
|
|
235
|
-
click.echo(f" Upgrade
|
|
306
|
+
# _run_upgrade only returns when the upgrade failed to start.
|
|
307
|
+
click.echo(f" Upgrade failed to start (code {exit_code}).", err=True)
|
|
236
308
|
except (click.Abort, EOFError):
|
|
237
309
|
click.echo("", err=True)
|
|
238
310
|
return
|
|
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
|
{datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/core/datasource/type_def_parser.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
|
|
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
|
{datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/templates/bill_of_lading.rdlx-json
RENAMED
|
File without changes
|
{datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/report/templates/shipping_label.rdlx-json
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
|
|
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
|
{datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/design/capture/index.html
RENAMED
|
File without changes
|
{datex_studio_cli-0.4.3 → datex_studio_cli-0.4.4}/src/dxs/web/static/design/capture/index.txt
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
|