entropy-data 0.3.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.
Files changed (57) hide show
  1. entropy_data-0.3.0/.editorconfig +15 -0
  2. entropy_data-0.3.0/.github/dependabot.yml +6 -0
  3. entropy_data-0.3.0/.github/pull_request_template.md +4 -0
  4. entropy_data-0.3.0/.github/workflows/ci.yaml +90 -0
  5. entropy_data-0.3.0/.github/workflows/release.yaml +189 -0
  6. entropy_data-0.3.0/.gitignore +344 -0
  7. entropy_data-0.3.0/.pre-commit-config.yaml +7 -0
  8. entropy_data-0.3.0/CHANGELOG.md +35 -0
  9. entropy_data-0.3.0/CLAUDE.md +62 -0
  10. entropy_data-0.3.0/Dockerfile +15 -0
  11. entropy_data-0.3.0/LICENSE +21 -0
  12. entropy_data-0.3.0/PKG-INFO +23 -0
  13. entropy_data-0.3.0/README.md +159 -0
  14. entropy_data-0.3.0/pyproject.toml +48 -0
  15. entropy_data-0.3.0/release +18 -0
  16. entropy_data-0.3.0/src/entropy_data/__init__.py +5 -0
  17. entropy_data-0.3.0/src/entropy_data/__main__.py +3 -0
  18. entropy_data-0.3.0/src/entropy_data/cli.py +133 -0
  19. entropy_data-0.3.0/src/entropy_data/client.py +163 -0
  20. entropy_data-0.3.0/src/entropy_data/commands/__init__.py +0 -0
  21. entropy_data-0.3.0/src/entropy_data/commands/access.py +128 -0
  22. entropy_data-0.3.0/src/entropy_data/commands/api_keys.py +65 -0
  23. entropy_data-0.3.0/src/entropy_data/commands/assets.py +80 -0
  24. entropy_data-0.3.0/src/entropy_data/commands/certifications.py +80 -0
  25. entropy_data-0.3.0/src/entropy_data/commands/connection.py +90 -0
  26. entropy_data-0.3.0/src/entropy_data/commands/costs.py +61 -0
  27. entropy_data-0.3.0/src/entropy_data/commands/datacontracts.py +115 -0
  28. entropy_data-0.3.0/src/entropy_data/commands/dataproducts.py +93 -0
  29. entropy_data-0.3.0/src/entropy_data/commands/definitions.py +80 -0
  30. entropy_data-0.3.0/src/entropy_data/commands/events.py +32 -0
  31. entropy_data-0.3.0/src/entropy_data/commands/example_data.py +83 -0
  32. entropy_data-0.3.0/src/entropy_data/commands/import_export.py +134 -0
  33. entropy_data-0.3.0/src/entropy_data/commands/lineage.py +107 -0
  34. entropy_data-0.3.0/src/entropy_data/commands/search.py +55 -0
  35. entropy_data-0.3.0/src/entropy_data/commands/settings.py +68 -0
  36. entropy_data-0.3.0/src/entropy_data/commands/sourcesystems.py +80 -0
  37. entropy_data-0.3.0/src/entropy_data/commands/tags.py +84 -0
  38. entropy_data-0.3.0/src/entropy_data/commands/teams.py +80 -0
  39. entropy_data-0.3.0/src/entropy_data/commands/test_results.py +85 -0
  40. entropy_data-0.3.0/src/entropy_data/commands/usage.py +99 -0
  41. entropy_data-0.3.0/src/entropy_data/config.py +141 -0
  42. entropy_data-0.3.0/src/entropy_data/output.py +119 -0
  43. entropy_data-0.3.0/src/entropy_data/util.py +22 -0
  44. entropy_data-0.3.0/tests/__init__.py +0 -0
  45. entropy_data-0.3.0/tests/commands/__init__.py +0 -0
  46. entropy_data-0.3.0/tests/commands/test_api_keys.py +101 -0
  47. entropy_data-0.3.0/tests/commands/test_assets.py +97 -0
  48. entropy_data-0.3.0/tests/commands/test_connection.py +71 -0
  49. entropy_data-0.3.0/tests/commands/test_costs.py +68 -0
  50. entropy_data-0.3.0/tests/commands/test_lineage.py +97 -0
  51. entropy_data-0.3.0/tests/commands/test_settings.py +85 -0
  52. entropy_data-0.3.0/tests/commands/test_tags.py +93 -0
  53. entropy_data-0.3.0/tests/commands/test_teams.py +102 -0
  54. entropy_data-0.3.0/tests/commands/test_usage.py +74 -0
  55. entropy_data-0.3.0/tests/conftest.py +10 -0
  56. entropy_data-0.3.0/tests/test_client.py +161 -0
  57. entropy_data-0.3.0/tests/test_config.py +169 -0
@@ -0,0 +1,15 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ indent_size = 2
7
+ indent_style = space
8
+ insert_final_newline = false
9
+ max_line_length = 100
10
+ tab_width = 2
11
+
12
+ [{*.py,*.pyw}]
13
+ indent_size = 4
14
+ max_line_length = 120
15
+ tab_width = 4
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
@@ -0,0 +1,4 @@
1
+ - [ ] Tests pass
2
+ - [ ] ruff format
3
+ - [ ] README.md updated (if relevant)
4
+ - [ ] CHANGELOG.md entry added
@@ -0,0 +1,90 @@
1
+ on:
2
+ push:
3
+ branches: [ "main" ]
4
+ pull_request:
5
+ branches: [ "main" ]
6
+ workflow_call:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ name: CI
12
+ jobs:
13
+ test:
14
+ runs-on: ${{ matrix.os }}
15
+ strategy:
16
+ matrix:
17
+ os:
18
+ - 'ubuntu-latest'
19
+ python-version:
20
+ - '3.12'
21
+ - '3.13'
22
+ fail-fast: false
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ - name: Install uv
26
+ uses: astral-sh/setup-uv@v5
27
+ with:
28
+ python-version: ${{ matrix.python-version }}
29
+ - name: Install the project
30
+ run: uv sync --all-extras --dev
31
+ - name: Check formatting
32
+ run: uv run ruff check
33
+ - name: Run tests
34
+ run: uv run pytest
35
+
36
+ integration-tests:
37
+ runs-on: ubuntu-latest
38
+ strategy:
39
+ matrix:
40
+ python-version:
41
+ - '3.12'
42
+ fail-fast: false
43
+ steps:
44
+ - uses: actions/checkout@v4
45
+ - name: Install uv
46
+ uses: astral-sh/setup-uv@v5
47
+ with:
48
+ python-version: ${{ matrix.python-version }}
49
+ - name: Install the project
50
+ run: uv sync
51
+ - name: Test entropy-data --help
52
+ run: uv run entropy-data --help
53
+ - name: Test entropy-data --version
54
+ run: uv run entropy-data --version
55
+
56
+ docker:
57
+ runs-on: ubuntu-latest
58
+ needs:
59
+ - test
60
+ if: github.event_name != 'pull_request' && github.repository == 'entropy-data/entropy-data-cli'
61
+ steps:
62
+ - name: Checkout
63
+ uses: actions/checkout@v4
64
+ - name: Docker meta
65
+ id: meta
66
+ uses: docker/metadata-action@v5
67
+ with:
68
+ images: |
69
+ entropydata/entropy-data-cli
70
+ tags: |
71
+ type=ref,event=branch
72
+ type=ref,event=pr
73
+ type=semver,pattern={{version}}
74
+ type=semver,pattern={{major}}.{{minor}}
75
+ - name: Set up Docker Buildx
76
+ uses: docker/setup-buildx-action@v3
77
+ - name: Login to Docker Hub
78
+ uses: docker/login-action@v3
79
+ with:
80
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
81
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
82
+ - name: Build and push
83
+ uses: docker/build-push-action@v5
84
+ with:
85
+ context: .
86
+ platforms: linux/amd64,linux/arm64
87
+ push: ${{ github.ref == 'refs/heads/main' }}
88
+ tags: entropydata/entropy-data-cli:snapshot-latest
89
+ labels: ${{ steps.meta.outputs.labels }}
90
+ sbom: true
@@ -0,0 +1,189 @@
1
+ on:
2
+ push:
3
+ tags: ["v[0-9]+", "v[0-9]+.[0-9]+", "v[0-9]+.[0-9]+.[0-9]+", "v[0-9]+.[0-9]+.[0-9]+-*"]
4
+
5
+ permissions:
6
+ contents: read
7
+
8
+ name: Release
9
+ jobs:
10
+ test:
11
+ uses: ./.github/workflows/ci.yaml
12
+ secrets: inherit
13
+
14
+ check_version:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - name: check tag version == pyproject.version
19
+ id: version
20
+ run: |
21
+ pip install toml-cli
22
+ PROJECT_VERSION=$(toml get --toml-path pyproject.toml project.version)
23
+ TAG=$(git describe HEAD --tags --abbrev=0)
24
+ echo TAG: $TAG
25
+ echo "PROJECT_VERSION: $PROJECT_VERSION"
26
+ echo "project_version=$PROJECT_VERSION" >> $GITHUB_OUTPUT
27
+ if [[ "$TAG" != "v$PROJECT_VERSION" ]]; then exit 1; fi
28
+ - name: Check tag version > pypi version
29
+ run: |
30
+ LOCAL_VERSION=${{ steps.version.outputs.project_version }}
31
+ RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" https://pypi.org/pypi/entropy-data/json)
32
+ if [ "$RESPONSE" = "404" ]; then
33
+ echo "Package not yet on PyPI — first release, skipping version comparison"
34
+ exit 0
35
+ fi
36
+ PUBLIC_VERSION=$(curl -s https://pypi.org/pypi/entropy-data/json | python3 -c "import sys,json; print(json.load(sys.stdin)['info']['version'])")
37
+ echo "Local version: $LOCAL_VERSION"
38
+ echo "Public version: $PUBLIC_VERSION"
39
+ pip install -q packaging
40
+ python3 -c "
41
+ from packaging.version import Version
42
+ local = Version('$LOCAL_VERSION')
43
+ public = Version('$PUBLIC_VERSION')
44
+ if local <= public:
45
+ raise SystemExit(f'Local version {local} must be higher than public version {public}')
46
+ print(f'{local} > {public}')
47
+ "
48
+
49
+ build:
50
+ runs-on: ubuntu-latest
51
+ needs:
52
+ - test
53
+ - check_version
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+ with:
57
+ fetch-depth: 0
58
+ - name: Install uv
59
+ uses: astral-sh/setup-uv@v5
60
+ with:
61
+ python-version: "3.12"
62
+ - name: Build package
63
+ run: uv build
64
+ - name: Store the distribution packages
65
+ uses: actions/upload-artifact@v4
66
+ with:
67
+ name: python-package-distributions
68
+ path: dist/
69
+
70
+ publish-to-pypi:
71
+ name: >-
72
+ Publish Python distribution to PyPI
73
+ needs:
74
+ - build
75
+ runs-on: ubuntu-latest
76
+ environment:
77
+ name: release-pypi
78
+ url: https://pypi.org/p/entropy-data
79
+ permissions:
80
+ id-token: write
81
+ steps:
82
+ - name: Download all the dists
83
+ uses: actions/download-artifact@v4
84
+ with:
85
+ name: python-package-distributions
86
+ path: dist/
87
+ - name: Publish distribution to PyPI
88
+ uses: pypa/gh-action-pypi-publish@release/v1
89
+
90
+ github-release:
91
+ name: >-
92
+ Create a GitHub Release
93
+ needs:
94
+ - publish-to-pypi
95
+ runs-on: ubuntu-latest
96
+ permissions:
97
+ contents: write
98
+ id-token: write
99
+ steps:
100
+ - uses: actions/checkout@v4
101
+ - name: Extract changelog for version
102
+ run: |
103
+ VERSION="${{ github.ref_name }}"
104
+ VERSION="${VERSION#v}"
105
+ sed -n "/^## \[$VERSION\]/,/^## \[/p" CHANGELOG.md | head -n -1 > release_notes.md
106
+ cat release_notes.md
107
+ - name: Download all the dists
108
+ uses: actions/download-artifact@v4
109
+ with:
110
+ name: python-package-distributions
111
+ path: dist/
112
+ - name: Sign the dists with Sigstore
113
+ uses: sigstore/gh-action-sigstore-python@v3.0.0
114
+ with:
115
+ inputs: >-
116
+ ./dist/*.tar.gz
117
+ ./dist/*.whl
118
+ - name: Create GitHub Release
119
+ env:
120
+ GITHUB_TOKEN: ${{ github.token }}
121
+ run: >-
122
+ gh release create
123
+ '${{ github.ref_name }}'
124
+ --repo '${{ github.repository }}'
125
+ --notes-file release_notes.md
126
+ - name: Upload artifact signatures to GitHub Release
127
+ env:
128
+ GITHUB_TOKEN: ${{ github.token }}
129
+ run: >-
130
+ gh release upload
131
+ '${{ github.ref_name }}' dist/**
132
+ --repo '${{ github.repository }}'
133
+
134
+ docker:
135
+ runs-on: ubuntu-latest
136
+ needs:
137
+ - test
138
+ - check_version
139
+ steps:
140
+ - name: Checkout
141
+ uses: actions/checkout@v4
142
+ - name: Docker meta
143
+ id: meta
144
+ uses: docker/metadata-action@v5
145
+ with:
146
+ images: |
147
+ entropydata/entropy-data-cli
148
+ tags: |
149
+ type=ref,event=branch
150
+ type=ref,event=pr
151
+ type=semver,pattern={{version}}
152
+ type=semver,pattern={{major}}.{{minor}}
153
+ - name: Set up Docker Buildx
154
+ uses: docker/setup-buildx-action@v3
155
+ - name: Login to Docker Hub
156
+ uses: docker/login-action@v3
157
+ with:
158
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
159
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
160
+ - name: Build and push
161
+ uses: docker/build-push-action@v5
162
+ with:
163
+ context: .
164
+ platforms: linux/amd64,linux/arm64
165
+ push: ${{ github.event_name != 'pull_request' }}
166
+ tags: ${{ steps.meta.outputs.tags }}
167
+ labels: ${{ steps.meta.outputs.labels }}
168
+ sbom: true
169
+
170
+ publish-to-testpypi:
171
+ name: Publish Python distribution to TestPyPI
172
+ needs:
173
+ - build
174
+ runs-on: ubuntu-latest
175
+ environment:
176
+ name: release-testpypi
177
+ url: https://test.pypi.org/p/entropy-data
178
+ permissions:
179
+ id-token: write
180
+ steps:
181
+ - name: Download all the dists
182
+ uses: actions/download-artifact@v4
183
+ with:
184
+ name: python-package-distributions
185
+ path: dist/
186
+ - name: Publish distribution to TestPyPI
187
+ uses: pypa/gh-action-pypi-publish@release/v1
188
+ with:
189
+ repository-url: https://test.pypi.org/legacy/
@@ -0,0 +1,344 @@
1
+ .idea
2
+ .DS_Store
3
+ /datacontract.yaml
4
+ datacontract.sh
5
+ /cli
6
+ tmp
7
+ /venv
8
+ /contracts/
9
+ /quality/
10
+ db.duckdb
11
+ .soda/
12
+ .vscode/
13
+ .duckdb/
14
+ uv.lock
15
+
16
+ ### JetBrains template
17
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
18
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
19
+
20
+ # User-specific stuff
21
+ .idea/**/workspace.xml
22
+ .idea/**/tasks.xml
23
+ .idea/**/usage.statistics.xml
24
+ .idea/**/dictionaries
25
+ .idea/**/shelf
26
+
27
+ # AWS User-specific
28
+ .idea/**/aws.xml
29
+
30
+ # Generated files
31
+ .idea/**/contentModel.xml
32
+
33
+ # Sensitive or high-churn files
34
+ .idea/**/dataSources/
35
+ .idea/**/dataSources.ids
36
+ .idea/**/dataSources.local.xml
37
+ .idea/**/sqlDataSources.xml
38
+ .idea/**/dynamic.xml
39
+ .idea/**/uiDesigner.xml
40
+ .idea/**/dbnavigator.xml
41
+
42
+ # Gradle
43
+ .idea/**/gradle.xml
44
+ .idea/**/libraries
45
+
46
+ # Gradle and Maven with auto-import
47
+ # When using Gradle or Maven with auto-import, you should exclude module files,
48
+ # since they will be recreated, and may cause churn. Uncomment if using
49
+ # auto-import.
50
+ # .idea/artifacts
51
+ # .idea/compiler.xml
52
+ # .idea/jarRepositories.xml
53
+ # .idea/modules.xml
54
+ # .idea/*.iml
55
+ # .idea/modules
56
+ # *.iml
57
+ # *.ipr
58
+
59
+ # CMake
60
+ cmake-build-*/
61
+
62
+ # Mongo Explorer plugin
63
+ .idea/**/mongoSettings.xml
64
+
65
+ # File-based project format
66
+ *.iws
67
+
68
+ # IntelliJ
69
+ out/
70
+
71
+ # mpeltonen/sbt-idea plugin
72
+ .idea_modules/
73
+
74
+ # JIRA plugin
75
+ atlassian-ide-plugin.xml
76
+
77
+ # Cursive Clojure plugin
78
+ .idea/replstate.xml
79
+
80
+ # SonarLint plugin
81
+ .idea/sonarlint/
82
+
83
+ # Crashlytics plugin (for Android Studio and IntelliJ)
84
+ com_crashlytics_export_strings.xml
85
+ crashlytics.properties
86
+ crashlytics-build.properties
87
+ fabric.properties
88
+
89
+ # Editor-based Rest Client
90
+ .idea/httpRequests
91
+
92
+ # Android studio 3.1+ serialized cache file
93
+ .idea/caches/build_file_checksums.ser
94
+
95
+ ### Python template
96
+ # Byte-compiled / optimized / DLL files
97
+ __pycache__/
98
+ *.py[cod]
99
+ *$py.class
100
+
101
+ # C extensions
102
+ *.so
103
+
104
+ # Distribution / packaging
105
+ .Python
106
+ build/
107
+ develop-eggs/
108
+ dist/
109
+ downloads/
110
+ eggs/
111
+ .eggs/
112
+ lib/
113
+ lib64/
114
+ parts/
115
+ sdist/
116
+ var/
117
+ wheels/
118
+ share/python-wheels/
119
+ *.egg-info/
120
+ .installed.cfg
121
+ *.egg
122
+ MANIFEST
123
+
124
+ # PyInstaller
125
+ # Usually these files are written by a python script from a template
126
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
127
+ *.manifest
128
+ *.spec
129
+
130
+ # Installer logs
131
+ pip-log.txt
132
+ pip-delete-this-directory.txt
133
+
134
+ # Unit test / coverage reports
135
+ htmlcov/
136
+ .tox/
137
+ .nox/
138
+ .coverage
139
+ .coverage.*
140
+ .cache
141
+ nosetests.xml
142
+ coverage.xml
143
+ *.cover
144
+ *.py,cover
145
+ .hypothesis/
146
+ .pytest_cache/
147
+ .ruff_cache/
148
+ cover/
149
+
150
+ # Translations
151
+ *.mo
152
+ *.pot
153
+
154
+ # Django stuff:
155
+ *.log
156
+ local_settings.py
157
+ db.sqlite3
158
+ db.sqlite3-journal
159
+
160
+ # Flask stuff:
161
+ instance/
162
+ .webassets-cache
163
+
164
+ # Scrapy stuff:
165
+ .scrapy
166
+
167
+ # Sphinx documentation
168
+ docs/_build/
169
+
170
+ # PyBuilder
171
+ .pybuilder/
172
+ target/
173
+
174
+ # Jupyter Notebook
175
+ .ipynb_checkpoints
176
+
177
+ # IPython
178
+ profile_default/
179
+ ipython_config.py
180
+
181
+ # pyenv
182
+ # For a library or package, you might want to ignore these files since the code is
183
+ # intended to run in multiple environments; otherwise, check them in:
184
+ .python-version
185
+
186
+ # pipenv
187
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
188
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
189
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
190
+ # install all needed dependencies.
191
+ #Pipfile.lock
192
+
193
+ # poetry
194
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
195
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
196
+ # commonly ignored for libraries.
197
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
198
+ #poetry.lock
199
+
200
+ # pdm
201
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
202
+ #pdm.lock
203
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
204
+ # in version control.
205
+ # https://pdm.fming.dev/#use-with-ide
206
+ .pdm.toml
207
+
208
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
209
+ __pypackages__/
210
+
211
+ # Celery stuff
212
+ celerybeat-schedule
213
+ celerybeat.pid
214
+
215
+ # SageMath parsed files
216
+ *.sage.py
217
+
218
+ # Environments
219
+ .env
220
+ .venv
221
+ env/
222
+ venv/
223
+ ENV/
224
+ env.bak/
225
+ venv.bak/
226
+
227
+ # Spyder project settings
228
+ .spyderproject
229
+ .spyproject
230
+
231
+ # Rope project settings
232
+ .ropeproject
233
+
234
+ # mkdocs documentation
235
+ /site
236
+
237
+ # mypy
238
+ .mypy_cache/
239
+ .dmypy.json
240
+ dmypy.json
241
+
242
+ # Pyre type checker
243
+ .pyre/
244
+
245
+ # pytype static type analyzer
246
+ .pytype/
247
+
248
+ # Cython debug symbols
249
+ cython_debug/
250
+
251
+ .idea/
252
+ ### JetBrains template
253
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
254
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
255
+
256
+ # User-specific stuff
257
+ .idea/**/workspace.xml
258
+ .idea/**/tasks.xml
259
+ .idea/**/usage.statistics.xml
260
+ .idea/**/dictionaries
261
+ .idea/**/shelf
262
+
263
+ # AWS User-specific
264
+ .idea/**/aws.xml
265
+
266
+ # Generated files
267
+ .idea/**/contentModel.xml
268
+
269
+ # Sensitive or high-churn files
270
+ .idea/**/dataSources/
271
+ .idea/**/dataSources.ids
272
+ .idea/**/dataSources.local.xml
273
+ .idea/**/sqlDataSources.xml
274
+ .idea/**/dynamic.xml
275
+ .idea/**/uiDesigner.xml
276
+ .idea/**/dbnavigator.xml
277
+
278
+ # Gradle
279
+ .idea/**/gradle.xml
280
+ .idea/**/libraries
281
+
282
+ # Gradle and Maven with auto-import
283
+ # When using Gradle or Maven with auto-import, you should exclude module files,
284
+ # since they will be recreated, and may cause churn. Uncomment if using
285
+ # auto-import.
286
+ # .idea/artifacts
287
+ # .idea/compiler.xml
288
+ # .idea/jarRepositories.xml
289
+ # .idea/modules.xml
290
+ # .idea/*.iml
291
+ # .idea/modules
292
+ *.iml
293
+ # *.ipr
294
+
295
+ # CMake
296
+ cmake-build-*/
297
+
298
+ # Mongo Explorer plugin
299
+ .idea/**/mongoSettings.xml
300
+
301
+ # File-based project format
302
+ *.iws
303
+
304
+ # IntelliJ
305
+ out/
306
+
307
+ # mpeltonen/sbt-idea plugin
308
+ .idea_modules/
309
+
310
+ # JIRA plugin
311
+ atlassian-ide-plugin.xml
312
+
313
+ # Cursive Clojure plugin
314
+ .idea/replstate.xml
315
+
316
+ # SonarLint plugin
317
+ .idea/sonarlint/
318
+
319
+ # Crashlytics plugin (for Android Studio and IntelliJ)
320
+ com_crashlytics_export_strings.xml
321
+ crashlytics.properties
322
+ crashlytics-build.properties
323
+ fabric.properties
324
+
325
+ # Editor-based Rest Client
326
+ .idea/httpRequests
327
+
328
+ # Android studio 3.1+ serialized cache file
329
+ .idea/caches/build_file_checksums.ser
330
+
331
+ # Generated test files
332
+ **/.tmp
333
+ /.claude/settings.local.json
334
+
335
+ # Auto Claude data directory
336
+ .auto-claude/
337
+
338
+ # Auto Claude generated files
339
+ .auto-claude-security.json
340
+ .auto-claude-status
341
+ .claude_settings.json
342
+ .worktrees/
343
+ .security-key
344
+ logs/security/
@@ -0,0 +1,7 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.14.3
4
+ hooks:
5
+ - id: ruff
6
+ args: [ --fix ]
7
+ - id: ruff-format
@@ -0,0 +1,35 @@
1
+ # Changelog
2
+
3
+ ## [0.3.0]
4
+
5
+ - Rename PyPI package from `entropy-data-cli` to `entropy-data`. Install with `pip install entropy-data` (or `uv tool install entropy-data`). The CLI command remains `entropy-data`.
6
+
7
+ ## [0.2.3]
8
+
9
+ - Add `.env` file support for project-specific configuration via `python-dotenv`
10
+ - Document release process in README
11
+
12
+ ## [0.2.2]
13
+
14
+ - Fix version reporting to read from package metadata instead of hardcoded value
15
+
16
+ ## [0.2.1]
17
+
18
+ - Add Docker Hub publish to CI and release workflows
19
+
20
+ ## [0.2.0]
21
+
22
+ - Fix negative page numbers leaking SQL queries from the server
23
+ - Fix mismatched resource ID in body vs CLI argument silently using body ID
24
+ - Fix HTML error responses (e.g., from Tomcat) displayed as raw markup
25
+ - Add max resource ID length validation (256 characters)
26
+ - Add 30s HTTP request timeout to prevent hanging on unreachable hosts
27
+
28
+ ## [0.1.0]
29
+
30
+ - Initial release
31
+ - CRUD commands for data products, data contracts, access, teams, source systems, definitions, certifications, example data, test results
32
+ - Access workflow commands: approve, reject, cancel
33
+ - Event polling and search
34
+ - Connection management with `~/.entropy-data/config.toml`
35
+ - Table and JSON output formats