esgpull 0.6.4__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.
Files changed (143) hide show
  1. esgpull-0.7.1/.github/workflows/ci.yml +47 -0
  2. esgpull-0.7.1/.github/workflows/doc.yml +34 -0
  3. esgpull-0.7.1/.github/workflows/pypi-publish.yml +32 -0
  4. esgpull-0.7.1/.gitignore +162 -0
  5. esgpull-0.7.1/.pre-commit-config.yaml +57 -0
  6. {esgpull-0.6.4 → esgpull-0.7.1}/PKG-INFO +22 -43
  7. {esgpull-0.6.4 → esgpull-0.7.1}/README.md +2 -2
  8. esgpull-0.7.1/alembic.ini +45 -0
  9. esgpull-0.7.1/docs/docs/configuration.md +126 -0
  10. esgpull-0.7.1/docs/docs/download.md +133 -0
  11. esgpull-0.7.1/docs/docs/glossary.md +5 -0
  12. esgpull-0.7.1/docs/docs/images/download_1.svg +100 -0
  13. esgpull-0.7.1/docs/docs/images/download_2.svg +137 -0
  14. esgpull-0.7.1/docs/docs/images/download_3.svg +108 -0
  15. esgpull-0.7.1/docs/docs/images/download_4.svg +63 -0
  16. esgpull-0.7.1/docs/docs/images/download_5.svg +108 -0
  17. esgpull-0.7.1/docs/docs/images/download_6.svg +104 -0
  18. esgpull-0.7.1/docs/docs/images/intro_1.svg +152 -0
  19. esgpull-0.7.1/docs/docs/images/intro_2.svg +152 -0
  20. esgpull-0.7.1/docs/docs/images/intro_3.svg +192 -0
  21. esgpull-0.7.1/docs/docs/images/intro_4.svg +321 -0
  22. esgpull-0.7.1/docs/docs/images/intro_5.svg +152 -0
  23. esgpull-0.7.1/docs/docs/images/intro_6.svg +152 -0
  24. esgpull-0.7.1/docs/docs/images/quickstart_1.svg +147 -0
  25. esgpull-0.7.1/docs/docs/images/search_1.svg +152 -0
  26. esgpull-0.7.1/docs/docs/images/search_2.svg +63 -0
  27. esgpull-0.7.1/docs/docs/images/search_3.svg +63 -0
  28. esgpull-0.7.1/docs/docs/images/search_4.svg +63 -0
  29. esgpull-0.7.1/docs/docs/images/search_5.svg +63 -0
  30. esgpull-0.7.1/docs/docs/images/search_6.svg +188 -0
  31. esgpull-0.7.1/docs/docs/images/search_7.svg +84 -0
  32. esgpull-0.7.1/docs/docs/images/search_ignore.svg +152 -0
  33. esgpull-0.7.1/docs/docs/index.md +80 -0
  34. esgpull-0.7.1/docs/docs/installation.md +96 -0
  35. esgpull-0.7.1/docs/docs/queries.md +81 -0
  36. esgpull-0.7.1/docs/docs/quickstart.md +91 -0
  37. esgpull-0.7.1/docs/docs/search.md +309 -0
  38. esgpull-0.7.1/docs/docs/stylesheets/extra.css +20 -0
  39. esgpull-0.7.1/docs/includes/abbreviations.md +1 -0
  40. esgpull-0.7.1/docs/mkdocs.yml +72 -0
  41. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/__init__.py +2 -0
  42. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/add.py +10 -3
  43. esgpull-0.7.1/esgpull/cli/datasets.py +78 -0
  44. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/decorators.py +11 -0
  45. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/search.py +14 -7
  46. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/update.py +19 -16
  47. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/utils.py +5 -1
  48. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/config.py +25 -8
  49. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/constants.py +1 -0
  50. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/database.py +24 -5
  51. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/esgpull.py +46 -2
  52. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/exceptions.py +5 -2
  53. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/install_config.py +10 -2
  54. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/env.py +3 -0
  55. esgpull-0.7.1/esgpull/migrations/versions/0.6.5_update_tables.py +25 -0
  56. esgpull-0.7.1/esgpull/migrations/versions/0.7.0_update_tables.py +38 -0
  57. esgpull-0.7.1/esgpull/migrations/versions/0.7.1_update_tables.py +28 -0
  58. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/query.py +1 -1
  59. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/selection.py +6 -1
  60. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/sql.py +17 -3
  61. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/tui.py +3 -4
  62. esgpull-0.7.1/esgpull/version.py +3 -0
  63. esgpull-0.7.1/pdm.lock +1978 -0
  64. esgpull-0.7.1/pyproject.toml +106 -0
  65. esgpull-0.7.1/recipe/meta.yaml +60 -0
  66. esgpull-0.7.1/recipe/recipe.yaml +58 -0
  67. esgpull-0.7.1/requirements-dev.lock +259 -0
  68. esgpull-0.7.1/requirements.lock +102 -0
  69. esgpull-0.7.1/tests/cli/__init__.py +0 -0
  70. esgpull-0.7.1/tests/cli/test_update.py +36 -0
  71. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_config.py +16 -0
  72. esgpull-0.7.1/tests/test_esgpull.py +42 -0
  73. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_selection.py +4 -2
  74. esgpull-0.6.4/esgpull/version.py +0 -1
  75. esgpull-0.6.4/pyproject.toml +0 -151
  76. {esgpull-0.6.4 → esgpull-0.7.1}/LICENSE +0 -0
  77. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/__init__.py +0 -0
  78. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/auth.py +0 -0
  79. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/autoremove.py +0 -0
  80. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/config.py +0 -0
  81. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/convert.py +0 -0
  82. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/download.py +0 -0
  83. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/facet.py +0 -0
  84. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/get.py +0 -0
  85. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/install.py +0 -0
  86. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/login.py +0 -0
  87. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/remove.py +0 -0
  88. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/retry.py +0 -0
  89. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/self.py +0 -0
  90. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/show.py +0 -0
  91. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/status.py +0 -0
  92. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/cli/track.py +0 -0
  93. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/context.py +0 -0
  94. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/download.py +0 -0
  95. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/fs.py +0 -0
  96. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/graph.py +0 -0
  97. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/README +0 -0
  98. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/script.py.mako +0 -0
  99. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.0_update_tables.py +0 -0
  100. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.1_update_tables.py +0 -0
  101. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.2_update_tables.py +0 -0
  102. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.3_update_tables.py +0 -0
  103. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.4_update_tables.py +0 -0
  104. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.5_update_tables.py +0 -0
  105. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.6_update_tables.py +0 -0
  106. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.7_update_tables.py +0 -0
  107. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.3.8_update_tables.py +0 -0
  108. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.4.0_update_tables.py +0 -0
  109. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.0_update_tables.py +0 -0
  110. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.1_update_tables.py +0 -0
  111. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.2_update_tables.py +0 -0
  112. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.3_update_tables.py +0 -0
  113. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.4_update_tables.py +0 -0
  114. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.5.5_update_tables.py +0 -0
  115. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.0_update_tables.py +0 -0
  116. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.1_update_tables.py +0 -0
  117. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.2_update_tables.py +0 -0
  118. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.3_update_tables.py +0 -0
  119. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/migrations/versions/0.6.4_update_tables.py +0 -0
  120. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/__init__.py +0 -0
  121. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/base.py +0 -0
  122. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/dataset.py +0 -0
  123. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/facet.py +0 -0
  124. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/file.py +0 -0
  125. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/options.py +0 -0
  126. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/synda_file.py +0 -0
  127. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/tag.py +0 -0
  128. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/models/utils.py +0 -0
  129. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/processor.py +0 -0
  130. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/py.typed +0 -0
  131. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/result.py +0 -0
  132. {esgpull-0.6.4 → esgpull-0.7.1}/esgpull/utils.py +0 -0
  133. {esgpull-0.6.4 → esgpull-0.7.1}/tests/__init__.py +0 -0
  134. {esgpull-0.6.4 → esgpull-0.7.1}/tests/conftest.py +0 -0
  135. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_auth.py +0 -0
  136. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_context.py +0 -0
  137. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_db.py +0 -0
  138. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_fs.py +0 -0
  139. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_graph.py +0 -0
  140. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_processor.py +0 -0
  141. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_query.py +0 -0
  142. {esgpull-0.6.4 → esgpull-0.7.1}/tests/test_synda.py +0 -0
  143. {esgpull-0.6.4 → 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
@@ -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,63 +1,42 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: esgpull
3
- Version: 0.6.4
3
+ Version: 0.7.1
4
4
  Summary: ESGF data discovery, download, replication tool
5
- Author-Email: Sven Rodriguez <srodriguez@ipsl.fr>
6
- License: BSD 3-Clause License
7
-
8
- Copyright (c) 2023, Institut Pierre-Simon Laplace (IPSL) and contributors
9
-
10
- Redistribution and use in source and binary forms, with or without
11
- modification, are permitted provided that the following conditions are met:
12
-
13
- 1. Redistributions of source code must retain the above copyright notice, this
14
- list of conditions and the following disclaimer.
15
-
16
- 2. Redistributions in binary form must reproduce the above copyright notice,
17
- this list of conditions and the following disclaimer in the documentation
18
- and/or other materials provided with the distribution.
19
-
20
- 3. Neither the name of the copyright holder nor the names of its
21
- contributors may be used to endorse or promote products derived from
22
- this software without specific prior written permission.
23
-
24
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
5
  Project-URL: Repository, https://github.com/ESGF/esgf-download
35
6
  Project-URL: Documentation, https://esgf.github.io/esgf-download/
7
+ Author-email: Sven Rodriguez <srodriguez@ipsl.fr>
8
+ License: BSD-3-Clause
9
+ License-File: LICENSE
10
+ Classifier: License :: OSI Approved :: BSD License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
36
15
  Requires-Python: >=3.10
37
- Requires-Dist: MyProxyClient>=2.1.0
38
16
  Requires-Dist: aiofiles>=22.1.0
17
+ Requires-Dist: aiostream>=0.4.5
39
18
  Requires-Dist: alembic>=1.8.1
40
- Requires-Dist: click>=8.1.3
19
+ Requires-Dist: attrs>=22.1.0
20
+ Requires-Dist: cattrs>=22.2.0
41
21
  Requires-Dist: click-params>=0.4.0
22
+ Requires-Dist: click>=8.1.3
42
23
  Requires-Dist: httpx>=0.23.0
24
+ Requires-Dist: myproxyclient>=2.1.0
43
25
  Requires-Dist: nest-asyncio>=1.5.6
44
- Requires-Dist: pyOpenSSL>=22.1.0
26
+ Requires-Dist: platformdirs>=2.6.2
27
+ Requires-Dist: pyopenssl>=22.1.0
28
+ Requires-Dist: pyparsing>=3.0.9
45
29
  Requires-Dist: pyyaml>=6.0
46
- Requires-Dist: tomlkit>=0.11.5
47
30
  Requires-Dist: rich>=12.6.0
48
- Requires-Dist: sqlalchemy>=2.0.0b2
49
31
  Requires-Dist: setuptools>=65.4.1
50
- Requires-Dist: aiostream>=0.4.5
51
- Requires-Dist: attrs>=22.1.0
52
- Requires-Dist: cattrs>=22.2.0
53
- Requires-Dist: platformdirs>=2.6.2
54
- Requires-Dist: pyparsing>=3.0.9
32
+ Requires-Dist: sqlalchemy>=2.0.0b2
33
+ Requires-Dist: tomlkit>=0.11.5
55
34
  Description-Content-Type: text/markdown
56
35
 
57
- [![pdm-managed](https://img.shields.io/badge/pdm-managed-blueviolet)](https://pdm.fming.dev)
58
-
59
36
  # esgpull - ESGF data management utility
60
37
 
38
+ [![Rye](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/rye/main/artwork/badge.json)](https://rye.astral.sh)
39
+
61
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.
62
41
 
63
42
  ```py
@@ -1,7 +1,7 @@
1
- [![pdm-managed](https://img.shields.io/badge/pdm-managed-blueviolet)](https://pdm.fming.dev)
2
-
3
1
  # esgpull - ESGF data management utility
4
2
 
3
+ [![Rye](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/rye/main/artwork/badge.json)](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.