lib-shopify-graphql 2.0.2__tar.gz → 2.0.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.
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.github/workflows/default_cicd_public.yml +40 -5
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.github/workflows/default_release_public.yml +2 -2
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.github/workflows/integrationtest.yml +2 -2
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/CHANGELOG.md +36 -0
- lib_shopify_graphql-2.0.4/Makefile +260 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/PKG-INFO +11 -11
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/README.md +1 -1
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/pyproject.toml +14 -12
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/reset_git_history.sh +16 -15
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/__init__conf__.py +1 -1
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/constants.py +2 -0
- lib_shopify_graphql-2.0.4/src/lib_shopify_graphql/adapters/parsers/__init__.py +82 -0
- lib_shopify_graphql-2.0.4/src/lib_shopify_graphql/adapters/parsers/_errors.py +100 -0
- lib_shopify_graphql-2.0.4/src/lib_shopify_graphql/adapters/parsers/_input_builders.py +245 -0
- lib_shopify_graphql-2.0.4/src/lib_shopify_graphql/adapters/parsers/_mutations.py +165 -0
- lib_shopify_graphql-2.0.4/src/lib_shopify_graphql/adapters/parsers/_products.py +335 -0
- lib_shopify_graphql-2.0.4/src/lib_shopify_graphql/adapters/parsers/_truncation.py +324 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/cli/_cache.py +33 -42
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/cli/_common.py +34 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/cli/_images.py +39 -57
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/cli/_products.py +28 -54
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/cli/_test_limits.py +24 -31
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_common.py +24 -2
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_images.py +4 -28
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_inventory.py +3 -19
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_metafields.py +2 -19
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_products.py +4 -34
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_variants_bulk.py +2 -16
- lib_shopify_graphql-2.0.2/.data_arch_violations.json +0 -131
- lib_shopify_graphql-2.0.2/Makefile +0 -63
- lib_shopify_graphql-2.0.2/scripts/__init__.py +0 -9
- lib_shopify_graphql-2.0.2/scripts/__main__.py +0 -8
- lib_shopify_graphql-2.0.2/scripts/_utils.py +0 -768
- lib_shopify_graphql-2.0.2/scripts/build.py +0 -53
- lib_shopify_graphql-2.0.2/scripts/bump.py +0 -33
- lib_shopify_graphql-2.0.2/scripts/bump_major.py +0 -21
- lib_shopify_graphql-2.0.2/scripts/bump_minor.py +0 -21
- lib_shopify_graphql-2.0.2/scripts/bump_patch.py +0 -21
- lib_shopify_graphql-2.0.2/scripts/bump_version.py +0 -85
- lib_shopify_graphql-2.0.2/scripts/clean.py +0 -71
- lib_shopify_graphql-2.0.2/scripts/cli.py +0 -236
- lib_shopify_graphql-2.0.2/scripts/dependencies.py +0 -586
- lib_shopify_graphql-2.0.2/scripts/dev.py +0 -20
- lib_shopify_graphql-2.0.2/scripts/help.py +0 -38
- lib_shopify_graphql-2.0.2/scripts/install.py +0 -20
- lib_shopify_graphql-2.0.2/scripts/menu.py +0 -608
- lib_shopify_graphql-2.0.2/scripts/push.py +0 -310
- lib_shopify_graphql-2.0.2/scripts/release.py +0 -95
- lib_shopify_graphql-2.0.2/scripts/run_cli.py +0 -147
- lib_shopify_graphql-2.0.2/scripts/target_metadata.py +0 -206
- lib_shopify_graphql-2.0.2/scripts/test.py +0 -1147
- lib_shopify_graphql-2.0.2/scripts/toml_config.py +0 -433
- lib_shopify_graphql-2.0.2/scripts/version_current.py +0 -21
- lib_shopify_graphql-2.0.2/src/lib_shopify_graphql/adapters/parsers.py +0 -1112
- lib_shopify_graphql-2.0.2/tests/test_scripts.py +0 -266
- lib_shopify_graphql-2.0.2/tests/zpool_list_ok_sample.json +0 -81
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.devcontainer/devcontainer.json +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.devcontainer/settings.json +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.env.example +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.github/actions/extract-metadata/action.yml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.github/dependabot.yml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.github/workflows/codeql.yml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.gitignore +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.qlty/qlty.toml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.snyk +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/CONTRIBUTING.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/DEVELOPMENT.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/INSTALL.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/LICENSE +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/codecov.yml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/docs/api_reference.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/docs/caching.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/docs/cli.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/docs/shopify_setup.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/docs/sync_implementation.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/docs/systemdesign/module_reference.md +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/notebooks/Quickstart.ipynb +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/__init__.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/__main__.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/_compat.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/__init__.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/cache_json.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/cache_mysql.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/location_resolver.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/mutations.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/queries.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/shopify_sdk.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/sku_resolver.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/adapters/token_cache.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/application/__init__.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/application/ports.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/cli/__init__.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/cli/_config.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/cli/_health.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/composition.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/config.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/config_deploy.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/config_show.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/defaultconfig.d/10-logging.toml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/defaultconfig.d/20-shopify.toml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/defaultconfig.d/30-mysql.toml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/defaultconfig.d/40-token-cache.toml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/defaultconfig.d/50-sku-cache.toml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/defaultconfig.d/60-graphql.toml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/defaultconfig.toml +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/domain/__init__.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/enums.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/exceptions.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/logging_setup.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/models/__init__.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/models/_entities.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/models/_enums.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/models/_images.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/models/_internal.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/models/_mutations.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/models/_operations.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/py.typed +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/__init__.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_cache.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_session.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/shopify_client/_variants.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/conftest.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_cache.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_cli.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_composition.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_config.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_config_deploy.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_config_show.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_constants.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_enums.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_images.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_integration.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_integration_mysql.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_location_resolver.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_metadata.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_models.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_module_entry.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_parsers.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_shopify_client.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_sku_resolver.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_token_cache.py +0 -0
- {lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/tests/test_update_models.py +0 -0
{lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.github/workflows/default_cicd_public.yml
RENAMED
|
@@ -10,15 +10,47 @@ on:
|
|
|
10
10
|
- cron: '17 3 * * *'
|
|
11
11
|
|
|
12
12
|
jobs:
|
|
13
|
+
setup:
|
|
14
|
+
name: Extract Python versions from pyproject.toml
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
outputs:
|
|
17
|
+
python-versions: ${{ steps.versions.outputs.python-versions }}
|
|
18
|
+
python-latest: ${{ steps.versions.outputs.python-latest }}
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v6
|
|
21
|
+
- uses: actions/setup-python@v6
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.x"
|
|
24
|
+
- name: Parse classifiers for Python versions
|
|
25
|
+
id: versions
|
|
26
|
+
shell: python
|
|
27
|
+
run: |
|
|
28
|
+
import json, os, tomllib
|
|
29
|
+
|
|
30
|
+
with open("pyproject.toml", "rb") as f:
|
|
31
|
+
data = tomllib.load(f)
|
|
32
|
+
classifiers = data.get("project", {}).get("classifiers", [])
|
|
33
|
+
prefix = "Programming Language :: Python :: "
|
|
34
|
+
versions = [
|
|
35
|
+
c[len(prefix):]
|
|
36
|
+
for c in classifiers
|
|
37
|
+
if c.startswith(prefix) and "." in c[len(prefix):]
|
|
38
|
+
]
|
|
39
|
+
if not versions:
|
|
40
|
+
raise SystemExit("No Python X.Y versions found in classifiers")
|
|
41
|
+
with open(os.environ["GITHUB_OUTPUT"], "a") as fh:
|
|
42
|
+
fh.write(f"python-versions={json.dumps(versions)}\n")
|
|
43
|
+
fh.write(f"python-latest={versions[-1]}\n")
|
|
44
|
+
|
|
13
45
|
test:
|
|
14
46
|
name: Tests (Python ${{ matrix.python }}, ${{ matrix.os }})
|
|
47
|
+
needs: setup
|
|
15
48
|
runs-on: ${{ matrix.os }}
|
|
16
49
|
strategy:
|
|
17
50
|
fail-fast: false
|
|
18
51
|
matrix:
|
|
19
52
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
20
|
-
|
|
21
|
-
python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
53
|
+
python: ${{ fromJSON(needs.setup.outputs.python-versions) }}
|
|
22
54
|
env:
|
|
23
55
|
PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
|
|
24
56
|
PYTHONIOENCODING: "utf-8"
|
|
@@ -63,7 +95,10 @@ jobs:
|
|
|
63
95
|
run: |
|
|
64
96
|
uv pip install pywin32 --system
|
|
65
97
|
|
|
98
|
+
# Self-hosted runners persist ruff cache via RUFF_CACHE_DIR volume mount,
|
|
99
|
+
# so actions/cache is only needed on GitHub-hosted runners.
|
|
66
100
|
- name: Restore ruff cache
|
|
101
|
+
if: runner.environment == 'github-hosted'
|
|
67
102
|
id: ruff-cache
|
|
68
103
|
uses: actions/cache/restore@v5
|
|
69
104
|
with:
|
|
@@ -109,7 +144,7 @@ jobs:
|
|
|
109
144
|
always()
|
|
110
145
|
&& steps.pytest.outcome == 'success'
|
|
111
146
|
&& matrix.os == 'ubuntu-latest'
|
|
112
|
-
&& matrix.python ==
|
|
147
|
+
&& matrix.python == needs.setup.outputs.python-latest
|
|
113
148
|
uses: codecov/codecov-action@v5
|
|
114
149
|
with:
|
|
115
150
|
files: ${{ env.COV_REPORT_FILE }}
|
|
@@ -125,7 +160,7 @@ jobs:
|
|
|
125
160
|
id: bandit
|
|
126
161
|
continue-on-error: true
|
|
127
162
|
shell: bash
|
|
128
|
-
run: bandit -q -r ${{ env.SRC_PATH }}/${{ env.PACKAGE_MODULE }} ${{ env.BANDIT_SKIP_FLAG }}
|
|
163
|
+
run: bandit -q -c pyproject.toml -r ${{ env.SRC_PATH }}/${{ env.PACKAGE_MODULE }} ${{ env.BANDIT_SKIP_FLAG }}
|
|
129
164
|
|
|
130
165
|
- name: Run pip-audit (vulnerability scan)
|
|
131
166
|
id: pipaudit
|
|
@@ -189,7 +224,7 @@ jobs:
|
|
|
189
224
|
run: uv cache prune --ci
|
|
190
225
|
|
|
191
226
|
- name: Save ruff cache
|
|
192
|
-
if: always() && steps.ruff-cache.outputs.cache-hit != 'true'
|
|
227
|
+
if: always() && runner.environment == 'github-hosted' && steps.ruff-cache.outputs.cache-hit != 'true'
|
|
193
228
|
uses: actions/cache/save@v5
|
|
194
229
|
with:
|
|
195
230
|
path: .ruff_cache
|
{lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/.github/workflows/default_release_public.yml
RENAMED
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
run: uv build
|
|
32
32
|
|
|
33
33
|
- name: Upload artifacts
|
|
34
|
-
uses: actions/upload-artifact@
|
|
34
|
+
uses: actions/upload-artifact@v7
|
|
35
35
|
with:
|
|
36
36
|
name: dist
|
|
37
37
|
path: dist/*
|
|
@@ -56,7 +56,7 @@ jobs:
|
|
|
56
56
|
fi
|
|
57
57
|
|
|
58
58
|
- name: Download artifacts
|
|
59
|
-
uses: actions/download-artifact@
|
|
59
|
+
uses: actions/download-artifact@v8
|
|
60
60
|
with:
|
|
61
61
|
name: dist
|
|
62
62
|
path: dist/
|
|
@@ -4,6 +4,38 @@ All notable changes to this project will be documented in this file following
|
|
|
4
4
|
the [Keep a Changelog](https://keepachangelog.com/) format.
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
## [2.0.4] - 2026-03-09
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Extracted `_check_graphql_errors()` helper to `shopify_client/_common.py`, replacing duplicate error-checking across 6 modules
|
|
11
|
+
- Inlined 6 trivial wrapper functions that only delegated to `_check_graphql_errors()`
|
|
12
|
+
- Added `shopify_session()` context manager to `cli/_common.py`, consolidating login/logout boilerplate across 4 CLI modules
|
|
13
|
+
- Split `adapters/parsers.py` (1112 lines) into 5 focused submodules: `_errors`, `_truncation`, `_products`, `_input_builders`, `_mutations`
|
|
14
|
+
- Added `@lru_cache` to `get_default_cache_dir()` to avoid redundant platform detection
|
|
15
|
+
- Updated CLAUDE.md: removed stale `scripts/` references, updated CLI package structure, replaced `test-slow` with `testintegration`
|
|
16
|
+
|
|
17
|
+
### Removed
|
|
18
|
+
- Removed stale `tests/zpool_list_ok_sample.json` fixture from unrelated project
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- README CI badge now points to correct workflow (`default_cicd_public.yml`)
|
|
22
|
+
|
|
23
|
+
## [2.0.3] - 2026-03-09
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- Migrated build tooling from `scripts/` to `bmk` (persistent uv tool)
|
|
27
|
+
- Updated CI integration test workflow to use `make testintegration`
|
|
28
|
+
- Bumped dependency minimum versions (filelock, orjson, ruff, bandit, textual, import-linter, hatchling)
|
|
29
|
+
- Fixed shell script formatting in `reset_git_history.sh` (4-space indent, shellcheck compliance)
|
|
30
|
+
|
|
31
|
+
### Removed
|
|
32
|
+
- Removed legacy `scripts/` directory (replaced by bmk)
|
|
33
|
+
- Removed obsolete `test_scripts.py`
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
- Registered `local_only` pytest marker in `pyproject.toml` to suppress warnings
|
|
37
|
+
- Updated CI/CD runner and action versions
|
|
38
|
+
|
|
7
39
|
## [2.0.2] - 2026-02-13
|
|
8
40
|
|
|
9
41
|
### Changed
|
|
@@ -48,6 +80,10 @@ the [Keep a Changelog](https://keepachangelog.com/) format.
|
|
|
48
80
|
|
|
49
81
|
## [Unreleased]
|
|
50
82
|
|
|
83
|
+
## [2.0.4] 2026-03-09 13:03:28
|
|
84
|
+
|
|
85
|
+
## [2.0.3] 2026-03-09 11:52:50
|
|
86
|
+
|
|
51
87
|
### Added
|
|
52
88
|
- `test-slow` target added to interactive TUI menu for running integration tests
|
|
53
89
|
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# BMK MAKEFILE 2.9.0
|
|
2
|
+
# do not alter this file - it might be overwritten on new versions of BMK
|
|
3
|
+
# if You want to alter it, remove the first line # BMK MAKEFILE 1.0 - then it is a custom makefile and will not be overwritten
|
|
4
|
+
# bmk Makefile — thin wrapper using `uv tool install` for persistent bmk
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# make test # run test suite
|
|
8
|
+
# make test --verbose # forward extra flags
|
|
9
|
+
# make bump-patch # bump patch version
|
|
10
|
+
# make push fix login bug # push with commit message
|
|
11
|
+
# make custom deploy # run custom command
|
|
12
|
+
# make custom deploy --dry-run
|
|
13
|
+
#
|
|
14
|
+
# On every invocation, bmk is (re-)installed as a persistent uv tool
|
|
15
|
+
# together with the current project's dependencies (read from ./pyproject.toml).
|
|
16
|
+
# This ensures pyright, pytest, pip-audit etc. can resolve the full
|
|
17
|
+
# dependency tree without PYTHONPATH hacks or a local .venv.
|
|
18
|
+
#
|
|
19
|
+
# Arguments after the target name are forwarded automatically.
|
|
20
|
+
# You can also use ARGS="..." explicitly if preferred.
|
|
21
|
+
|
|
22
|
+
SHELL := /bin/bash
|
|
23
|
+
.DEFAULT_GOAL := help
|
|
24
|
+
|
|
25
|
+
# Use absolute path to the uv tool binary so active virtualenvs cannot shadow it.
|
|
26
|
+
BMK := $(HOME)/.local/bin/bmk
|
|
27
|
+
ARGS ?=
|
|
28
|
+
|
|
29
|
+
# ──────────────────────────────────────────────────────────────
|
|
30
|
+
# Ensure bmk + project deps are installed as a persistent uv tool
|
|
31
|
+
# ──────────────────────────────────────────────────────────────
|
|
32
|
+
# --reinstall re-resolves deps on every call (fast when cached).
|
|
33
|
+
# Fallback handles first-time install where --reinstall would fail.
|
|
34
|
+
.PHONY: _ensure_bmk
|
|
35
|
+
_ensure_bmk:
|
|
36
|
+
@uv tool install --reinstall bmk --with . 2>/dev/null || uv tool install bmk --with .
|
|
37
|
+
|
|
38
|
+
# ──────────────────────────────────────────────────────────────
|
|
39
|
+
# Argument forwarding via MAKECMDGOALS
|
|
40
|
+
# ──────────────────────────────────────────────────────────────
|
|
41
|
+
# Allows natural argument passing: make push fix login bug
|
|
42
|
+
# instead of: make push ARGS="fix login bug"
|
|
43
|
+
|
|
44
|
+
# All targets that accept trailing arguments
|
|
45
|
+
_BMK_TARGETS := test t test-human th testintegration testi ti testintegration-human tih \
|
|
46
|
+
codecov coverage cov \
|
|
47
|
+
build bld clean cln cl run \
|
|
48
|
+
bump-major bump-minor bump-patch bump \
|
|
49
|
+
commit c push psh p release rel r \
|
|
50
|
+
dependencies deps d dependencies-update \
|
|
51
|
+
config config-deploy config-generate-examples \
|
|
52
|
+
send-email send-notification custom \
|
|
53
|
+
info logdemo
|
|
54
|
+
|
|
55
|
+
ifneq (,$(filter $(_BMK_TARGETS),$(firstword $(MAKECMDGOALS))))
|
|
56
|
+
# Capture everything after the first word as extra arguments
|
|
57
|
+
_EXTRA := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
|
|
58
|
+
# Append to ARGS (so explicit ARGS="..." still works alongside)
|
|
59
|
+
override ARGS += $(_EXTRA)
|
|
60
|
+
endif
|
|
61
|
+
|
|
62
|
+
# ──────────────────────────────────────────────────────────────
|
|
63
|
+
# Test & Quality
|
|
64
|
+
# ──────────────────────────────────────────────────────────────
|
|
65
|
+
|
|
66
|
+
.PHONY: test t
|
|
67
|
+
test: _ensure_bmk ## Run test suite [alias: t]
|
|
68
|
+
$(BMK) test $(ARGS)
|
|
69
|
+
t: _ensure_bmk
|
|
70
|
+
$(BMK) test $(ARGS)
|
|
71
|
+
|
|
72
|
+
.PHONY: test-human th
|
|
73
|
+
test-human: _ensure_bmk ## Run test suite with human-readable output [alias: th]
|
|
74
|
+
$(BMK) test --human $(ARGS)
|
|
75
|
+
th: _ensure_bmk
|
|
76
|
+
$(BMK) test --human $(ARGS)
|
|
77
|
+
|
|
78
|
+
.PHONY: testintegration testi ti
|
|
79
|
+
testintegration: _ensure_bmk ## Run integration tests only [aliases: testi, ti]
|
|
80
|
+
$(BMK) testintegration $(ARGS)
|
|
81
|
+
testi ti: _ensure_bmk
|
|
82
|
+
$(BMK) testintegration $(ARGS)
|
|
83
|
+
|
|
84
|
+
.PHONY: testintegration-human tih
|
|
85
|
+
testintegration-human: _ensure_bmk ## Run integration tests with human-readable output [alias: tih]
|
|
86
|
+
$(BMK) testintegration --human $(ARGS)
|
|
87
|
+
tih: _ensure_bmk
|
|
88
|
+
$(BMK) testintegration --human $(ARGS)
|
|
89
|
+
|
|
90
|
+
.PHONY: codecov coverage cov
|
|
91
|
+
codecov: _ensure_bmk ## Upload coverage report to Codecov [aliases: coverage, cov]
|
|
92
|
+
$(BMK) codecov $(ARGS)
|
|
93
|
+
coverage cov: _ensure_bmk
|
|
94
|
+
$(BMK) codecov $(ARGS)
|
|
95
|
+
|
|
96
|
+
# ──────────────────────────────────────────────────────────────
|
|
97
|
+
# Build & Clean
|
|
98
|
+
# ──────────────────────────────────────────────────────────────
|
|
99
|
+
|
|
100
|
+
.PHONY: build bld
|
|
101
|
+
build: _ensure_bmk ## Build wheel and sdist artifacts [alias: bld]
|
|
102
|
+
$(BMK) build $(ARGS)
|
|
103
|
+
bld: _ensure_bmk
|
|
104
|
+
$(BMK) build $(ARGS)
|
|
105
|
+
|
|
106
|
+
.PHONY: clean cln cl
|
|
107
|
+
clean: _ensure_bmk ## Remove build artifacts and caches [aliases: cln, cl]
|
|
108
|
+
$(BMK) clean $(ARGS)
|
|
109
|
+
cln cl: _ensure_bmk
|
|
110
|
+
$(BMK) clean $(ARGS)
|
|
111
|
+
|
|
112
|
+
# ──────────────────────────────────────────────────────────────
|
|
113
|
+
# Run
|
|
114
|
+
# ──────────────────────────────────────────────────────────────
|
|
115
|
+
|
|
116
|
+
.PHONY: run
|
|
117
|
+
run: _ensure_bmk ## Run the project CLI
|
|
118
|
+
$(BMK) run $(ARGS)
|
|
119
|
+
|
|
120
|
+
# ──────────────────────────────────────────────────────────────
|
|
121
|
+
# Version Bumping
|
|
122
|
+
# ──────────────────────────────────────────────────────────────
|
|
123
|
+
|
|
124
|
+
.PHONY: bump-major
|
|
125
|
+
bump-major: _ensure_bmk ## Bump major version (X+1).0.0
|
|
126
|
+
$(BMK) bump major $(ARGS)
|
|
127
|
+
|
|
128
|
+
.PHONY: bump-minor
|
|
129
|
+
bump-minor: _ensure_bmk ## Bump minor version X.(Y+1).0
|
|
130
|
+
$(BMK) bump minor $(ARGS)
|
|
131
|
+
|
|
132
|
+
.PHONY: bump-patch
|
|
133
|
+
bump-patch: _ensure_bmk ## Bump patch version X.Y.(Z+1)
|
|
134
|
+
$(BMK) bump patch $(ARGS)
|
|
135
|
+
|
|
136
|
+
.PHONY: bump
|
|
137
|
+
bump: bump-patch ## Bump patch version (default for bump)
|
|
138
|
+
|
|
139
|
+
# ──────────────────────────────────────────────────────────────
|
|
140
|
+
# Git Operations
|
|
141
|
+
# ──────────────────────────────────────────────────────────────
|
|
142
|
+
|
|
143
|
+
.PHONY: commit c
|
|
144
|
+
commit: _ensure_bmk ## Create a git commit with timestamped message [alias: c]
|
|
145
|
+
$(BMK) commit $(ARGS)
|
|
146
|
+
c: _ensure_bmk
|
|
147
|
+
$(BMK) commit $(ARGS)
|
|
148
|
+
|
|
149
|
+
.PHONY: push psh p
|
|
150
|
+
push: _ensure_bmk ## Run tests, commit, and push to remote [aliases: psh, p]
|
|
151
|
+
$(BMK) push $(ARGS)
|
|
152
|
+
psh p: _ensure_bmk
|
|
153
|
+
$(BMK) push $(ARGS)
|
|
154
|
+
|
|
155
|
+
.PHONY: release rel r
|
|
156
|
+
release: _ensure_bmk ## Create a versioned release (tag + GitHub release) [aliases: rel, r]
|
|
157
|
+
$(BMK) release $(ARGS)
|
|
158
|
+
rel r: _ensure_bmk
|
|
159
|
+
$(BMK) release $(ARGS)
|
|
160
|
+
|
|
161
|
+
# ──────────────────────────────────────────────────────────────
|
|
162
|
+
# Dependencies
|
|
163
|
+
# ──────────────────────────────────────────────────────────────
|
|
164
|
+
|
|
165
|
+
.PHONY: dependencies deps d
|
|
166
|
+
dependencies: _ensure_bmk ## Check and list project dependencies [aliases: deps, d]
|
|
167
|
+
$(BMK) dependencies $(ARGS)
|
|
168
|
+
deps d: _ensure_bmk
|
|
169
|
+
$(BMK) dependencies $(ARGS)
|
|
170
|
+
|
|
171
|
+
.PHONY: dependencies-update
|
|
172
|
+
dependencies-update: _ensure_bmk ## Update dependencies to latest versions
|
|
173
|
+
$(BMK) dependencies update $(ARGS)
|
|
174
|
+
|
|
175
|
+
# ──────────────────────────────────────────────────────────────
|
|
176
|
+
# Configuration
|
|
177
|
+
# ──────────────────────────────────────────────────────────────
|
|
178
|
+
|
|
179
|
+
.PHONY: config
|
|
180
|
+
config: _ensure_bmk ## Show current merged configuration
|
|
181
|
+
$(BMK) config $(ARGS)
|
|
182
|
+
|
|
183
|
+
.PHONY: config-deploy
|
|
184
|
+
config-deploy: _ensure_bmk ## Deploy configuration to system/user directories
|
|
185
|
+
$(BMK) config-deploy $(ARGS)
|
|
186
|
+
|
|
187
|
+
.PHONY: config-generate-examples
|
|
188
|
+
config-generate-examples: _ensure_bmk ## Generate example configuration files
|
|
189
|
+
$(BMK) config-generate-examples $(ARGS)
|
|
190
|
+
|
|
191
|
+
# ──────────────────────────────────────────────────────────────
|
|
192
|
+
# Email
|
|
193
|
+
# ──────────────────────────────────────────────────────────────
|
|
194
|
+
|
|
195
|
+
.PHONY: send-email
|
|
196
|
+
send-email: _ensure_bmk ## Send an email via configured SMTP
|
|
197
|
+
$(BMK) send-email $(ARGS)
|
|
198
|
+
|
|
199
|
+
.PHONY: send-notification
|
|
200
|
+
send-notification: _ensure_bmk ## Send a plain-text notification email
|
|
201
|
+
$(BMK) send-notification $(ARGS)
|
|
202
|
+
|
|
203
|
+
# ──────────────────────────────────────────────────────────────
|
|
204
|
+
# Custom Commands
|
|
205
|
+
# ──────────────────────────────────────────────────────────────
|
|
206
|
+
|
|
207
|
+
.PHONY: custom
|
|
208
|
+
custom: _ensure_bmk ## Run a custom command (make custom <name> [args...])
|
|
209
|
+
$(BMK) custom $(ARGS)
|
|
210
|
+
|
|
211
|
+
# ──────────────────────────────────────────────────────────────
|
|
212
|
+
# Info & Demos
|
|
213
|
+
# ──────────────────────────────────────────────────────────────
|
|
214
|
+
|
|
215
|
+
.PHONY: info
|
|
216
|
+
info: _ensure_bmk ## Print resolved package metadata
|
|
217
|
+
$(BMK) info $(ARGS)
|
|
218
|
+
|
|
219
|
+
.PHONY: logdemo
|
|
220
|
+
logdemo: _ensure_bmk ## Run logging demonstration
|
|
221
|
+
$(BMK) logdemo $(ARGS)
|
|
222
|
+
|
|
223
|
+
.PHONY: version-current
|
|
224
|
+
version-current: _ensure_bmk ## Print current version
|
|
225
|
+
$(BMK) --version
|
|
226
|
+
|
|
227
|
+
# ──────────────────────────────────────────────────────────────
|
|
228
|
+
# Development
|
|
229
|
+
# ──────────────────────────────────────────────────────────────
|
|
230
|
+
|
|
231
|
+
.PHONY: dev
|
|
232
|
+
dev: ## Install package with dev extras (editable)
|
|
233
|
+
uv pip install -e ".[dev]"
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
.PHONY: install
|
|
237
|
+
install: ## Editable install (no dev extras)
|
|
238
|
+
uv pip install -e .
|
|
239
|
+
|
|
240
|
+
# ──────────────────────────────────────────────────────────────
|
|
241
|
+
# Help
|
|
242
|
+
# ──────────────────────────────────────────────────────────────
|
|
243
|
+
|
|
244
|
+
.PHONY: help
|
|
245
|
+
help: ## Show this help
|
|
246
|
+
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
|
|
247
|
+
awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-26s\033[0m %s\n", $$1, $$2}' | \
|
|
248
|
+
sort
|
|
249
|
+
|
|
250
|
+
# ──────────────────────────────────────────────────────────────
|
|
251
|
+
# No-op overrides for trailing argument words (MUST be last)
|
|
252
|
+
# ──────────────────────────────────────────────────────────────
|
|
253
|
+
# Placed after all real target definitions so the no-op recipes
|
|
254
|
+
# override them. This prevents "make push codecov fix" from
|
|
255
|
+
# executing the real codecov target — "codecov" is an argument
|
|
256
|
+
# to push, not a separate command.
|
|
257
|
+
ifneq (,$(_EXTRA))
|
|
258
|
+
$(_EXTRA):
|
|
259
|
+
@:
|
|
260
|
+
endif
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lib_shopify_graphql
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.4
|
|
4
4
|
Summary: Python library for Shopify GraphQL API interactions
|
|
5
5
|
Project-URL: Homepage, https://github.com/bitranox/lib_shopify_graphql
|
|
6
6
|
Project-URL: Repository, https://github.com/bitranox/lib_shopify_graphql.git
|
|
@@ -20,26 +20,26 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
21
|
Classifier: Typing :: Typed
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
|
-
Requires-Dist: filelock>=3.
|
|
23
|
+
Requires-Dist: filelock>=3.25.0
|
|
24
24
|
Requires-Dist: httpx>=0.28.1
|
|
25
|
-
Requires-Dist: lib-cli-exit-tools>=2.
|
|
26
|
-
Requires-Dist: lib-layered-config>=5.
|
|
27
|
-
Requires-Dist: lib-log-rich>=6.3.
|
|
28
|
-
Requires-Dist: orjson>=3.11.
|
|
25
|
+
Requires-Dist: lib-cli-exit-tools>=2.3.0
|
|
26
|
+
Requires-Dist: lib-layered-config>=5.5.0
|
|
27
|
+
Requires-Dist: lib-log-rich>=6.3.3
|
|
28
|
+
Requires-Dist: orjson>=3.11.7
|
|
29
29
|
Requires-Dist: pydantic>=2.12.5
|
|
30
30
|
Requires-Dist: rich-click>=1.9.7
|
|
31
31
|
Provides-Extra: dev
|
|
32
|
-
Requires-Dist: bandit>=1.9.
|
|
32
|
+
Requires-Dist: bandit>=1.9.4; extra == 'dev'
|
|
33
33
|
Requires-Dist: build>=1.4.0; extra == 'dev'
|
|
34
34
|
Requires-Dist: codecov-cli>=11.2.6; extra == 'dev'
|
|
35
|
-
Requires-Dist: import-linter>=2.
|
|
35
|
+
Requires-Dist: import-linter>=2.11; extra == 'dev'
|
|
36
36
|
Requires-Dist: pip-audit>=2.10.0; extra == 'dev'
|
|
37
37
|
Requires-Dist: pyright[nodejs]>=1.1.408; extra == 'dev'
|
|
38
38
|
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
|
|
39
39
|
Requires-Dist: pytest>=9.0.2; extra == 'dev'
|
|
40
40
|
Requires-Dist: rtoml>=0.13.0; extra == 'dev'
|
|
41
|
-
Requires-Dist: ruff>=0.
|
|
42
|
-
Requires-Dist: textual>=
|
|
41
|
+
Requires-Dist: ruff>=0.15.5; extra == 'dev'
|
|
42
|
+
Requires-Dist: textual>=8.0.2; extra == 'dev'
|
|
43
43
|
Requires-Dist: twine>=6.2.0; extra == 'dev'
|
|
44
44
|
Provides-Extra: mysql
|
|
45
45
|
Requires-Dist: pymysql>=1.1.2; extra == 'mysql'
|
|
@@ -48,7 +48,7 @@ Description-Content-Type: text/markdown
|
|
|
48
48
|
# lib_shopify_graphql
|
|
49
49
|
|
|
50
50
|
<!-- Badges -->
|
|
51
|
-
[](https://github.com/bitranox/lib_shopify_graphql/actions/workflows/default_cicd_public.yml)
|
|
52
52
|
[](https://github.com/bitranox/lib_shopify_graphql/actions/workflows/codeql.yml)
|
|
53
53
|
[](LICENSE)
|
|
54
54
|
[](https://codespaces.new/bitranox/lib_shopify_graphql?quickstart=1)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# lib_shopify_graphql
|
|
2
2
|
|
|
3
3
|
<!-- Badges -->
|
|
4
|
-
[](https://github.com/bitranox/lib_shopify_graphql/actions/workflows/default_cicd_public.yml)
|
|
5
5
|
[](https://github.com/bitranox/lib_shopify_graphql/actions/workflows/codeql.yml)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://codespaces.new/bitranox/lib_shopify_graphql?quickstart=1)
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "lib_shopify_graphql"
|
|
3
|
-
version = "2.0.
|
|
3
|
+
version = "2.0.4"
|
|
4
4
|
description = "Python library for Shopify GraphQL API interactions"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
dependencies = [
|
|
8
8
|
"rich-click>=1.9.7",
|
|
9
|
-
"lib_cli_exit_tools>=2.
|
|
10
|
-
"lib_log_rich>=6.3.
|
|
11
|
-
"lib_layered_config>=5.
|
|
12
|
-
"filelock>=3.
|
|
13
|
-
"orjson>=3.11.
|
|
9
|
+
"lib_cli_exit_tools>=2.3.0",
|
|
10
|
+
"lib_log_rich>=6.3.3",
|
|
11
|
+
"lib_layered_config>=5.5.0",
|
|
12
|
+
"filelock>=3.25.0",
|
|
13
|
+
"orjson>=3.11.7",
|
|
14
14
|
"httpx>=0.28.1",
|
|
15
15
|
"pydantic>=2.12.5",
|
|
16
16
|
]
|
|
@@ -39,15 +39,15 @@ Issues = "https://github.com/bitranox/lib_shopify_graphql/issues"
|
|
|
39
39
|
dev = [
|
|
40
40
|
"pytest>=9.0.2",
|
|
41
41
|
"pytest-cov>=7.0.0",
|
|
42
|
-
"ruff>=0.
|
|
42
|
+
"ruff>=0.15.5",
|
|
43
43
|
"pyright[nodejs]>=1.1.408",
|
|
44
|
-
"bandit>=1.9.
|
|
44
|
+
"bandit>=1.9.4",
|
|
45
45
|
"build>=1.4.0",
|
|
46
46
|
"twine>=6.2.0",
|
|
47
47
|
"codecov-cli>=11.2.6",
|
|
48
48
|
"pip-audit>=2.10.0",
|
|
49
|
-
"textual>=
|
|
50
|
-
"import-linter>=2.
|
|
49
|
+
"textual>=8.0.2",
|
|
50
|
+
"import-linter>=2.11",
|
|
51
51
|
"rtoml>=0.13.0",
|
|
52
52
|
]
|
|
53
53
|
mysql = [
|
|
@@ -59,7 +59,7 @@ lib_shopify_graphql = "lib_shopify_graphql.cli:main"
|
|
|
59
59
|
lib-shopify-graphql = "lib_shopify_graphql.cli:main"
|
|
60
60
|
|
|
61
61
|
[build-system]
|
|
62
|
-
requires = ["hatchling>=1.
|
|
62
|
+
requires = ["hatchling>=1.29.0"]
|
|
63
63
|
build-backend = "hatchling.build"
|
|
64
64
|
|
|
65
65
|
|
|
@@ -120,6 +120,7 @@ markers = [
|
|
|
120
120
|
"os_posix: test exercises behavior requiring POSIX semantics",
|
|
121
121
|
"os_linux: test exercises Linux-only behavior",
|
|
122
122
|
"integration: integration tests requiring real Shopify API connection (slow)",
|
|
123
|
+
"local_only: tests that only run locally, not in CI",
|
|
123
124
|
"mysql_integration: MySQL backend integration tests (skipped in CI)",
|
|
124
125
|
]
|
|
125
126
|
|
|
@@ -147,8 +148,9 @@ output = "coverage.json"
|
|
|
147
148
|
pretty_print = true
|
|
148
149
|
|
|
149
150
|
[tool.clean]
|
|
150
|
-
# Patterns to remove when running `make clean`
|
|
151
|
+
# Patterns to remove when running `make clean`
|
|
151
152
|
patterns = [
|
|
153
|
+
"**/__pycache__",
|
|
152
154
|
".hypothesis",
|
|
153
155
|
".import_linter_cache",
|
|
154
156
|
".pytest_cache",
|
|
@@ -5,14 +5,14 @@ set -euo pipefail
|
|
|
5
5
|
echo "Preparing to squash repository history..."
|
|
6
6
|
|
|
7
7
|
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
echo "Error: run this script inside a Git repository." >&2
|
|
9
|
+
exit 1
|
|
10
10
|
fi
|
|
11
11
|
|
|
12
12
|
current_branch="$(git symbolic-ref --short HEAD 2>/dev/null || true)"
|
|
13
13
|
if [[ -z "$current_branch" ]]; then
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
echo "Error: could not determine current branch. Check out a branch and retry." >&2
|
|
15
|
+
exit 1
|
|
16
16
|
fi
|
|
17
17
|
|
|
18
18
|
# Snapshot tracked changes, keeping untracked files untouched.
|
|
@@ -20,17 +20,18 @@ fi
|
|
|
20
20
|
git rm -r --cached .idea >/dev/null 2>&1 || true
|
|
21
21
|
|
|
22
22
|
if git status --porcelain | grep -v '^??' >/dev/null 2>&1; then
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
echo "Committing tracked changes..."
|
|
24
|
+
git add -u
|
|
25
|
+
git commit -m "chore: checkpoint before history reset"
|
|
26
26
|
fi
|
|
27
27
|
|
|
28
28
|
# Ensure the working tree is clean before rewriting history.
|
|
29
29
|
if ! git diff --quiet || ! git diff --cached --quiet; then
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
echo "Error: working tree is not clean after checkpoint commit. Aborting." >&2
|
|
31
|
+
exit 1
|
|
32
32
|
fi
|
|
33
33
|
|
|
34
|
+
# shellcheck disable=SC1083
|
|
34
35
|
tree_sha="$(git rev-parse HEAD^{tree})"
|
|
35
36
|
reset_message="chore: reset history"
|
|
36
37
|
new_commit="$(git commit-tree "$tree_sha" -m "$reset_message")"
|
|
@@ -38,17 +39,17 @@ git reset --hard "$new_commit"
|
|
|
38
39
|
|
|
39
40
|
remote="${1:-}"
|
|
40
41
|
if [[ -z "$remote" ]]; then
|
|
41
|
-
|
|
42
|
+
remote="$(git remote | head -n1 || true)"
|
|
42
43
|
fi
|
|
43
44
|
|
|
44
45
|
if [[ -n "$remote" ]]; then
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
# Ensure any reintroduced IntelliJ files are untracked before the force push.
|
|
47
|
+
git rm -r --cached .idea >/dev/null 2>&1 || true
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
echo "Force pushing rewritten history to remote '$remote'..."
|
|
50
|
+
git push --force "$remote" "$current_branch"
|
|
50
51
|
else
|
|
51
|
-
|
|
52
|
+
echo "No remote configured. Local history rewritten only."
|
|
52
53
|
fi
|
|
53
54
|
|
|
54
55
|
echo "History reset complete. Untracked files were left untouched."
|
{lib_shopify_graphql-2.0.2 → lib_shopify_graphql-2.0.4}/src/lib_shopify_graphql/__init__conf__.py
RENAMED
|
@@ -24,7 +24,7 @@ name = "lib_shopify_graphql"
|
|
|
24
24
|
#: Human-readable summary shown in CLI help output.
|
|
25
25
|
title = "Python library for Shopify GraphQL API interactions"
|
|
26
26
|
#: Current release version pulled from ``pyproject.toml`` by automation.
|
|
27
|
-
version = "2.0.
|
|
27
|
+
version = "2.0.4"
|
|
28
28
|
#: Repository homepage presented to users.
|
|
29
29
|
homepage = "https://github.com/bitranox/lib_shopify_graphql"
|
|
30
30
|
#: Author attribution surfaced in CLI output.
|
|
@@ -8,6 +8,7 @@ All values can be overridden via configuration (see defaultconfig.toml).
|
|
|
8
8
|
|
|
9
9
|
from __future__ import annotations
|
|
10
10
|
|
|
11
|
+
from functools import lru_cache
|
|
11
12
|
from typing import TYPE_CHECKING
|
|
12
13
|
|
|
13
14
|
if TYPE_CHECKING:
|
|
@@ -82,6 +83,7 @@ DEFAULT_CURRENCY_CODE: str = "USD"
|
|
|
82
83
|
CACHE_APP_NAME: str = "lib-shopify-graphql"
|
|
83
84
|
|
|
84
85
|
|
|
86
|
+
@lru_cache(maxsize=1)
|
|
85
87
|
def get_default_cache_dir() -> Path:
|
|
86
88
|
"""Get the default cache directory for the current platform.
|
|
87
89
|
|