dlmachine 0.0.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.
- dlmachine-0.0.1/.bumpversion.cfg +8 -0
- dlmachine-0.0.1/.codecov.yaml +17 -0
- dlmachine-0.0.1/.coveragerc +22 -0
- dlmachine-0.0.1/.editorconfig +12 -0
- dlmachine-0.0.1/.github/ISSUE_TEMPLATE/2-bug-report.yaml +120 -0
- dlmachine-0.0.1/.github/ISSUE_TEMPLATE/3-documentation-improvement.yaml +58 -0
- dlmachine-0.0.1/.github/ISSUE_TEMPLATE/4-feature-request.yaml +67 -0
- dlmachine-0.0.1/.github/ISSUE_TEMPLATE/config.yaml +6 -0
- dlmachine-0.0.1/.github/pull_request_template.md +39 -0
- dlmachine-0.0.1/.github/workflows/build.yaml +23 -0
- dlmachine-0.0.1/.github/workflows/ci.yml +95 -0
- dlmachine-0.0.1/.gitignore +23 -0
- dlmachine-0.0.1/.pre-commit-config.yaml +110 -0
- dlmachine-0.0.1/.readthedocs.yaml +22 -0
- dlmachine-0.0.1/AGENTS.md +63 -0
- dlmachine-0.0.1/CODE_OF_CONDUCT.md +128 -0
- dlmachine-0.0.1/CONTRIBUTING.md +57 -0
- dlmachine-0.0.1/LICENSE +674 -0
- dlmachine-0.0.1/PKG-INFO +205 -0
- dlmachine-0.0.1/README.md +163 -0
- dlmachine-0.0.1/docs/Makefile +20 -0
- dlmachine-0.0.1/docs/make.bat +35 -0
- dlmachine-0.0.1/docs/src/conf.py +125 -0
- dlmachine-0.0.1/docs/src/developer_docs.md +58 -0
- dlmachine-0.0.1/docs/src/index.rst +30 -0
- dlmachine-0.0.1/download_manager/__init__.py +41 -0
- dlmachine-0.0.1/download_manager/_constants.py +13 -0
- dlmachine-0.0.1/download_manager/_curlopt.py +171 -0
- dlmachine-0.0.1/download_manager/_data/__init__.py +20 -0
- dlmachine-0.0.1/download_manager/_data/url.yaml +1 -0
- dlmachine-0.0.1/download_manager/_descriptor.py +234 -0
- dlmachine-0.0.1/download_manager/_downloader.py +949 -0
- dlmachine-0.0.1/download_manager/_manager.py +625 -0
- dlmachine-0.0.1/download_manager/_metadata.py +93 -0
- dlmachine-0.0.1/download_manager/_misc.py +107 -0
- dlmachine-0.0.1/download_manager/_session.py +10 -0
- dlmachine-0.0.1/pyproject.toml +182 -0
- dlmachine-0.0.1/scripts/demo_failure.py +69 -0
- dlmachine-0.0.1/scripts/demo_success.py +61 -0
- dlmachine-0.0.1/tests/conftest.py +41 -0
- dlmachine-0.0.1/tests/test_curlopt.py +22 -0
- dlmachine-0.0.1/tests/test_descriptor.py +30 -0
- dlmachine-0.0.1/tests/test_downloader.py +234 -0
- dlmachine-0.0.1/tests/test_manager.py +170 -0
- dlmachine-0.0.1/uv.lock +1677 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Based on pydata/xarray
|
|
2
|
+
codecov:
|
|
3
|
+
require_ci_to_pass: no
|
|
4
|
+
|
|
5
|
+
coverage:
|
|
6
|
+
status:
|
|
7
|
+
project:
|
|
8
|
+
default:
|
|
9
|
+
# Require 1% coverage, i.e., always succeed
|
|
10
|
+
target: 1
|
|
11
|
+
patch: false
|
|
12
|
+
changes: false
|
|
13
|
+
|
|
14
|
+
comment:
|
|
15
|
+
layout: diff, flags, files
|
|
16
|
+
behavior: once
|
|
17
|
+
require_base: no
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[paths]
|
|
2
|
+
source =
|
|
3
|
+
download_manager
|
|
4
|
+
*/site-packages/download-manager
|
|
5
|
+
|
|
6
|
+
[run]
|
|
7
|
+
branch = true
|
|
8
|
+
parallel = true
|
|
9
|
+
source = download_manager
|
|
10
|
+
omit = */__init__.py
|
|
11
|
+
|
|
12
|
+
[report]
|
|
13
|
+
exclude_lines =
|
|
14
|
+
\#.*pragma:\s*no.?cover
|
|
15
|
+
|
|
16
|
+
if __name__ == .__main__.
|
|
17
|
+
|
|
18
|
+
^\s*raise AssertionError\b
|
|
19
|
+
^\s*raise NotImplementedError\b
|
|
20
|
+
^\s*return NotImplemented\b
|
|
21
|
+
show_missing = true
|
|
22
|
+
precision = 2
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
name: 🪳 Bug Report
|
|
2
|
+
description: Create a report to help us reproduce and fix the bug
|
|
3
|
+
|
|
4
|
+
title: "[BUG]: "
|
|
5
|
+
labels:
|
|
6
|
+
- "bug"
|
|
7
|
+
- "triage"
|
|
8
|
+
|
|
9
|
+
body:
|
|
10
|
+
- type: markdown
|
|
11
|
+
attributes:
|
|
12
|
+
value: >
|
|
13
|
+
**Before submitting a bug, please make sure the issue hasn't been already addressed by [searching through](https://github.com/saezlab/download-manager/issues).**
|
|
14
|
+
Please write your bug report in English to ensure it can be understood and addressed by the development team.
|
|
15
|
+
|
|
16
|
+
#---------------- Installed From --------------
|
|
17
|
+
- type: dropdown
|
|
18
|
+
id: source
|
|
19
|
+
attributes:
|
|
20
|
+
label: Source
|
|
21
|
+
description: download-manager has been installed from
|
|
22
|
+
options:
|
|
23
|
+
- conda
|
|
24
|
+
- pip
|
|
25
|
+
- uv
|
|
26
|
+
- poetry
|
|
27
|
+
- other (specify in text)
|
|
28
|
+
validations:
|
|
29
|
+
required: True
|
|
30
|
+
|
|
31
|
+
- type: input
|
|
32
|
+
id: source-other
|
|
33
|
+
attributes:
|
|
34
|
+
label: other source
|
|
35
|
+
placeholder: e.g., from source
|
|
36
|
+
|
|
37
|
+
#-------------- Python version --------------
|
|
38
|
+
- type: input
|
|
39
|
+
id: Python
|
|
40
|
+
attributes:
|
|
41
|
+
label: Python version
|
|
42
|
+
placeholder: e.g., 3.10
|
|
43
|
+
validations:
|
|
44
|
+
required: true
|
|
45
|
+
|
|
46
|
+
#-------------- download-manager version --------------
|
|
47
|
+
- type: input
|
|
48
|
+
id: download-manager-version
|
|
49
|
+
attributes:
|
|
50
|
+
label: download-manager version
|
|
51
|
+
placeholder: e.g., download-manager v0.0.1
|
|
52
|
+
validations:
|
|
53
|
+
required: true
|
|
54
|
+
|
|
55
|
+
#-------------- OS Platform and distribution --------------
|
|
56
|
+
- type: input
|
|
57
|
+
id: OS
|
|
58
|
+
attributes:
|
|
59
|
+
label: OS platform and distribution
|
|
60
|
+
placeholder: e.g., Linux Ubuntu 16.04
|
|
61
|
+
|
|
62
|
+
#-------------- Describe the Bug --------------
|
|
63
|
+
- type: textarea
|
|
64
|
+
attributes:
|
|
65
|
+
label: Describe the bug
|
|
66
|
+
description: |
|
|
67
|
+
Please provide a clear and concise description of the bug.
|
|
68
|
+
|
|
69
|
+
If applicable, include a minimal example that allows us to reproduce the error by running the code.
|
|
70
|
+
It's crucial that the snippet is as short and focused as possible, so please remove any unnecessary code
|
|
71
|
+
to help us debug efficiently. We will copy and paste your code, and we expect to see the same result as you did.
|
|
72
|
+
Avoid using external data and make sure to include all relevant imports, etc. For example:
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
# All necessary imports at the beginning
|
|
76
|
+
import download_manager as dm
|
|
77
|
+
|
|
78
|
+
# A succinct reproducing example trimmed down to the essential parts:
|
|
79
|
+
manager = dm.DownloadManager()
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
If the code is too lengthy (though we hope it's not), feel free to place it in a public gist and share the link in the issue: https://gist.github.com.
|
|
84
|
+
|
|
85
|
+
Instead of providing the expected results, please paste or describe the actual results you observe. If you encounter an error, include the error message along with the full traceback. It's helpful to wrap error messages in ```` ```triple quotes blocks``` ````.
|
|
86
|
+
placeholder: |
|
|
87
|
+
A clear and concise description of what the bug is.
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
# Sample code to reproduce the problem
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
The error message you got, with the full traceback.
|
|
95
|
+
```
|
|
96
|
+
validations:
|
|
97
|
+
required: true
|
|
98
|
+
|
|
99
|
+
#-------------- Relevant LOG Output --------------
|
|
100
|
+
- type: textarea
|
|
101
|
+
id: logs
|
|
102
|
+
attributes:
|
|
103
|
+
label: Relevant LOG output
|
|
104
|
+
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
|
105
|
+
render: shell
|
|
106
|
+
|
|
107
|
+
#-------------- Code of Conduct --------------
|
|
108
|
+
- type: checkboxes
|
|
109
|
+
id: terms
|
|
110
|
+
attributes:
|
|
111
|
+
label: Code of Conduct
|
|
112
|
+
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/saezlab/download-manager/blob/main/CODE_OF_CONDUCT.md).
|
|
113
|
+
options:
|
|
114
|
+
- label: I agree to follow this project's Code of Conduct
|
|
115
|
+
required: true
|
|
116
|
+
|
|
117
|
+
- type: markdown
|
|
118
|
+
attributes:
|
|
119
|
+
value: >
|
|
120
|
+
Thank you for your contribution! 🎉 – Saezlab Team
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: 📔 Documentation Improvement
|
|
2
|
+
description: Report wrong or missing documentation
|
|
3
|
+
|
|
4
|
+
title: "[DOC]: "
|
|
5
|
+
labels:
|
|
6
|
+
- "docs"
|
|
7
|
+
- "triage"
|
|
8
|
+
projects: ["download-manager/1"]
|
|
9
|
+
|
|
10
|
+
body:
|
|
11
|
+
#---------------- Location of the documentation --------------
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: location
|
|
14
|
+
attributes:
|
|
15
|
+
label: Location of the documentation
|
|
16
|
+
description: >
|
|
17
|
+
Please provide the location of the documentation. This could be a URL to the documentation page or a specific section within the documentation where you found the issue.
|
|
18
|
+
For example, if the issue is in the API reference, please provide the URL to that specific page. If it's in the README, please specify that as well.
|
|
19
|
+
If you're unsure about the exact location, please provide as much detail as possible to help us find it.
|
|
20
|
+
For example, you could say "The issue is in the API reference section under the 'DownloadManager' class" or "The issue is in the README under the 'Installation' section".
|
|
21
|
+
placeholder: readme, API reference, etc.
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
|
|
25
|
+
#---------------- Problem Description --------------
|
|
26
|
+
- type: textarea
|
|
27
|
+
id: problem
|
|
28
|
+
attributes:
|
|
29
|
+
label: Documentation problem
|
|
30
|
+
description: >
|
|
31
|
+
Please provide a description of what documentation you believe needs to be fixed/improved
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
|
|
35
|
+
#---------------- Suggested Fix --------------
|
|
36
|
+
- type: textarea
|
|
37
|
+
id: suggested-fix
|
|
38
|
+
attributes:
|
|
39
|
+
label: Suggested fix for documentation
|
|
40
|
+
description: >
|
|
41
|
+
Please explain the suggested fix and **why** it's better than the existing documentation
|
|
42
|
+
validations:
|
|
43
|
+
required: true
|
|
44
|
+
|
|
45
|
+
#-------------- Code of Conduct --------------
|
|
46
|
+
- type: checkboxes
|
|
47
|
+
id: terms
|
|
48
|
+
attributes:
|
|
49
|
+
label: Code of Conduct
|
|
50
|
+
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/saezlab/download-manager/blob/main/CODE_OF_CONDUCT.md).
|
|
51
|
+
options:
|
|
52
|
+
- label: I agree to follow this project's Code of Conduct
|
|
53
|
+
required: true
|
|
54
|
+
|
|
55
|
+
- type: markdown
|
|
56
|
+
attributes:
|
|
57
|
+
value: >
|
|
58
|
+
Thank you for your contribution! 🎉 – Saezlab Team
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: ✨ Feature Request
|
|
2
|
+
description: Submit a proposal/request for a new download-manager feature
|
|
3
|
+
|
|
4
|
+
title: "[FEAT]: "
|
|
5
|
+
labels:
|
|
6
|
+
- "feature"
|
|
7
|
+
projects: ["download-manager/1"]
|
|
8
|
+
|
|
9
|
+
body:
|
|
10
|
+
- type: markdown
|
|
11
|
+
attributes:
|
|
12
|
+
value: >
|
|
13
|
+
**Note:** Please write your bug report in English to ensure it can be understood and addressed by the development team.
|
|
14
|
+
|
|
15
|
+
#-------------- Feature type --------------
|
|
16
|
+
- type: dropdown
|
|
17
|
+
id: feature-type
|
|
18
|
+
attributes:
|
|
19
|
+
label: Feature Type
|
|
20
|
+
description: Please select what type of feature request you would like to propose.
|
|
21
|
+
options:
|
|
22
|
+
- Add new functionality to download-manager
|
|
23
|
+
- Change existing functionality in download-manager
|
|
24
|
+
- Remove existing functionality in download-manager
|
|
25
|
+
multiple: false
|
|
26
|
+
validations:
|
|
27
|
+
required: true
|
|
28
|
+
|
|
29
|
+
#-------------- Feature description and motivation --------------
|
|
30
|
+
- type: textarea
|
|
31
|
+
attributes:
|
|
32
|
+
label: 🚀 The feature and motivation
|
|
33
|
+
description: >
|
|
34
|
+
Provide a clear and concise summary of the proposed feature, including the motivation behind it.
|
|
35
|
+
If your request addresses a specific problem, describe it (e.g., "I'm working on X and need Y to be achievable").
|
|
36
|
+
If this is connected to an existing GitHub issue, please include a link.
|
|
37
|
+
placeholder: |
|
|
38
|
+
**Feature description**
|
|
39
|
+
As user I want to be able to do X with download-manager so that I can achieve Y.
|
|
40
|
+
|
|
41
|
+
**Motivation**
|
|
42
|
+
This feature would be useful for Z because...
|
|
43
|
+
|
|
44
|
+
validations:
|
|
45
|
+
required: true
|
|
46
|
+
|
|
47
|
+
#-------------- Additional context --------------
|
|
48
|
+
- type: textarea
|
|
49
|
+
attributes:
|
|
50
|
+
label: Additional context
|
|
51
|
+
description: >
|
|
52
|
+
Add any other context or screenshots about the feature request.
|
|
53
|
+
|
|
54
|
+
#-------------- Code of Conduct --------------
|
|
55
|
+
- type: checkboxes
|
|
56
|
+
id: terms
|
|
57
|
+
attributes:
|
|
58
|
+
label: Code of Conduct
|
|
59
|
+
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/saezlab/download-manager/blob/main/CODE_OF_CONDUCT.md).
|
|
60
|
+
options:
|
|
61
|
+
- label: I agree to follow this project's Code of Conduct
|
|
62
|
+
required: true
|
|
63
|
+
|
|
64
|
+
- type: markdown
|
|
65
|
+
attributes:
|
|
66
|
+
value: >
|
|
67
|
+
Thank you for your contribution! 🎉 – Saezlab Team
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
Describe the change in 1-3 concise points.
|
|
4
|
+
|
|
5
|
+
## Related Issues
|
|
6
|
+
|
|
7
|
+
- Closes #
|
|
8
|
+
- Related to #
|
|
9
|
+
|
|
10
|
+
## Type of Change
|
|
11
|
+
|
|
12
|
+
- [ ] Bug fix
|
|
13
|
+
- [ ] New feature
|
|
14
|
+
- [ ] Documentation update
|
|
15
|
+
- [ ] Refactor / maintenance
|
|
16
|
+
|
|
17
|
+
## What Changed
|
|
18
|
+
|
|
19
|
+
-
|
|
20
|
+
|
|
21
|
+
## Validation
|
|
22
|
+
|
|
23
|
+
- [ ] `poetry run pytest`
|
|
24
|
+
- [ ] `poetry run flake8 download_manager`
|
|
25
|
+
- [ ] Added/updated tests (if needed)
|
|
26
|
+
- [ ] Added/updated documentation (if needed)
|
|
27
|
+
|
|
28
|
+
## Breaking Changes
|
|
29
|
+
|
|
30
|
+
- [ ] No breaking changes
|
|
31
|
+
- [ ] Breaking changes (describe below)
|
|
32
|
+
|
|
33
|
+
If there are breaking changes, describe migration steps:
|
|
34
|
+
|
|
35
|
+
## Checklist
|
|
36
|
+
|
|
37
|
+
- [ ] PR title is clear and descriptive
|
|
38
|
+
- [ ] Scope is focused and minimal
|
|
39
|
+
- [ ] No unrelated changes included
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: Package build
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
package:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v2
|
|
14
|
+
- name: Set up Python 3.10
|
|
15
|
+
uses: actions/setup-python@v2
|
|
16
|
+
with:
|
|
17
|
+
python-version: '3.10'
|
|
18
|
+
- name: Install build dependencies
|
|
19
|
+
run: python -m pip install --upgrade pip wheel twine build
|
|
20
|
+
- name: Build package
|
|
21
|
+
run: python -m build
|
|
22
|
+
- name: Check package
|
|
23
|
+
run: twine check --strict dist/*.whl
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
types: [ opened, synchronize, reopened ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
|
|
12
|
+
runs-on: ${{ matrix.os }}
|
|
13
|
+
defaults:
|
|
14
|
+
run:
|
|
15
|
+
shell: bash -e {0}
|
|
16
|
+
|
|
17
|
+
strategy:
|
|
18
|
+
fail-fast: false
|
|
19
|
+
matrix:
|
|
20
|
+
python: ['3.10', '3.11', '3.12', '3.13', '3.14']
|
|
21
|
+
os: [ubuntu-latest, macos-latest]
|
|
22
|
+
|
|
23
|
+
env:
|
|
24
|
+
OS: ${{ matrix.os }}
|
|
25
|
+
PYTHON: ${{ matrix.python }}
|
|
26
|
+
MODULE: download_manager
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: Check out main
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
- name: Setup Python ${{ matrix.python }}
|
|
32
|
+
uses: actions/setup-python@v5
|
|
33
|
+
with:
|
|
34
|
+
python-version: ${{ matrix.python }}
|
|
35
|
+
- name: System dependencies Linux
|
|
36
|
+
if: ${{ matrix.os == 'ubuntu-latest' }}
|
|
37
|
+
run: |
|
|
38
|
+
sudo apt-get update
|
|
39
|
+
sudo apt-get install -y libcurl4-openssl-dev
|
|
40
|
+
- name: System dependencies OSX
|
|
41
|
+
if: ${{ matrix.os == 'macos-latest' }}
|
|
42
|
+
run: |
|
|
43
|
+
brew install curl openssl
|
|
44
|
+
CURL_PREFIX="$(brew --prefix curl)"
|
|
45
|
+
SSL_PREFIX="$(brew --prefix openssl@3)"
|
|
46
|
+
{
|
|
47
|
+
echo "LDFLAGS=-L${SSL_PREFIX}/lib -L${CURL_PREFIX}/lib"
|
|
48
|
+
echo "CPPFLAGS=-I${SSL_PREFIX}/include -I${CURL_PREFIX}/include"
|
|
49
|
+
echo "PKG_CONFIG_PATH=${SSL_PREFIX}/lib/pkgconfig:${CURL_PREFIX}/lib/pkgconfig"
|
|
50
|
+
echo "PYCURL_SSL_LIBRARY=openssl"
|
|
51
|
+
echo "PYCURL_CURL_CONFIG=${CURL_PREFIX}/bin/curl-config"
|
|
52
|
+
echo "DYLD_LIBRARY_PATH=${CURL_PREFIX}/lib:${SSL_PREFIX}/lib"
|
|
53
|
+
echo "PIP_NO_BINARY=pycurl"
|
|
54
|
+
} >> "$GITHUB_ENV"
|
|
55
|
+
- name: Install Poetry
|
|
56
|
+
uses: snok/install-poetry@v1
|
|
57
|
+
with:
|
|
58
|
+
version: 1.8.4
|
|
59
|
+
virtualenvs-create: true
|
|
60
|
+
virtualenvs-in-project: true
|
|
61
|
+
installer-parallel: true
|
|
62
|
+
- name: Load cached venv
|
|
63
|
+
id: cached-poetry-dependencies
|
|
64
|
+
uses: actions/cache@v4
|
|
65
|
+
with:
|
|
66
|
+
path: .venv
|
|
67
|
+
key: venv-${{ runner.os }}-${{ matrix.python }}-${{ hashFiles('**/poetry.lock') }}-v2
|
|
68
|
+
- name: Install dependencies
|
|
69
|
+
if: ${{ steps.cached-poetry-dependencies.outputs.cache-hit != 'true' }}
|
|
70
|
+
run: poetry install --no-interaction --no-root
|
|
71
|
+
- name: Install library
|
|
72
|
+
run: poetry install --no-interaction
|
|
73
|
+
- name: Rebuild pycurl from source on macOS
|
|
74
|
+
if: ${{ matrix.os == 'macos-latest' }}
|
|
75
|
+
run: "poetry run pip install --no-cache-dir --no-binary :all: --force-reinstall pycurl"
|
|
76
|
+
- name: Lint with flake8
|
|
77
|
+
run: |
|
|
78
|
+
# stop the build if there are Python syntax errors or undefined names
|
|
79
|
+
poetry run flake8 $MODULE --count --select=E9,F63,F7,F82 --show-source --statistics
|
|
80
|
+
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
|
81
|
+
poetry run flake8 $MODULE --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
|
82
|
+
- name: Tests and test coverage
|
|
83
|
+
if: ${{ github.event_name == 'push' }}
|
|
84
|
+
run: |
|
|
85
|
+
poetry run pytest -v --cov --color=yes --durations=0 --disable-warnings
|
|
86
|
+
- name: Tests
|
|
87
|
+
if: ${{ github.event_name == 'pull_request' }}
|
|
88
|
+
run: |
|
|
89
|
+
poetry run pytest -v --color=yes --durations=0 --disable-warnings
|
|
90
|
+
- name: Upload coverage reports to Codecov
|
|
91
|
+
if: ${{ github.event_name == 'push' }}
|
|
92
|
+
env:
|
|
93
|
+
CODECOV_NAME: ${{ matrix.python }}-${{ matrix.os }}
|
|
94
|
+
run: |
|
|
95
|
+
poetry run codecovcli --verbose upload-process -t ${{ secrets.CODECOV_TOKEN }} -n 'std'-${{ github.run_id }}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
*~
|
|
2
|
+
__pycache__/
|
|
3
|
+
/build/
|
|
4
|
+
/docs/_build/
|
|
5
|
+
/docs/generated/
|
|
6
|
+
.DS_Store
|
|
7
|
+
/.vscode/
|
|
8
|
+
/*.egg-info/
|
|
9
|
+
*.egg
|
|
10
|
+
*.prof
|
|
11
|
+
*.coverage
|
|
12
|
+
*.pickle
|
|
13
|
+
/out/
|
|
14
|
+
*.log
|
|
15
|
+
/dist/
|
|
16
|
+
*.pye
|
|
17
|
+
*.pyc
|
|
18
|
+
*.kate-swp
|
|
19
|
+
/.tox/
|
|
20
|
+
/.idea/
|
|
21
|
+
/.pytest_cache/
|
|
22
|
+
/.cache/
|
|
23
|
+
/data/
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# See https://pre-commit.com for more information
|
|
2
|
+
# See https://pre-commit.com/hooks.html for more hooks
|
|
3
|
+
fail_fast: false
|
|
4
|
+
default_language_version:
|
|
5
|
+
python: python3
|
|
6
|
+
default_stages:
|
|
7
|
+
- commit
|
|
8
|
+
- push
|
|
9
|
+
minimum_pre_commit_version: 2.7.1
|
|
10
|
+
repos:
|
|
11
|
+
- repo: https://github.com/deeenes/unexport
|
|
12
|
+
rev: 0.4.0-patch0-3
|
|
13
|
+
hooks:
|
|
14
|
+
- id: unexport
|
|
15
|
+
args: [--refactor, --single_quotes]
|
|
16
|
+
exclude: __init__.py$
|
|
17
|
+
- repo: https://github.com/google/yapf
|
|
18
|
+
rev: v0.40.2
|
|
19
|
+
hooks:
|
|
20
|
+
- id: yapf
|
|
21
|
+
additional_dependencies: [toml]
|
|
22
|
+
stages: [manual]
|
|
23
|
+
- repo: https://github.com/psf/black
|
|
24
|
+
rev: 24.8.0
|
|
25
|
+
hooks:
|
|
26
|
+
- id: black
|
|
27
|
+
additional_dependencies: [toml]
|
|
28
|
+
stages: [manual]
|
|
29
|
+
- repo: https://github.com/Instagram/Fixit
|
|
30
|
+
rev: 9d59f968e84bd2773f34b0069eeeaad3ce783254
|
|
31
|
+
hooks:
|
|
32
|
+
- id: fixit-run-rules
|
|
33
|
+
stages: [manual]
|
|
34
|
+
- repo: https://github.com/timothycrosley/isort
|
|
35
|
+
rev: 5.13.2
|
|
36
|
+
hooks:
|
|
37
|
+
- id: isort
|
|
38
|
+
additional_dependencies: [toml]
|
|
39
|
+
- repo: https://github.com/snok/pep585-upgrade
|
|
40
|
+
rev: v1.0
|
|
41
|
+
hooks:
|
|
42
|
+
- id: upgrade-type-hints
|
|
43
|
+
args: [--futures=true]
|
|
44
|
+
- repo: https://github.com/asottile/add-trailing-comma
|
|
45
|
+
rev: v3.1.0
|
|
46
|
+
hooks:
|
|
47
|
+
- id: add-trailing-comma
|
|
48
|
+
- repo: https://github.com/myint/unify
|
|
49
|
+
rev: v0.5
|
|
50
|
+
hooks:
|
|
51
|
+
- id: unify
|
|
52
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
53
|
+
rev: v4.6.0
|
|
54
|
+
hooks:
|
|
55
|
+
- id: detect-private-key
|
|
56
|
+
- id: check-ast
|
|
57
|
+
- id: check-docstring-first
|
|
58
|
+
- id: end-of-file-fixer
|
|
59
|
+
- id: check-added-large-files
|
|
60
|
+
- id: mixed-line-ending
|
|
61
|
+
args: [--fix=lf]
|
|
62
|
+
exclude: ^docs/make.bat$
|
|
63
|
+
- id: trailing-whitespace
|
|
64
|
+
exclude: ^.bumpversion.cfg$
|
|
65
|
+
- id: check-merge-conflict
|
|
66
|
+
- id: check-case-conflict
|
|
67
|
+
- id: check-symlinks
|
|
68
|
+
- id: check-yaml
|
|
69
|
+
args: [--unsafe]
|
|
70
|
+
- id: check-ast
|
|
71
|
+
- id: fix-encoding-pragma
|
|
72
|
+
args: [--remove] # for Python3 codebase, it's not necessary
|
|
73
|
+
- id: requirements-txt-fixer
|
|
74
|
+
- repo: https://github.com/john-hen/Flake8-pyproject
|
|
75
|
+
rev: 1.2.3
|
|
76
|
+
hooks:
|
|
77
|
+
- id: Flake8-pyproject
|
|
78
|
+
additional_dependencies:
|
|
79
|
+
- flake8-docstrings
|
|
80
|
+
- flake8-comprehensions
|
|
81
|
+
- flake8-bugbear
|
|
82
|
+
- git+https://github.com/saezlab/flake8-kwargs-spaces.git
|
|
83
|
+
- repo: https://github.com/rstcheck/rstcheck
|
|
84
|
+
rev: v6.2.4
|
|
85
|
+
hooks:
|
|
86
|
+
- id: rstcheck
|
|
87
|
+
exclude: docs
|
|
88
|
+
- repo: https://github.com/asottile/blacken-docs
|
|
89
|
+
rev: 1.18.0
|
|
90
|
+
hooks:
|
|
91
|
+
- id: blacken-docs
|
|
92
|
+
- repo: https://github.com/asottile/pyupgrade
|
|
93
|
+
rev: v3.17.0
|
|
94
|
+
hooks:
|
|
95
|
+
- id: pyupgrade
|
|
96
|
+
args: [--py3-plus, --py38-plus, --keep-runtime-typing]
|
|
97
|
+
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
|
|
98
|
+
rev: v2.14.0
|
|
99
|
+
hooks:
|
|
100
|
+
- id: pretty-format-yaml
|
|
101
|
+
args: [--autofix, --indent, '4']
|
|
102
|
+
- repo: https://github.com/pre-commit/pygrep-hooks
|
|
103
|
+
rev: v1.10.0
|
|
104
|
+
hooks:
|
|
105
|
+
- id: python-no-eval
|
|
106
|
+
- id: python-use-type-annotations
|
|
107
|
+
- id: python-check-blanket-noqa
|
|
108
|
+
- id: rst-backticks
|
|
109
|
+
- id: rst-directive-colons
|
|
110
|
+
- id: rst-inline-touching-normal
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
|
|
3
|
+
sphinx:
|
|
4
|
+
builder: html
|
|
5
|
+
configuration: docs/source/conf.py
|
|
6
|
+
fail_on_warning: true
|
|
7
|
+
|
|
8
|
+
formats:
|
|
9
|
+
- htmlzip
|
|
10
|
+
- pdf
|
|
11
|
+
|
|
12
|
+
build:
|
|
13
|
+
os: ubuntu-22.04
|
|
14
|
+
tools:
|
|
15
|
+
python: 3.10
|
|
16
|
+
|
|
17
|
+
python:
|
|
18
|
+
install:
|
|
19
|
+
- method: pip
|
|
20
|
+
path: .
|
|
21
|
+
extra_requirements:
|
|
22
|
+
- docs
|