esgpull 0.6.5__tar.gz → 0.7.1__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.
- esgpull-0.7.1/.github/workflows/ci.yml +47 -0
- esgpull-0.7.1/.github/workflows/doc.yml +34 -0
- esgpull-0.7.1/.github/workflows/pypi-publish.yml +32 -0
- esgpull-0.7.1/.gitignore +162 -0
- esgpull-0.7.1/.pre-commit-config.yaml +57 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/PKG-INFO +18 -17
- {esgpull-0.6.5 → esgpull-0.7.1}/README.md +2 -2
- esgpull-0.7.1/alembic.ini +45 -0
- esgpull-0.7.1/docs/docs/configuration.md +126 -0
- esgpull-0.7.1/docs/docs/download.md +133 -0
- esgpull-0.7.1/docs/docs/glossary.md +5 -0
- esgpull-0.7.1/docs/docs/images/download_1.svg +100 -0
- esgpull-0.7.1/docs/docs/images/download_2.svg +137 -0
- esgpull-0.7.1/docs/docs/images/download_3.svg +108 -0
- esgpull-0.7.1/docs/docs/images/download_4.svg +63 -0
- esgpull-0.7.1/docs/docs/images/download_5.svg +108 -0
- esgpull-0.7.1/docs/docs/images/download_6.svg +104 -0
- esgpull-0.7.1/docs/docs/images/intro_1.svg +152 -0
- esgpull-0.7.1/docs/docs/images/intro_2.svg +152 -0
- esgpull-0.7.1/docs/docs/images/intro_3.svg +192 -0
- esgpull-0.7.1/docs/docs/images/intro_4.svg +321 -0
- esgpull-0.7.1/docs/docs/images/intro_5.svg +152 -0
- esgpull-0.7.1/docs/docs/images/intro_6.svg +152 -0
- esgpull-0.7.1/docs/docs/images/quickstart_1.svg +147 -0
- esgpull-0.7.1/docs/docs/images/search_1.svg +152 -0
- esgpull-0.7.1/docs/docs/images/search_2.svg +63 -0
- esgpull-0.7.1/docs/docs/images/search_3.svg +63 -0
- esgpull-0.7.1/docs/docs/images/search_4.svg +63 -0
- esgpull-0.7.1/docs/docs/images/search_5.svg +63 -0
- esgpull-0.7.1/docs/docs/images/search_6.svg +188 -0
- esgpull-0.7.1/docs/docs/images/search_7.svg +84 -0
- esgpull-0.7.1/docs/docs/images/search_ignore.svg +152 -0
- esgpull-0.7.1/docs/docs/index.md +80 -0
- esgpull-0.7.1/docs/docs/installation.md +96 -0
- esgpull-0.7.1/docs/docs/queries.md +81 -0
- esgpull-0.7.1/docs/docs/quickstart.md +91 -0
- esgpull-0.7.1/docs/docs/search.md +309 -0
- esgpull-0.7.1/docs/docs/stylesheets/extra.css +20 -0
- esgpull-0.7.1/docs/includes/abbreviations.md +1 -0
- esgpull-0.7.1/docs/mkdocs.yml +72 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/__init__.py +2 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/add.py +10 -3
- esgpull-0.7.1/esgpull/cli/datasets.py +78 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/decorators.py +11 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/search.py +14 -7
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/update.py +19 -16
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/utils.py +5 -1
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/config.py +25 -8
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/constants.py +1 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/database.py +24 -5
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/esgpull.py +46 -2
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/exceptions.py +5 -2
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/install_config.py +10 -2
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/env.py +3 -0
- esgpull-0.7.1/esgpull/migrations/versions/0.7.0_update_tables.py +38 -0
- esgpull-0.7.1/esgpull/migrations/versions/0.7.1_update_tables.py +28 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/query.py +1 -1
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/selection.py +6 -1
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/sql.py +17 -3
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/tui.py +3 -4
- esgpull-0.7.1/esgpull/version.py +3 -0
- esgpull-0.7.1/pdm.lock +1978 -0
- esgpull-0.7.1/pyproject.toml +106 -0
- esgpull-0.7.1/recipe/meta.yaml +60 -0
- esgpull-0.7.1/recipe/recipe.yaml +58 -0
- esgpull-0.7.1/requirements-dev.lock +259 -0
- esgpull-0.7.1/requirements.lock +102 -0
- esgpull-0.7.1/tests/cli/__init__.py +0 -0
- esgpull-0.7.1/tests/cli/test_update.py +36 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_config.py +16 -0
- esgpull-0.7.1/tests/test_esgpull.py +42 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_selection.py +4 -2
- esgpull-0.6.5/esgpull/version.py +0 -1
- esgpull-0.6.5/pyproject.toml +0 -158
- {esgpull-0.6.5 → esgpull-0.7.1}/LICENSE +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/__init__.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/auth.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/autoremove.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/config.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/convert.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/download.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/facet.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/get.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/install.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/login.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/remove.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/retry.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/self.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/show.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/status.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/cli/track.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/context.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/download.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/fs.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/graph.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/README +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/script.py.mako +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.0_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.1_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.2_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.3_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.4_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.5_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.6_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.7_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.8_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.4.0_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.0_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.1_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.2_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.3_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.4_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.5_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.0_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.1_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.2_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.3_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.4_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.5_update_tables.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/__init__.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/base.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/dataset.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/facet.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/file.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/options.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/synda_file.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/tag.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/models/utils.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/processor.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/py.typed +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/result.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/esgpull/utils.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/__init__.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/conftest.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_auth.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_context.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_db.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_fs.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_graph.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_processor.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_query.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_synda.py +0 -0
- {esgpull-0.6.5 → esgpull-0.7.1}/tests/test_utils.py +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
paths:
|
|
8
|
+
- "*.py"
|
|
9
|
+
- esgpull/**
|
|
10
|
+
- tests/**
|
|
11
|
+
- .github/workflows/ci.yml
|
|
12
|
+
pull_request:
|
|
13
|
+
branches:
|
|
14
|
+
- main
|
|
15
|
+
paths:
|
|
16
|
+
- "*.py"
|
|
17
|
+
- esgpull/**
|
|
18
|
+
- tests/**
|
|
19
|
+
- .github/workflows/ci.yml
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
tests:
|
|
23
|
+
strategy:
|
|
24
|
+
matrix:
|
|
25
|
+
python-version:
|
|
26
|
+
- "3.10"
|
|
27
|
+
- "3.11"
|
|
28
|
+
- "3.12"
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- name: Checkout the repository
|
|
32
|
+
uses: actions/checkout@v4
|
|
33
|
+
|
|
34
|
+
- name: Install the latest version of rye
|
|
35
|
+
uses: eifinger/setup-rye@v4
|
|
36
|
+
with:
|
|
37
|
+
enable-cache: true
|
|
38
|
+
cache-prefix: ${{ matrix.python-version }}
|
|
39
|
+
|
|
40
|
+
- name: Pin python-version ${{ matrix.python-version }}
|
|
41
|
+
run: rye pin ${{ matrix.python-version }}
|
|
42
|
+
|
|
43
|
+
- name: Sync dependencies
|
|
44
|
+
run: rye sync
|
|
45
|
+
|
|
46
|
+
- name: Run tests
|
|
47
|
+
run: rye test
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
paths:
|
|
8
|
+
- "*.md"
|
|
9
|
+
- docs/**
|
|
10
|
+
- .github/workflows/doc.yml
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
documentation:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Install the latest version of rye
|
|
19
|
+
uses: eifinger/setup-rye@v4
|
|
20
|
+
with:
|
|
21
|
+
enable-cache: true
|
|
22
|
+
|
|
23
|
+
- name: Sync dependencies
|
|
24
|
+
run: rye sync
|
|
25
|
+
|
|
26
|
+
- name: build
|
|
27
|
+
run: rye run mkdocs build -f docs/mkdocs.yml
|
|
28
|
+
|
|
29
|
+
- name: deploy
|
|
30
|
+
uses: peaceiris/actions-gh-pages@v3
|
|
31
|
+
if: ${{ github.ref == 'refs/heads/main' }}
|
|
32
|
+
with:
|
|
33
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
34
|
+
publish_dir: ./docs/site
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: pypi-publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types:
|
|
6
|
+
- published
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
pypi-publish:
|
|
10
|
+
name: upload release to PyPI
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
# This permission is needed for private repositories.
|
|
14
|
+
contents: read
|
|
15
|
+
# IMPORTANT: this permission is mandatory for trusted publishing
|
|
16
|
+
id-token: write
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v3
|
|
19
|
+
|
|
20
|
+
- name: Install the latest version of rye
|
|
21
|
+
uses: eifinger/setup-rye@v4
|
|
22
|
+
with:
|
|
23
|
+
enable-cache: true
|
|
24
|
+
|
|
25
|
+
- name: Sync dependencies
|
|
26
|
+
run: rye sync
|
|
27
|
+
|
|
28
|
+
- name: Build package
|
|
29
|
+
run: rye build
|
|
30
|
+
|
|
31
|
+
- name: Publish package distributions to PyPI
|
|
32
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
esgpull-0.7.1/.gitignore
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py,cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
cover/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
.pybuilder/
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
.notebooks
|
|
81
|
+
|
|
82
|
+
# IPython
|
|
83
|
+
profile_default/
|
|
84
|
+
ipython_config.py
|
|
85
|
+
|
|
86
|
+
# pyenv
|
|
87
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
88
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
89
|
+
# .python-version
|
|
90
|
+
|
|
91
|
+
# pipenv
|
|
92
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
93
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
94
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
95
|
+
# install all needed dependencies.
|
|
96
|
+
#Pipfile.lock
|
|
97
|
+
|
|
98
|
+
# poetry
|
|
99
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
100
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
101
|
+
# commonly ignored for libraries.
|
|
102
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
103
|
+
#poetry.lock
|
|
104
|
+
|
|
105
|
+
# pdm
|
|
106
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
107
|
+
#pdm.lock
|
|
108
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
109
|
+
# in version control.
|
|
110
|
+
# https://pdm.fming.dev/#use-with-ide
|
|
111
|
+
.pdm-python
|
|
112
|
+
|
|
113
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
114
|
+
__pypackages__/
|
|
115
|
+
|
|
116
|
+
# Celery stuff
|
|
117
|
+
celerybeat-schedule
|
|
118
|
+
celerybeat.pid
|
|
119
|
+
|
|
120
|
+
# SageMath parsed files
|
|
121
|
+
*.sage.py
|
|
122
|
+
|
|
123
|
+
# Environments
|
|
124
|
+
.env
|
|
125
|
+
.venv
|
|
126
|
+
env/
|
|
127
|
+
venv/
|
|
128
|
+
ENV/
|
|
129
|
+
env.bak/
|
|
130
|
+
venv.bak/
|
|
131
|
+
|
|
132
|
+
# Spyder project settings
|
|
133
|
+
.spyderproject
|
|
134
|
+
.spyproject
|
|
135
|
+
|
|
136
|
+
# Rope project settings
|
|
137
|
+
.ropeproject
|
|
138
|
+
|
|
139
|
+
# mkdocs documentation
|
|
140
|
+
/site
|
|
141
|
+
/docs/site
|
|
142
|
+
|
|
143
|
+
# mypy
|
|
144
|
+
.mypy_cache/
|
|
145
|
+
.dmypy.json
|
|
146
|
+
dmypy.json
|
|
147
|
+
|
|
148
|
+
# Pyre type checker
|
|
149
|
+
.pyre/
|
|
150
|
+
|
|
151
|
+
# pytype static type analyzer
|
|
152
|
+
.pytype/
|
|
153
|
+
|
|
154
|
+
# Cython debug symbols
|
|
155
|
+
cython_debug/
|
|
156
|
+
|
|
157
|
+
# PyCharm
|
|
158
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
159
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
160
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
161
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
162
|
+
.idea/
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
default_language_version:
|
|
2
|
+
python: python3
|
|
3
|
+
|
|
4
|
+
repos:
|
|
5
|
+
- repo: https://github.com/asottile/pyupgrade
|
|
6
|
+
rev: v3.16.0
|
|
7
|
+
hooks:
|
|
8
|
+
- id: pyupgrade
|
|
9
|
+
args: [ '--py310-plus' ]
|
|
10
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
11
|
+
rev: v4.6.0
|
|
12
|
+
hooks:
|
|
13
|
+
- id: trailing-whitespace
|
|
14
|
+
exclude: '(setup.cfg|.svg)'
|
|
15
|
+
- id: end-of-file-fixer
|
|
16
|
+
- id: check-toml
|
|
17
|
+
- id: debug-statements
|
|
18
|
+
- repo: https://github.com/pappasam/toml-sort
|
|
19
|
+
rev: v0.23.1
|
|
20
|
+
hooks:
|
|
21
|
+
- id: toml-sort-fix
|
|
22
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
23
|
+
rev: v0.5.2
|
|
24
|
+
hooks:
|
|
25
|
+
- id: ruff
|
|
26
|
+
args: [ --fix ]
|
|
27
|
+
- id: ruff-format
|
|
28
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
29
|
+
rev: v1.10.1
|
|
30
|
+
hooks:
|
|
31
|
+
- id: mypy
|
|
32
|
+
additional_dependencies:
|
|
33
|
+
- attrs==22.1.0
|
|
34
|
+
- sqlalchemy==2.0.0b2
|
|
35
|
+
- types-pyopenssl==22.1.0.1
|
|
36
|
+
- types-aiofiles==22.1.0
|
|
37
|
+
- types-python-dateutil==2.8.19.2
|
|
38
|
+
- types-pymysql==1.0.19.1
|
|
39
|
+
- types-pyyaml==6.0.12
|
|
40
|
+
- types-cryptography==3.3.23.1
|
|
41
|
+
- types-setuptools==65.5.0.1
|
|
42
|
+
- repo: https://github.com/python-jsonschema/check-jsonschema
|
|
43
|
+
rev: 0.29.0
|
|
44
|
+
hooks:
|
|
45
|
+
- id: check-github-workflows
|
|
46
|
+
|
|
47
|
+
ci:
|
|
48
|
+
autofix_commit_msg: |
|
|
49
|
+
[pre-commit.ci] auto fixes from pre-commit.com hooks
|
|
50
|
+
|
|
51
|
+
for more information, see https://pre-commit.ci
|
|
52
|
+
autofix_prs: true
|
|
53
|
+
autoupdate_branch: ''
|
|
54
|
+
autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
|
|
55
|
+
autoupdate_schedule: monthly
|
|
56
|
+
skip: [ ]
|
|
57
|
+
submodules: false
|
|
@@ -1,41 +1,42 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: esgpull
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.1
|
|
4
4
|
Summary: ESGF data discovery, download, replication tool
|
|
5
|
-
|
|
5
|
+
Project-URL: Repository, https://github.com/ESGF/esgf-download
|
|
6
|
+
Project-URL: Documentation, https://esgf.github.io/esgf-download/
|
|
7
|
+
Author-email: Sven Rodriguez <srodriguez@ipsl.fr>
|
|
6
8
|
License: BSD-3-Clause
|
|
9
|
+
License-File: LICENSE
|
|
7
10
|
Classifier: License :: OSI Approved :: BSD License
|
|
8
11
|
Classifier: Programming Language :: Python :: 3
|
|
9
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
10
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
-
Project-URL: Repository, https://github.com/ESGF/esgf-download
|
|
13
|
-
Project-URL: Documentation, https://esgf.github.io/esgf-download/
|
|
14
15
|
Requires-Python: >=3.10
|
|
15
|
-
Requires-Dist: MyProxyClient>=2.1.0
|
|
16
16
|
Requires-Dist: aiofiles>=22.1.0
|
|
17
|
+
Requires-Dist: aiostream>=0.4.5
|
|
17
18
|
Requires-Dist: alembic>=1.8.1
|
|
18
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: attrs>=22.1.0
|
|
20
|
+
Requires-Dist: cattrs>=22.2.0
|
|
19
21
|
Requires-Dist: click-params>=0.4.0
|
|
22
|
+
Requires-Dist: click>=8.1.3
|
|
20
23
|
Requires-Dist: httpx>=0.23.0
|
|
24
|
+
Requires-Dist: myproxyclient>=2.1.0
|
|
21
25
|
Requires-Dist: nest-asyncio>=1.5.6
|
|
22
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: platformdirs>=2.6.2
|
|
27
|
+
Requires-Dist: pyopenssl>=22.1.0
|
|
28
|
+
Requires-Dist: pyparsing>=3.0.9
|
|
23
29
|
Requires-Dist: pyyaml>=6.0
|
|
24
|
-
Requires-Dist: tomlkit>=0.11.5
|
|
25
30
|
Requires-Dist: rich>=12.6.0
|
|
26
|
-
Requires-Dist: sqlalchemy>=2.0.0b2
|
|
27
31
|
Requires-Dist: setuptools>=65.4.1
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist: cattrs>=22.2.0
|
|
31
|
-
Requires-Dist: platformdirs>=2.6.2
|
|
32
|
-
Requires-Dist: pyparsing>=3.0.9
|
|
32
|
+
Requires-Dist: sqlalchemy>=2.0.0b2
|
|
33
|
+
Requires-Dist: tomlkit>=0.11.5
|
|
33
34
|
Description-Content-Type: text/markdown
|
|
34
35
|
|
|
35
|
-
[](https://pdm.fming.dev)
|
|
36
|
-
|
|
37
36
|
# esgpull - ESGF data management utility
|
|
38
37
|
|
|
38
|
+
[](https://rye.astral.sh)
|
|
39
|
+
|
|
39
40
|
`esgpull` is a tool that simplifies usage of the [ESGF Search API](https://esgf.github.io/esg-search/ESGF_Search_RESTful_API.html) for data discovery, and manages procedures related to downloading and storing files from ESGF.
|
|
40
41
|
|
|
41
42
|
```py
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
[](https://pdm.fming.dev)
|
|
2
|
-
|
|
3
1
|
# esgpull - ESGF data management utility
|
|
4
2
|
|
|
3
|
+
[](https://rye.astral.sh)
|
|
4
|
+
|
|
5
5
|
`esgpull` is a tool that simplifies usage of the [ESGF Search API](https://esgf.github.io/esg-search/ESGF_Search_RESTful_API.html) for data discovery, and manages procedures related to downloading and storing files from ESGF.
|
|
6
6
|
|
|
7
7
|
```py
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
[alembic]
|
|
2
|
+
script_location = esgpull/migrations
|
|
3
|
+
prepend_sys_path = .
|
|
4
|
+
version_path_separator = os # Use os.pathsep. Default configuration used for new projects.
|
|
5
|
+
|
|
6
|
+
[post_write_hooks]
|
|
7
|
+
hooks = black
|
|
8
|
+
black.type = console_scripts
|
|
9
|
+
black.entrypoint = black
|
|
10
|
+
black.options = -l 79 REVISION_SCRIPT_FILENAME
|
|
11
|
+
|
|
12
|
+
# Logging configuration
|
|
13
|
+
[loggers]
|
|
14
|
+
keys = root,sqlalchemy,alembic
|
|
15
|
+
|
|
16
|
+
[handlers]
|
|
17
|
+
keys = console
|
|
18
|
+
|
|
19
|
+
[formatters]
|
|
20
|
+
keys = generic
|
|
21
|
+
|
|
22
|
+
[logger_root]
|
|
23
|
+
level = WARN
|
|
24
|
+
handlers = console
|
|
25
|
+
qualname =
|
|
26
|
+
|
|
27
|
+
[logger_sqlalchemy]
|
|
28
|
+
level = WARN
|
|
29
|
+
handlers =
|
|
30
|
+
qualname = sqlalchemy.engine
|
|
31
|
+
|
|
32
|
+
[logger_alembic]
|
|
33
|
+
level = INFO
|
|
34
|
+
handlers =
|
|
35
|
+
qualname = alembic
|
|
36
|
+
|
|
37
|
+
[handler_console]
|
|
38
|
+
class = StreamHandler
|
|
39
|
+
args = (sys.stderr,)
|
|
40
|
+
level = NOTSET
|
|
41
|
+
formatter = generic
|
|
42
|
+
|
|
43
|
+
[formatter_generic]
|
|
44
|
+
format = %(levelname)-5.5s [%(name)s] %(message)s
|
|
45
|
+
datefmt = %H:%M:%S
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
This page details some of the options available for configuring your `esgpull` installation.
|
|
2
|
+
|
|
3
|
+
## Configuration
|
|
4
|
+
|
|
5
|
+
On invocation, `$ esgpull config` will show the base configurations in the terminal.
|
|
6
|
+
|
|
7
|
+
```shell
|
|
8
|
+
$ esgpull config
|
|
9
|
+
|
|
10
|
+
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── /home/me/.esgpull/config.toml ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
|
11
|
+
[paths]
|
|
12
|
+
auth = "/home/me/.esgpull/auth"
|
|
13
|
+
data = "/home/me/.esgpull/data"
|
|
14
|
+
db = "/home/me/.esgpull/db"
|
|
15
|
+
log = "/home/me/.esgpull/log"
|
|
16
|
+
tmp = "/home/me/.esgpull/tmp"
|
|
17
|
+
|
|
18
|
+
[credentials]
|
|
19
|
+
filename = "credentials.toml"
|
|
20
|
+
|
|
21
|
+
[cli]
|
|
22
|
+
page_size = 20
|
|
23
|
+
|
|
24
|
+
[db]
|
|
25
|
+
filename = "esgpull.db"
|
|
26
|
+
|
|
27
|
+
[download]
|
|
28
|
+
chunk_size = 67108864
|
|
29
|
+
http_timeout = 20
|
|
30
|
+
max_concurrent = 5
|
|
31
|
+
disable_ssl = false
|
|
32
|
+
|
|
33
|
+
[api]
|
|
34
|
+
index_node = "esgf-node.ipsl.upmc.fr"
|
|
35
|
+
http_timeout = 20
|
|
36
|
+
max_concurrent = 5
|
|
37
|
+
page_limit = 50
|
|
38
|
+
|
|
39
|
+
[api.default_options]
|
|
40
|
+
distrib = "false"
|
|
41
|
+
latest = "true"
|
|
42
|
+
replica = "none"
|
|
43
|
+
retracted = "false"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
To modify a config item from the command line, the dot-separated path to that item must
|
|
47
|
+
be provided as the first argument along with the new value that item should get as the second argument:
|
|
48
|
+
|
|
49
|
+
```shell
|
|
50
|
+
$ esgpull config api.index_node esgf-data.dkrz.de
|
|
51
|
+
```
|
|
52
|
+
```shell
|
|
53
|
+
[api]
|
|
54
|
+
index_node = "esgf-data.dkrz.de"
|
|
55
|
+
|
|
56
|
+
Previous value: esgf-node.ipsl.upmc.fr
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
On first call, this will generate a ``config.toml`` file in the ``~/.esgpull``
|
|
60
|
+
directory with only the modified values:
|
|
61
|
+
|
|
62
|
+
```shell
|
|
63
|
+
$ esgpull config api.index_node esgf-data.dkrz.de
|
|
64
|
+
```
|
|
65
|
+
```shell
|
|
66
|
+
[api]
|
|
67
|
+
index_node = "esgf-data.dkrz.de"
|
|
68
|
+
|
|
69
|
+
👍 New config file created at /home/srodriguez/.esgpull_test_config_generate/config.toml.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If a user wishes to simply generate the ``config.toml`` file without modifying any values, they
|
|
73
|
+
simply must run the following:
|
|
74
|
+
|
|
75
|
+
```shell
|
|
76
|
+
$ esgpull config --generate
|
|
77
|
+
```
|
|
78
|
+
```shell
|
|
79
|
+
👍 Config generated at /home/me/.esgpull/config.toml
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
!!! note "Complete existing config with defaults"
|
|
83
|
+
|
|
84
|
+
The `--generate` flag also works when a configuration file already exists.
|
|
85
|
+
|
|
86
|
+
In this case, a prompt will ask for permission to fill the existing file
|
|
87
|
+
with default values for all missing options:
|
|
88
|
+
|
|
89
|
+
```shell
|
|
90
|
+
$ esgpull config --generate
|
|
91
|
+
```
|
|
92
|
+
```shell
|
|
93
|
+
A config file already exists, fill it with missing defaults? [y/n] (n): y
|
|
94
|
+
👍 Config generated at /home/me/.esgpull/config.toml
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## Login
|
|
99
|
+
|
|
100
|
+
Although most data on ESGF can be downloaded without authentication, some datasets require a valid OpenID login and password.
|
|
101
|
+
|
|
102
|
+
The ESGF OpenID authentication system is described on the [ESGF user documentation](http://www.esgf.io/esgf-user-support/user_guide.html).
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
This can be provided from the command line by running the following:
|
|
106
|
+
|
|
107
|
+
```shell
|
|
108
|
+
$ esgpull login
|
|
109
|
+
```
|
|
110
|
+
```shell
|
|
111
|
+
No credentials found.
|
|
112
|
+
[0] esg-dn1.nsc.liu.se
|
|
113
|
+
[1] esgf-data.dkrz.de
|
|
114
|
+
[2] ceda.ac.uk
|
|
115
|
+
[3] esgf-node.ipsl.upmc.fr
|
|
116
|
+
[4] esgf-node.llnl.gov
|
|
117
|
+
[5] esgf.nci.org.au
|
|
118
|
+
Select a provider: 0
|
|
119
|
+
User: MyESGFusername
|
|
120
|
+
Password: <hidden>
|
|
121
|
+
Certificates are missing.
|
|
122
|
+
👍 Renewed successfully
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
The credentials will then be saved under the ``~/.esgpull/auth`` directory, within
|
|
126
|
+
``credentials.toml``, which can then be used for future sessions.
|