Compare commits

...

372 Commits

Author SHA1 Message Date
GitHub Action
8b7512c8d8 Release version 0.52.0 2025-11-28 23:39:09 +00:00
Jose Diaz-Gonzalez
995b7ede6c Merge pull request #454 from Iamrodos/http-451
Skip DMCA'd repos which return a 451 response
2025-11-28 18:38:32 -05:00
Rodos
7840528fe2 Skip DMCA'd repos which return a 451 response
Log a warning and the link to the DMCA notice. Continue backing up
other repositories instead of crashing.

Closes #163
2025-11-29 09:52:02 +11:00
Jose Diaz-Gonzalez
6fb0d86977 Merge pull request #453 from josegonzalez/dependabot/pip/python-packages-42260fba7a
chore(deps): bump restructuredtext-lint from 1.4.0 to 2.0.2 in the python-packages group
2025-11-24 15:07:08 -05:00
dependabot[bot]
9f6b401171 chore(deps): bump restructuredtext-lint in the python-packages group
Bumps the python-packages group with 1 update: [restructuredtext-lint](https://github.com/twolfson/restructuredtext-lint).


Updates `restructuredtext-lint` from 1.4.0 to 2.0.2
- [Changelog](https://github.com/twolfson/restructuredtext-lint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/twolfson/restructuredtext-lint/compare/1.4.0...2.0.2)

---
updated-dependencies:
- dependency-name: restructuredtext-lint
  dependency-version: 2.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 14:58:52 +00:00
Jose Diaz-Gonzalez
bf638f7aea Merge pull request #452 from josegonzalez/dependabot/github_actions/actions/checkout-6
chore(deps): bump actions/checkout from 5 to 6
2025-11-24 04:42:52 -05:00
dependabot[bot]
c3855a94f1 chore(deps): bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 04:09:25 +00:00
Jose Diaz-Gonzalez
c3f4bfde0d Merge pull request #451 from josegonzalez/dependabot/pip/python-packages-63544ef561
chore(deps): bump the python-packages group with 3 updates
2025-11-18 11:44:02 -05:00
dependabot[bot]
d3edef0622 chore(deps): bump the python-packages group with 3 updates
Bumps the python-packages group with 3 updates: [click](https://github.com/pallets/click), [pytest](https://github.com/pytest-dev/pytest) and [keyring](https://github.com/jaraco/keyring).


Updates `click` from 8.3.0 to 8.3.1
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.3.0...8.3.1)

Updates `pytest` from 8.3.3 to 9.0.1
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.3...9.0.1)

Updates `keyring` from 25.6.0 to 25.7.0
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v25.6.0...v25.7.0)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: pytest
  dependency-version: 9.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: keyring
  dependency-version: 25.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 13:24:06 +00:00
GitHub Action
9ef496efad Release version 0.51.3 2025-11-18 06:55:36 +00:00
Jose Diaz-Gonzalez
42bfe6f79d Merge pull request #450 from Iamrodos/test/add-pagination-tests
test: Add pagination tests for cursor and page-based Link headers
2025-11-18 01:54:54 -05:00
Rodos
5af522a348 test: Add pagination tests for cursor and page-based Link headers 2025-11-17 17:14:29 +11:00
Jose Diaz-Gonzalez
6dfba7a783 Merge pull request #449 from 0x2b3bfa0/patch-1
Use cursor based pagination
2025-11-17 00:31:25 -05:00
Helio Machado
7551829677 Use cursor based pagination 2025-11-17 02:09:29 +01:00
GitHub Action
72d35a9b94 Release version 0.51.2 2025-11-16 23:55:36 +00:00
Jose Diaz-Gonzalez
3eae9d78ed Merge pull request #447 from Iamrodos/master
fix: Improve CA certificate detection with fallback chain
2025-11-16 18:54:58 -05:00
Rodos
90ba839c7d fix: Improve CA certificate detection with fallback chain
The previous implementation incorrectly assumed empty get_ca_certs()
meant broken SSL, causing false failures in GitHub Codespaces and other
directory-based cert systems where certificates exist but aren't pre-loaded.
It would then attempt to import certifi as a workaround, but certifi wasn't
listed in requirements.txt, causing the fallback to fail with ImportError
even though the system certificates would have worked fine.

This commit replaces the naive check with a layered fallback approach that
checks multiple certificate sources. First it checks for pre-loaded system
certs (file-based systems). Then it verifies system cert paths exist
(directory-based systems like Ubuntu/Debian/Codespaces). Finally it attempts
to use certifi as an optional fallback only if needed.

This approach eliminates hard dependencies (certifi is now optional), works
in GitHub Codespaces without any setup, and fails gracefully with clear hints
for resolution when SSL is actually broken rather than failing with
ModuleNotFoundError.

Fixes #444
2025-11-16 16:33:10 +11:00
GitHub Action
1ec0820936 Release version 0.51.1 2025-11-16 02:01:39 +00:00
Jose Diaz-Gonzalez
ca463e5cd4 Merge pull request #446 from josegonzalez/dependabot/pip/python-packages-4ff811fbf7
chore(deps): bump certifi from 2025.10.5 to 2025.11.12 in the python-packages group
2025-11-15 21:01:01 -05:00
Jose Diaz-Gonzalez
1750d0eff1 Merge pull request #448 from Iamrodos/fix/attachment-duplicate-downloads
fix: Prevent duplicate attachment downloads (with tests)
2025-11-15 21:00:00 -05:00
Rodos
e4d1c78993 test: Add pytest infrastructure and attachment tests
In making my last fix to attachments, I found it challenging not
having tests to ensure there was no regression.

Added pytest with minimal setup and isolated configuration. Created
a separate test workflow to keep tests isolated from linting.

Tests cover the key elements of the attachment logic:
- URL extraction from issue bodies
- Filename extraction from different URL types
- Filename collision resolution
- Manifest duplicate prevention
2025-11-14 10:28:30 +11:00
Rodos
7a9455db88 fix: Prevent duplicate attachment downloads
Fixes bug where attachments were downloaded multiple times with
incremented filenames (file.mov, file_1.mov, file_2.mov) when
running backups without --skip-existing flag.

I should not have used the --skip-existing flag for attachments,
it did not do what I thought it did.

The correct approach is to always use the manifest to guide what
has already been downloaded and what now needs to be done.
2025-11-14 10:28:30 +11:00
dependabot[bot]
a98ff7f23d chore(deps): bump certifi in the python-packages group
Bumps the python-packages group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2025.10.5 to 2025.11.12
- [Commits](https://github.com/certifi/python-certifi/compare/2025.10.05...2025.11.12)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.11.12
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-12 13:11:06 +00:00
Jose Diaz-Gonzalez
7b78f06a68 Merge pull request #445 from josegonzalez/dependabot/pip/python-packages-499fb03faa
chore(deps): bump black from 25.9.0 to 25.11.0 in the python-packages group
2025-11-10 12:45:25 -05:00
dependabot[bot]
56db3ff0e8 chore(deps): bump black in the python-packages group
Bumps the python-packages group with 1 update: [black](https://github.com/psf/black).


Updates `black` from 25.9.0 to 25.11.0
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/25.9.0...25.11.0)

---
updated-dependencies:
- dependency-name: black
  dependency-version: 25.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 13:59:47 +00:00
Jose Diaz-Gonzalez
5c9c20f6ee Merge pull request #443 from josegonzalez/dependabot/pip/python-packages-7fb8ba35da
chore(deps): bump docutils from 0.22.2 to 0.22.3 in the python-packages group
2025-11-07 15:56:55 -05:00
dependabot[bot]
c8c585cbb5 chore(deps): bump docutils in the python-packages group
Bumps the python-packages group with 1 update: [docutils](https://github.com/rtfd/recommonmark).


Updates `docutils` from 0.22.2 to 0.22.3
- [Changelog](https://github.com/readthedocs/recommonmark/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rtfd/recommonmark/commits)

---
updated-dependencies:
- dependency-name: docutils
  dependency-version: 0.22.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 13:09:51 +00:00
GitHub Action
e7880bb056 Release version 0.51.0 2025-11-06 02:11:08 +00:00
Jose Diaz-Gonzalez
18e3bd574a Merge pull request #439 from Iamrodos/master
feat: Add attachment download support for issues and pull requests
2025-11-05 21:10:03 -05:00
Rodos
1ed3d66777 refactor: Add atomic writes for attachment files and manifests 2025-11-06 12:42:57 +11:00
Rodos
a194fa48ce feat: Add attachment download support for issues and pull requests
Adds new --attachments flag that downloads user-uploaded files from
issue and PR bodies and comments. Key features:

- Determines attachment URLs
- Tracks downloads in manifest.json with metadata
- Supports --skip-existing to avoid re-downloading
- Handles filename collisions with counter suffix
- Smart retry logic for transient vs permanent failures
- Uses Content-Disposition for correct file extensions
2025-11-06 12:42:57 +11:00
Jose Diaz-Gonzalez
8f859be355 Merge pull request #441 from Iamrodos/feat/python-version-requirements-clean
chore: Enforce Python 3.8+ requirement and add multi-version CI testing
2025-11-05 20:25:47 -05:00
rodos
80e00d31d9 Merge branch 'master' into feat/python-version-requirements-clean 2025-11-06 10:01:22 +11:00
Jose Diaz-Gonzalez
32202656ba Merge pull request #442 from Iamrodos/feat/drop-python-3.8-3.9-support
chore: Drop support for Python 3.8 and 3.9 (EOL)
2025-11-05 17:45:40 -05:00
Rodos
875e31819a feat: Drop support for Python 3.8 and 3.9 (EOL)
Both Python 3.8 and 3.9 have reached end-of-life:
- Python 3.8: EOL October 7, 2024
- Python 3.9: EOL October 31, 2025

Changes:
- Add python_requires=">=3.10" to setup.py
- Remove Python 3.8 and 3.9 from classifiers
- Add Python 3.13 and 3.14 to classifiers
- Update README to document Python 3.10+ requirement
2025-11-04 13:53:41 +11:00
Rodos
73dc75ab95 fix: Remove Python 3.8 and 3.9 from CI matrix
3.8 and 3.9 are failing because the pinned dependencies don't support them:
- autopep8==2.3.2 needs Python 3.9+
- bleach==6.3.0 needs Python 3.10+

Both are EOL now anyway (3.8 in Oct 2024, 3.9 in Oct 2025).

Just fixing CI to test 3.10-3.14 for now. Will do a separate PR to formally
drop 3.8/3.9 support with python_requires and README updates.
2025-11-04 13:30:42 +11:00
Rodos
cd23dd1a16 feat: Enforce Python 3.8+ requirement and add multi-version CI testing
- Add python_requires=">=3.8" to setup.py to enforce minimum version at install time
- Update README to explicitly document Python 3.8+ requirement
- Add CI matrix to test lint/build on Python 3.8-3.14 (7 versions)
- Aligns with actual usage patterns (~99% of downloads on Python 3.8+)
- Prevents future PRs from inadvertently using incompatible syntax

This change protects users by preventing installation on unsupported Python
versions and ensures contributors can see version requirements clearly.
2025-11-04 10:47:13 +11:00
Jose Diaz-Gonzalez
d244de1952 Merge pull request #438 from josegonzalez/dependabot/pip/python-packages-7355fe9fde
chore(deps): bump bleach from 6.2.0 to 6.3.0 in the python-packages group
2025-10-28 16:51:18 -04:00
dependabot[bot]
4dae43c58e chore(deps): bump bleach in the python-packages group
Bumps the python-packages group with 1 update: [bleach](https://github.com/mozilla/bleach).


Updates `bleach` from 6.2.0 to 6.3.0
- [Changelog](https://github.com/mozilla/bleach/blob/main/CHANGES)
- [Commits](https://github.com/mozilla/bleach/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: bleach
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 13:11:27 +00:00
Jose Diaz-Gonzalez
b018a91fb4 Merge pull request #437 from josegonzalez/dependabot/pip/python-packages-9224e307fb
chore(deps): bump charset-normalizer from 3.4.3 to 3.4.4 in the python-packages group
2025-10-14 17:22:22 -04:00
dependabot[bot]
759ec58beb chore(deps): bump charset-normalizer in the python-packages group
Bumps the python-packages group with 1 update: [charset-normalizer](https://github.com/jawah/charset_normalizer).


Updates `charset-normalizer` from 3.4.3 to 3.4.4
- [Release notes](https://github.com/jawah/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.3...3.4.4)

---
updated-dependencies:
- dependency-name: charset-normalizer
  dependency-version: 3.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 13:10:22 +00:00
Jose Diaz-Gonzalez
b43c998b65 Merge pull request #436 from josegonzalez/dependabot/pip/python-packages-df716dda22
chore(deps): bump idna from 3.10 to 3.11 in the python-packages group
2025-10-13 18:09:50 -04:00
dependabot[bot]
38b4a2c106 chore(deps): bump idna from 3.10 to 3.11 in the python-packages group
Bumps the python-packages group with 1 update: [idna](https://github.com/kjd/idna).


Updates `idna` from 3.10 to 3.11
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.10...v3.11)

---
updated-dependencies:
- dependency-name: idna
  dependency-version: '3.11'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 13:42:50 +00:00
Jose Diaz-Gonzalez
6210ec3845 Merge pull request #435 from josegonzalez/dependabot/pip/python-packages-7695ffecbf
chore(deps): bump the python-packages group across 1 directory with 2 updates
2025-10-12 17:29:47 -04:00
dependabot[bot]
90396d2bdf chore(deps): bump the python-packages group across 1 directory with 2 updates
Bumps the python-packages group with 2 updates in the / directory: [platformdirs](https://github.com/tox-dev/platformdirs) and [rich](https://github.com/Textualize/rich).


Updates `platformdirs` from 4.4.0 to 4.5.0
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/CHANGES.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.4.0...4.5.0)

Updates `rich` from 14.1.0 to 14.2.0
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v14.1.0...v14.2.0)

---
updated-dependencies:
- dependency-name: platformdirs
  dependency-version: 4.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: rich
  dependency-version: 14.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 13:09:42 +00:00
Jose Diaz-Gonzalez
aa35e883b0 Merge pull request #433 from josegonzalez/dependabot/pip/python-packages-a446e2f58d
chore(deps): bump the python-packages group with 3 updates
2025-10-07 14:05:20 -04:00
dependabot[bot]
963ed3e6f6 chore(deps): bump the python-packages group with 3 updates
Bumps the python-packages group with 3 updates: [certifi](https://github.com/certifi/python-certifi), [click](https://github.com/pallets/click) and [markdown-it-py](https://github.com/executablebooks/markdown-it-py).


Updates `certifi` from 2025.8.3 to 2025.10.5
- [Commits](https://github.com/certifi/python-certifi/compare/2025.08.03...2025.10.05)

Updates `click` from 8.1.8 to 8.3.0
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.1.8...8.3.0)

Updates `markdown-it-py` from 3.0.0 to 4.0.0
- [Release notes](https://github.com/executablebooks/markdown-it-py/releases)
- [Changelog](https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.10.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: click
  dependency-version: 8.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: markdown-it-py
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 13:53:31 +00:00
Jose Diaz-Gonzalez
b710547fdc Merge pull request #432 from josegonzalez/dependabot/pip/python-packages-ba4e83c9d8
chore(deps): bump docutils from 0.22.1 to 0.22.2 in the python-packages group
2025-09-22 21:18:39 -04:00
dependabot[bot]
64b5667a16 chore(deps): bump docutils in the python-packages group
Bumps the python-packages group with 1 update: [docutils](https://github.com/rtfd/recommonmark).


Updates `docutils` from 0.22.1 to 0.22.2
- [Changelog](https://github.com/readthedocs/recommonmark/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rtfd/recommonmark/commits)

---
updated-dependencies:
- dependency-name: docutils
  dependency-version: 0.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-22 13:12:10 +00:00
Jose Diaz-Gonzalez
b0c8cfe059 Merge pull request #431 from josegonzalez/dependabot/pip/python-packages-ecd2129f1c
chore(deps): bump the python-packages group across 1 directory with 2 updates
2025-09-19 23:26:26 -04:00
dependabot[bot]
5bedaf825f chore(deps): bump the python-packages group across 1 directory with 2 updates
Bumps the python-packages group with 2 updates in the / directory: [black](https://github.com/psf/black) and [docutils](https://github.com/rtfd/recommonmark).


Updates `black` from 25.1.0 to 25.9.0
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/25.1.0...25.9.0)

Updates `docutils` from 0.22 to 0.22.1
- [Changelog](https://github.com/readthedocs/recommonmark/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rtfd/recommonmark/commits)

---
updated-dependencies:
- dependency-name: black
  dependency-version: 25.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: docutils
  dependency-version: 0.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-19 13:09:40 +00:00
Jose Diaz-Gonzalez
9d28d9c2b0 Update feature.yaml 2025-09-11 16:34:50 -04:00
Jose Diaz-Gonzalez
eb756d665c Delete .github/ISSUE_TEMPLATE.md 2025-09-11 16:34:18 -04:00
Jose Diaz-Gonzalez
3d5f61aa22 Create feature.yaml 2025-09-11 16:33:49 -04:00
Jose Diaz-Gonzalez
d6bf031bf7 Delete .github/ISSUE_TEMPLATE/bug_report.md 2025-09-11 16:32:32 -04:00
Jose Diaz-Gonzalez
85ab54e514 Update issue templates 2025-09-11 16:31:38 -04:00
Jose Diaz-Gonzalez
df4d751be2 Rename bug.md to bug.yaml 2025-09-11 16:30:46 -04:00
Jose Diaz-Gonzalez
03c660724d chore: create bug template 2025-09-11 16:30:10 -04:00
Jose Diaz-Gonzalez
39848e650c chore: Rename PULL_REQUEST.md to .github/PULL_REQUEST.md 2025-09-11 16:27:23 -04:00
Jose Diaz-Gonzalez
12ac519e9c chore: Rename ISSUE_TEMPLATE.md to .github/ISSUE_TEMPLATE.md 2025-09-11 16:26:53 -04:00
Jose Diaz-Gonzalez
9e25473151 Merge pull request #428 from josegonzalez/dependabot/github_actions/actions/setup-python-6
chore(deps): bump actions/setup-python from 5 to 6
2025-09-08 00:20:12 -04:00
dependabot[bot]
d3079bfb74 chore(deps): bump actions/setup-python from 5 to 6
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 04:10:35 +00:00
Jose Diaz-Gonzalez
3b9ff1ac14 Merge pull request #427 from josegonzalez/dependabot/pip/python-packages-bc0667daba
chore(deps): bump twine from 6.1.0 to 6.2.0 in the python-packages group
2025-09-05 15:00:30 -04:00
dependabot[bot]
268a989b09 chore(deps): bump twine from 6.1.0 to 6.2.0 in the python-packages group
Bumps the python-packages group with 1 update: [twine](https://github.com/pypa/twine).


Updates `twine` from 6.1.0 to 6.2.0
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/6.1.0...6.2.0)

---
updated-dependencies:
- dependency-name: twine
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-05 13:09:08 +00:00
Jose Diaz-Gonzalez
45a3b87892 Merge pull request #426 from josegonzalez/dependabot/pip/python-packages-177133f34b
chore(deps): bump more-itertools from 10.7.0 to 10.8.0 in the python-packages group
2025-09-03 21:22:11 -04:00
dependabot[bot]
1c465f4d35 chore(deps): bump more-itertools in the python-packages group
Bumps the python-packages group with 1 update: [more-itertools](https://github.com/more-itertools/more-itertools).


Updates `more-itertools` from 10.7.0 to 10.8.0
- [Release notes](https://github.com/more-itertools/more-itertools/releases)
- [Commits](https://github.com/more-itertools/more-itertools/compare/v10.7.0...v10.8.0)

---
updated-dependencies:
- dependency-name: more-itertools
  dependency-version: 10.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-03 23:43:31 +00:00
Jose Diaz-Gonzalez
3ad9b02b26 Merge pull request #425 from josegonzalez/dependabot/pip/python-packages-c9f8c21b21
chore(deps): bump platformdirs from 4.3.8 to 4.4.0 in the python-packages group
2025-09-03 00:16:58 -04:00
dependabot[bot]
8bfad9b5b7 chore(deps): bump platformdirs in the python-packages group
Bumps the python-packages group with 1 update: [platformdirs](https://github.com/tox-dev/platformdirs).


Updates `platformdirs` from 4.3.8 to 4.4.0
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/CHANGES.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.3.8...4.4.0)

---
updated-dependencies:
- dependency-name: platformdirs
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-27 20:52:18 +00:00
Jose Diaz-Gonzalez
985d79c1bc Merge pull request #423 from josegonzalez/dependabot/github_actions/actions/checkout-5
chore(deps): bump actions/checkout from 4 to 5
2025-08-22 02:59:12 -04:00
Jose Diaz-Gonzalez
7d1b7f20ef Merge pull request #424 from josegonzalez/dependabot/pip/python-packages-23f06ca20f
chore(deps): bump requests from 2.32.4 to 2.32.5 in the python-packages group
2025-08-22 02:59:04 -04:00
dependabot[bot]
d3b67f884a chore(deps): bump requests in the python-packages group
Bumps the python-packages group with 1 update: [requests](https://github.com/psf/requests).


Updates `requests` from 2.32.4 to 2.32.5
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.4...v2.32.5)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 20:54:47 +00:00
dependabot[bot]
65749bfde4 chore(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 06:33:46 +00:00
Jose Diaz-Gonzalez
aeeb0eb9d7 Merge pull request #422 from mhajder/chore/dockerfile
chore: update Dockerfile
2025-08-15 16:57:21 -04:00
Mateusz Hajder
f027760ac5 chore: update Dockerfile to use Python 3.12 and improve dependency installation 2025-08-15 08:47:02 +02:00
Jose Diaz-Gonzalez
a9e48f8c4e Merge pull request #421 from josegonzalez/dependabot/pip/python-packages-cf9d3ddef5
chore(deps): bump the python-packages group with 2 updates
2025-08-12 11:46:49 -04:00
dependabot[bot]
338d5a956b chore(deps): bump the python-packages group with 2 updates
Bumps the python-packages group with 2 updates: [certifi](https://github.com/certifi/python-certifi) and [charset-normalizer](https://github.com/jawah/charset_normalizer).


Updates `certifi` from 2025.7.14 to 2025.8.3
- [Commits](https://github.com/certifi/python-certifi/compare/2025.07.14...2025.08.03)

Updates `charset-normalizer` from 3.4.2 to 3.4.3
- [Release notes](https://github.com/jawah/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.8.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: charset-normalizer
  dependency-version: 3.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-11 20:51:37 +00:00
GitHub Action
5f07157c9b Release version 0.50.3 2025-08-08 20:41:53 +00:00
Jose Diaz-Gonzalez
87f5b76c52 Merge pull request #418 from KJ7LNW/improve-single-request-handling
Fix -R flag to allow backups of repositories not owned by user
2025-08-08 16:41:04 -04:00
Jose Diaz-Gonzalez
27eb009e34 Merge pull request #420 from josegonzalez/dependabot/pip/python-packages-475cb4b62c
chore(deps): bump the python-packages group across 1 directory with 3 updates
2025-08-08 16:31:07 -04:00
dependabot[bot]
82c1fc3086 chore(deps): bump the python-packages group across 1 directory with 3 updates
Bumps the python-packages group with 3 updates in the / directory: [certifi](https://github.com/certifi/python-certifi), [docutils](https://github.com/rtfd/recommonmark) and [rich](https://github.com/Textualize/rich).


Updates `certifi` from 2025.7.9 to 2025.7.14
- [Commits](https://github.com/certifi/python-certifi/compare/2025.07.09...2025.07.14)

Updates `docutils` from 0.21.2 to 0.22
- [Changelog](https://github.com/readthedocs/recommonmark/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rtfd/recommonmark/commits)

Updates `rich` from 14.0.0 to 14.1.0
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v14.0.0...v14.1.0)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.7.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: docutils
  dependency-version: '0.22'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: rich
  dependency-version: 14.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 13:49:49 +00:00
Eric Wheeler
a4f15b06d9 Revert "Add conditional check for git checkout in development path"
This reverts commit 1bad563e3f.
2025-07-25 11:47:08 -07:00
Jose Diaz-Gonzalez
aa217774ff Merge pull request #416 from josegonzalez/dependabot/pip/python-packages-7aac243b1b
chore(deps): bump certifi from 2025.6.15 to 2025.7.9 in the python-packages group
2025-07-25 04:23:42 -04:00
Eric Wheeler
d820dd994d Fix -R flag to allow backups of repositories not owned by user
Previously, using -R flag would show zero issues/PRs for repositories
not owned by the primary user due to incorrect pagination parameters
being added to single repository API calls.

- Remove pagination parameters for single repository requests
- Support owner/repo format in -R flag (e.g., -R owner/repo-name)
- Skip filtering when specific repository is requested
- Fix URL construction for requests without query parameters

This enables backing up any repository, not just those owned by the
primary user specified in -u flag.
2025-07-19 17:28:52 -07:00
Eric Wheeler
1bad563e3f Add conditional check for git checkout in development path
Only insert development path into sys.path when running from a git checkout
(when ../.git exists). This makes the script more robust by only using the
development tree when available and falling back to installed package otherwise.
2025-07-19 17:17:58 -07:00
dependabot[bot]
175ac19be6 chore(deps): bump certifi in the python-packages group
Bumps the python-packages group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2025.6.15 to 2025.7.9
- [Commits](https://github.com/certifi/python-certifi/compare/2025.06.15...2025.07.09)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.7.9
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 13:55:16 +00:00
Jose Diaz-Gonzalez
773ccecb8c Merge pull request #414 from josegonzalez/dependabot/pip/urllib3-2.5.0
chore(deps): bump urllib3 from 2.4.0 to 2.5.0
2025-06-30 17:12:11 -04:00
Jose Diaz-Gonzalez
e27b5a8ee3 Merge pull request #415 from josegonzalez/dependabot/pip/python-packages-44e0af0409
chore(deps): bump the python-packages group with 5 updates
2025-06-30 17:12:04 -04:00
dependabot[bot]
fb8945fc09 chore(deps): bump the python-packages group with 5 updates
Bumps the python-packages group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |
| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.13.0` | `2.14.0` |
| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.3.2` | `3.4.0` |
| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |
| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.5.0` |


Updates `flake8` from 7.2.0 to 7.3.0
- [Commits](https://github.com/pycqa/flake8/compare/7.2.0...7.3.0)

Updates `pycodestyle` from 2.13.0 to 2.14.0
- [Release notes](https://github.com/PyCQA/pycodestyle/releases)
- [Changelog](https://github.com/PyCQA/pycodestyle/blob/main/CHANGES.txt)
- [Commits](https://github.com/PyCQA/pycodestyle/compare/2.13.0...2.14.0)

Updates `pyflakes` from 3.3.2 to 3.4.0
- [Changelog](https://github.com/PyCQA/pyflakes/blob/main/NEWS.rst)
- [Commits](https://github.com/PyCQA/pyflakes/compare/3.3.2...3.4.0)

Updates `pygments` from 2.19.1 to 2.19.2
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.19.1...2.19.2)

Updates `urllib3` from 2.4.0 to 2.5.0
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.4.0...2.5.0)

---
updated-dependencies:
- dependency-name: flake8
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pycodestyle
  dependency-version: 2.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pyflakes
  dependency-version: 3.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pygments
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: urllib3
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 14:34:26 +00:00
dependabot[bot]
7333458ee4 chore(deps): bump urllib3 from 2.4.0 to 2.5.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.4.0...2.5.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.5.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-19 05:26:53 +00:00
GitHub Action
cf8b4c6b45 Release version 0.50.2 2025-06-16 20:32:34 +00:00
Jose Diaz-Gonzalez
cabf8a770a Merge pull request #413 from josegonzalez/dependabot/pip/python-packages-08188f9f6a
chore(deps): bump certifi from 2025.4.26 to 2025.6.15 in the python-packages group
2025-06-16 16:32:05 -04:00
dependabot[bot]
7e0f7d1930 chore(deps): bump certifi in the python-packages group
Bumps the python-packages group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2025.4.26 to 2025.6.15
- [Commits](https://github.com/certifi/python-certifi/compare/2025.04.26...2025.06.15)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.6.15
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 15:11:13 +00:00
Jose Diaz-Gonzalez
a9bdd6feb7 Merge pull request #411 from josegonzalez/dependabot/pip/requests-2.32.4
chore(deps): bump requests from 2.32.3 to 2.32.4
2025-06-10 22:25:08 -04:00
Jose Diaz-Gonzalez
fe16d2421c Merge pull request #412 from josegonzalez/dependabot/pip/python-packages-f450b9cd60
chore(deps): bump the python-packages group across 1 directory with 2 updates
2025-06-10 22:25:03 -04:00
dependabot[bot]
16b5b304e7 chore(deps): bump the python-packages group across 1 directory with 2 updates
Bumps the python-packages group with 2 updates in the / directory: [requests](https://github.com/psf/requests) and [zipp](https://github.com/jaraco/zipp).


Updates `requests` from 2.32.3 to 2.32.4
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)

Updates `zipp` from 3.22.0 to 3.23.0
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.22.0...v3.23.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: zipp
  dependency-version: 3.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 13:11:08 +00:00
dependabot[bot]
8f58ef6229 chore(deps): bump requests from 2.32.3 to 2.32.4
Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 08:54:47 +00:00
Jose Diaz-Gonzalez
51cf429dc2 Merge pull request #409 from josegonzalez/dependabot/pip/python-packages-6926a94a36
chore(deps): bump the python-packages group with 2 updates
2025-06-01 15:53:52 -04:00
dependabot[bot]
53714612d4 chore(deps): bump the python-packages group with 2 updates
Bumps the python-packages group with 2 updates: [setuptools](https://github.com/pypa/setuptools) and [zipp](https://github.com/jaraco/zipp).


Updates `setuptools` from 80.8.0 to 80.9.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.8.0...v80.9.0)

Updates `zipp` from 3.21.0 to 3.22.0
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.21.0...v3.22.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: zipp
  dependency-version: 3.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-27 13:29:45 +00:00
Jose Diaz-Gonzalez
f6e241833d Merge pull request #408 from josegonzalez/dependabot/pip/python-packages-589c654b00
chore(deps): bump setuptools from 80.4.0 to 80.8.0 in the python-packages group
2025-05-24 01:39:52 -04:00
dependabot[bot]
17dc265385 chore(deps): bump setuptools in the python-packages group
Bumps the python-packages group with 1 update: [setuptools](https://github.com/pypa/setuptools).


Updates `setuptools` from 80.4.0 to 80.8.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.4.0...v80.8.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 13:34:39 +00:00
Jose Diaz-Gonzalez
704d31cbf7 Merge pull request #407 from josegonzalez/dependabot/pip/python-packages-d8d2bd0177
chore(deps): bump setuptools from 80.3.1 to 80.4.0 in the python-packages group
2025-05-22 00:53:04 -04:00
dependabot[bot]
db69f5a5e8 chore(deps): bump setuptools in the python-packages group
Bumps the python-packages group with 1 update: [setuptools](https://github.com/pypa/setuptools).


Updates `setuptools` from 80.3.1 to 80.4.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.3.1...v80.4.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 80.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 13:49:22 +00:00
Jose Diaz-Gonzalez
ba367a927c Merge pull request #406 from josegonzalez/dependabot/pip/python-packages-c1d5622181
chore(deps): bump the python-packages group across 1 directory with 3 updates
2025-05-09 21:38:06 -04:00
dependabot[bot]
e8bf4257da chore(deps): bump the python-packages group across 1 directory with 3 updates
Bumps the python-packages group with 3 updates in the / directory: [charset-normalizer](https://github.com/jawah/charset_normalizer), [platformdirs](https://github.com/tox-dev/platformdirs) and [setuptools](https://github.com/pypa/setuptools).


Updates `charset-normalizer` from 3.4.1 to 3.4.2
- [Release notes](https://github.com/jawah/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.2)

Updates `platformdirs` from 4.3.7 to 4.3.8
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/CHANGES.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.3.7...4.3.8)

Updates `setuptools` from 80.0.0 to 80.3.1
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v80.0.0...v80.3.1)

---
updated-dependencies:
- dependency-name: charset-normalizer
  dependency-version: 3.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: platformdirs
  dependency-version: 4.3.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-version: 80.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 13:14:31 +00:00
Jose Diaz-Gonzalez
8eab8d02ce Merge pull request #403 from josegonzalez/dependabot/pip/python-packages-656f6e80f1
chore(deps): bump the python-packages group across 1 directory with 6 updates
2025-04-28 22:48:47 -04:00
dependabot[bot]
e4bd19acea chore(deps): bump the python-packages group across 1 directory with 6 updates
Bumps the python-packages group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.4.26` |
| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.6.1` | `8.7.0` |
| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.6.0` | `10.7.0` |
| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |
| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |
| [setuptools](https://github.com/pypa/setuptools) | `78.1.0` | `80.0.0` |



Updates `certifi` from 2025.1.31 to 2025.4.26
- [Commits](https://github.com/certifi/python-certifi/compare/2025.01.31...2025.04.26)

Updates `importlib-metadata` from 8.6.1 to 8.7.0
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.6.1...v8.7.0)

Updates `more-itertools` from 10.6.0 to 10.7.0
- [Release notes](https://github.com/more-itertools/more-itertools/releases)
- [Commits](https://github.com/more-itertools/more-itertools/compare/v10.6.0...v10.7.0)

Updates `mypy-extensions` from 1.0.0 to 1.1.0
- [Commits](https://github.com/python/mypy_extensions/compare/1.0.0...1.1.0)

Updates `packaging` from 24.2 to 25.0
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/24.2...25.0)

Updates `setuptools` from 78.1.0 to 80.0.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v78.1.0...v80.0.0)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.4.26
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: importlib-metadata
  dependency-version: 8.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: more-itertools
  dependency-version: 10.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: mypy-extensions
  dependency-version: 1.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: packaging
  dependency-version: '25.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-version: 80.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 16:02:18 +00:00
Jose Diaz-Gonzalez
176cadfcc4 Merge pull request #400 from josegonzalez/josegonzalez-patch-1
chore: bump runs-on image from ubuntu-20.04 to ubuntu-24.04
2025-04-17 21:08:59 -04:00
Jose Diaz-Gonzalez
b49544270e chore: bump runs-on image from ubuntu-20.04 to ubuntu-24.04 2025-04-17 21:07:10 -04:00
Jose Diaz-Gonzalez
27fdd358fb Merge pull request #398 from josegonzalez/dependabot/pip/python-packages-1cc5cc50b9
chore(deps): bump urllib3 from 2.3.0 to 2.4.0 in the python-packages group
2025-04-15 03:50:24 -04:00
dependabot[bot]
abe6192ee9 chore(deps): bump urllib3 in the python-packages group
Bumps the python-packages group with 1 update: [urllib3](https://github.com/urllib3/urllib3).


Updates `urllib3` from 2.3.0 to 2.4.0
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.3.0...2.4.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 13:20:02 +00:00
Jose Diaz-Gonzalez
0a2d6ed2ca Merge pull request #397 from josegonzalez/dependabot/pip/python-packages-f1ceb9e3bd
chore(deps): bump the python-packages group with 5 updates
2025-03-31 10:41:18 -04:00
dependabot[bot]
1a8eb7a906 chore(deps): bump the python-packages group with 5 updates
Bumps the python-packages group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [flake8](https://github.com/pycqa/flake8) | `7.1.2` | `7.2.0` |
| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.12.1` | `2.13.0` |
| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.2.0` | `3.3.2` |
| [rich](https://github.com/Textualize/rich) | `13.9.4` | `14.0.0` |
| [setuptools](https://github.com/pypa/setuptools) | `77.0.3` | `78.1.0` |


Updates `flake8` from 7.1.2 to 7.2.0
- [Commits](https://github.com/pycqa/flake8/compare/7.1.2...7.2.0)

Updates `pycodestyle` from 2.12.1 to 2.13.0
- [Release notes](https://github.com/PyCQA/pycodestyle/releases)
- [Changelog](https://github.com/PyCQA/pycodestyle/blob/main/CHANGES.txt)
- [Commits](https://github.com/PyCQA/pycodestyle/compare/2.12.1...2.13.0)

Updates `pyflakes` from 3.2.0 to 3.3.2
- [Changelog](https://github.com/PyCQA/pyflakes/blob/main/NEWS.rst)
- [Commits](https://github.com/PyCQA/pyflakes/compare/3.2.0...3.3.2)

Updates `rich` from 13.9.4 to 14.0.0
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.9.4...v14.0.0)

Updates `setuptools` from 77.0.3 to 78.1.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v77.0.3...v78.1.0)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pycodestyle
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pyflakes
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 14:05:39 +00:00
Jose Diaz-Gonzalez
40e6e34908 Merge pull request #396 from josegonzalez/dependabot/pip/python-packages-eb8a4f4352
chore(deps): bump setuptools from 77.0.1 to 77.0.3 in the python-packages group
2025-03-30 13:44:23 -04:00
dependabot[bot]
2885fc6822 chore(deps): bump setuptools in the python-packages group
Bumps the python-packages group with 1 update: [setuptools](https://github.com/pypa/setuptools).


Updates `setuptools` from 77.0.1 to 77.0.3
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v77.0.1...v77.0.3)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 14:08:27 +00:00
Jose Diaz-Gonzalez
434b4bf4a0 Merge pull request #395 from josegonzalez/dependabot/pip/python-packages-e83eb3dff1
chore(deps): bump the python-packages group across 1 directory with 2 updates
2025-03-21 10:17:27 -04:00
dependabot[bot]
677f3d3287 chore(deps): bump the python-packages group across 1 directory with 2 updates
Bumps the python-packages group with 2 updates in the / directory: [platformdirs](https://github.com/tox-dev/platformdirs) and [setuptools](https://github.com/pypa/setuptools).


Updates `platformdirs` from 4.3.6 to 4.3.7
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/CHANGES.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.3.6...4.3.7)

Updates `setuptools` from 76.0.0 to 77.0.1
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v76.0.0...v77.0.1)

---
updated-dependencies:
- dependency-name: platformdirs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-20 13:19:29 +00:00
Jose Diaz-Gonzalez
9164f088b8 Merge pull request #393 from josegonzalez/dependabot/pip/python-packages-d24cf6dc33
chore(deps): bump setuptools from 75.8.2 to 76.0.0 in the python-packages group
2025-03-10 12:53:46 -05:00
dependabot[bot]
c1f9ea7b9b chore(deps): bump setuptools in the python-packages group
Bumps the python-packages group with 1 update: [setuptools](https://github.com/pypa/setuptools).


Updates `setuptools` from 75.8.2 to 76.0.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v75.8.2...v76.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 14:16:58 +00:00
GitHub Action
6d51d199c5 Release version 0.50.1 2025-03-06 01:26:22 +00:00
Jose Diaz-Gonzalez
2b555dc964 Merge pull request #392 from josegonzalez/dependabot/pip/python-packages-765541620a
chore(deps): bump setuptools from 75.8.1 to 75.8.2 in the python-packages group
2025-03-05 19:25:51 -06:00
dependabot[bot]
b818e9b95f chore(deps): bump setuptools in the python-packages group
Bumps the python-packages group with 1 update: [setuptools](https://github.com/pypa/setuptools).


Updates `setuptools` from 75.8.1 to 75.8.2
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v75.8.1...v75.8.2)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-27 14:03:39 +00:00
Jose Diaz-Gonzalez
4157cab89f Merge pull request #391 from josegonzalez/dependabot/pip/python-packages-e86fae66cc
chore(deps): bump setuptools from 75.8.0 to 75.8.1 in the python-packages group
2025-02-26 15:43:24 -06:00
dependabot[bot]
07fd47a596 chore(deps): bump setuptools in the python-packages group
Bumps the python-packages group with 1 update: [setuptools](https://github.com/pypa/setuptools).


Updates `setuptools` from 75.8.0 to 75.8.1
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v75.8.0...v75.8.1)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 13:19:50 +00:00
GitHub Action
5530a1badd Release version 0.50.0 2025-02-22 03:15:44 +00:00
Jose Diaz-Gonzalez
90ac4999ea Merge pull request #390 from josegonzalez/josegonzalez-patch-1
chore: fix inline comments
2025-02-21 21:15:10 -06:00
Jose Diaz-Gonzalez
f4dfc57ba2 Merge pull request #389 from josegonzalez/dependabot/pip/python-packages-8d5090f3fa
chore(deps): bump the python-packages group across 1 directory with 2 updates
2025-02-21 21:14:54 -06:00
Jose Diaz-Gonzalez
3d354beb24 chore: fix inline comments 2025-02-21 22:14:37 -05:00
dependabot[bot]
552c1051e3 chore(deps): bump the python-packages group across 1 directory with 2 updates
Bumps the python-packages group with 2 updates in the / directory: [flake8](https://github.com/pycqa/flake8) and [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk).


Updates `flake8` from 7.1.1 to 7.1.2
- [Commits](https://github.com/pycqa/flake8/compare/7.1.1...7.1.2)

Updates `pkginfo` from 1.12.0 to 1.12.1.2

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: pkginfo
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-19 17:28:50 +00:00
GitHub Action
c92f5ef0f2 Release version 0.49.0 2025-02-01 07:00:56 +00:00
Jose Diaz-Gonzalez
095b712a77 Merge pull request #383 from ipdgroup/master
Implementing incremental by files, safer version of incremental backup.
2025-02-01 01:00:21 -06:00
Jose Diaz-Gonzalez
3a4aebbcfe Merge pull request #387 from josegonzalez/dependabot/pip/python-packages-2b45c188e6
chore(deps): bump the python-packages group across 1 directory with 7 updates
2025-02-01 00:59:43 -06:00
dependabot[bot]
e75021db80 chore(deps): bump the python-packages group across 1 directory with 7 updates
Bumps the python-packages group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [autopep8](https://github.com/hhatto/autopep8) | `2.3.1` | `2.3.2` |
| [black](https://github.com/psf/black) | `24.10.0` | `25.1.0` |
| [certifi](https://github.com/certifi/python-certifi) | `2024.12.14` | `2025.1.31` |
| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.5.0` | `8.6.1` |
| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.5.0` | `10.6.0` |
| [setuptools](https://github.com/pypa/setuptools) | `75.7.0` | `75.8.0` |
| [twine](https://github.com/pypa/twine) | `6.0.1` | `6.1.0` |



Updates `autopep8` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](https://github.com/hhatto/autopep8/compare/v2.3.1...v2.3.2)

Updates `black` from 24.10.0 to 25.1.0
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.10.0...25.1.0)

Updates `certifi` from 2024.12.14 to 2025.1.31
- [Commits](https://github.com/certifi/python-certifi/compare/2024.12.14...2025.01.31)

Updates `importlib-metadata` from 8.5.0 to 8.6.1
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.5.0...v8.6.1)

Updates `more-itertools` from 10.5.0 to 10.6.0
- [Release notes](https://github.com/more-itertools/more-itertools/releases)
- [Commits](https://github.com/more-itertools/more-itertools/compare/v10.5.0...v10.6.0)

Updates `setuptools` from 75.7.0 to 75.8.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v75.7.0...v75.8.0)

Updates `twine` from 6.0.1 to 6.1.0
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/6.0.1...6.1.0)

---
updated-dependencies:
- dependency-name: autopep8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: more-itertools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: twine
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-31 14:01:24 +00:00
Honza M
0f34ecb77d Merge pull request #1 from ipdgroup/incremental_by_files
Implementing incremental by files, safer version of incremental backup.
2025-01-17 08:36:04 +01:00
Honza Maly
20e4d385a5 Convert timestamp to string, although maybe the other way around would be better ... 2025-01-17 07:28:49 +00:00
Honza Maly
a49322cf7d Implementing incremental by files, safer version of incremental backup. 2025-01-16 21:00:02 +00:00
Jose Diaz-Gonzalez
332c9b586a Merge pull request #380 from josegonzalez/dependabot/pip/python-packages-03d453cb2c
chore(deps): bump the python-packages group across 1 directory with 2 updates
2025-01-07 16:10:31 -05:00
dependabot[bot]
09bf9275d1 chore(deps): bump the python-packages group across 1 directory with 2 updates
Bumps the python-packages group with 2 updates in the / directory: [pygments](https://github.com/pygments/pygments) and [setuptools](https://github.com/pypa/setuptools).


Updates `pygments` from 2.18.0 to 2.19.1
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.18.0...2.19.1)

Updates `setuptools` from 75.6.0 to 75.7.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v75.6.0...v75.7.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-07 13:13:41 +00:00
GitHub Action
fcf21f7a2e Release version 0.48.0 2025-01-04 01:15:18 +00:00
Jose Diaz-Gonzalez
36812a332b Merge pull request #377 from josegonzalez/fix-lint-errors
chore: reformat file to fix lint issues
2025-01-03 20:08:30 -05:00
Jose Diaz-Gonzalez
0e0197149e chore: reformat file to fix lint issues 2025-01-03 20:07:40 -05:00
Jose Diaz-Gonzalez
eb545c1c2f Merge pull request #372 from josegonzalez/dependabot/pip/python-packages-7fa4717ed3
chore(deps): bump the python-packages group across 1 directory with 4 updates
2025-01-03 20:06:03 -05:00
Jose Diaz-Gonzalez
2e72797984 Merge pull request #376 from adamsmd/patch-2
Update required permissions listed in README.rst
2025-01-03 20:05:43 -05:00
dependabot[bot]
68fe29d1e1 chore(deps): bump the python-packages group across 1 directory with 4 updates
Bumps the python-packages group with 4 updates in the / directory: [charset-normalizer](https://github.com/jawah/charset_normalizer), [click](https://github.com/pallets/click), [keyring](https://github.com/jaraco/keyring) and [urllib3](https://github.com/urllib3/urllib3).


Updates `charset-normalizer` from 3.4.0 to 3.4.1
- [Release notes](https://github.com/jawah/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.0...3.4.1)

Updates `click` from 8.1.7 to 8.1.8
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.1.7...8.1.8)

Updates `keyring` from 25.5.0 to 25.6.0
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v25.5.0...v25.6.0)

Updates `urllib3` from 2.2.3 to 2.3.0
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.3...2.3.0)

---
updated-dependencies:
- dependency-name: charset-normalizer
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: click
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: keyring
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 13:34:44 +00:00
Michael D. Adams
3dc3691770 Update required permissions listed in README.rst
Removed unused permissions, and changed names to those currently used by GitHub.

- code: renamed to contents as used by GitHub
- commit statuses: removed because not used by github-backup
- pages: removed because not used by github-backup
- repository hooks: renamed to webhooks as used by GitHub
2024-12-29 09:02:34 +00:00
Jose Diaz-Gonzalez
5b0608ce14 Merge pull request #374 from adamsmd/patch-1
Fix typo README.rst: --starred-gists that should be --gists
2024-12-29 00:40:26 -05:00
Jose Diaz-Gonzalez
1ce8455860 Merge pull request #375 from ethanwhite/docs-fix
Remove fixed release issue from known blocking errors
2024-12-29 00:40:13 -05:00
Ethan White
dcb89a5c33 Remove fixed release issue from known blocking errors
The issue with --release producing errors documented in #209 (the linked issue) and #234 appears to have been fixed in #257.

This change removes the associated warning from the README.
2024-12-28 06:41:54 -05:00
Michael D. Adams
b0bfffde1a Fix typo README.rst: --starred-gists that should be --gists 2024-12-28 10:14:37 +00:00
Jose Diaz-Gonzalez
0f3aaa6fc2 Merge pull request #369 from josegonzalez/dependabot/pip/python-packages-d3e2c9eccf
chore(deps): bump certifi from 2024.8.30 to 2024.12.14 in the python-packages group
2024-12-16 22:55:40 -05:00
dependabot[bot]
c39ec9c549 chore(deps): bump certifi in the python-packages group
Bumps the python-packages group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2024.8.30 to 2024.12.14
- [Commits](https://github.com/certifi/python-certifi/compare/2024.08.30...2024.12.14)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 13:14:44 +00:00
GitHub Action
e981ce3ff9 Release version 0.47.0 2024-12-09 14:46:36 +00:00
Jose Diaz-Gonzalez
22d8f8e649 Merge pull request #344 from xloem/https_ctx
Detect empty HTTPS contexts.
2024-12-09 09:46:04 -05:00
Jose Diaz-Gonzalez
aaefac1a66 Merge pull request #368 from josegonzalez/dependabot/pip/python-packages-ab5dbe44f3
chore(deps): bump six from 1.16.0 to 1.17.0 in the python-packages group
2024-12-09 09:45:24 -05:00
dependabot[bot]
cb66375e1e chore(deps): bump six from 1.16.0 to 1.17.0 in the python-packages group
Bumps the python-packages group with 1 update: [six](https://github.com/benjaminp/six).


Updates `six` from 1.16.0 to 1.17.0
- [Changelog](https://github.com/benjaminp/six/blob/main/CHANGES)
- [Commits](https://github.com/benjaminp/six/compare/1.16.0...1.17.0)

---
updated-dependencies:
- dependency-name: six
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-05 13:24:14 +00:00
Jose Diaz-Gonzalez
24d7aa83df Merge pull request #367 from josegonzalez/dependabot/pip/python-packages-4e3b0321c8
chore(deps): bump the python-packages group across 1 directory with 20 updates
2024-12-03 20:08:49 -05:00
dependabot[bot]
c8c71239c7 chore(deps): bump the python-packages group across 1 directory with 20 updates
Bumps the python-packages group with 20 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [black](https://github.com/psf/black) | `24.4.2` | `24.10.0` |
| [bleach](https://github.com/mozilla/bleach) | `6.1.0` | `6.2.0` |
| [certifi](https://github.com/certifi/python-certifi) | `2024.7.4` | `2024.8.30` |
| [charset-normalizer](https://github.com/Ousret/charset_normalizer) | `3.3.2` | `3.4.0` |
| [flake8](https://github.com/pycqa/flake8) | `7.1.0` | `7.1.1` |
| [idna](https://github.com/kjd/idna) | `3.7` | `3.10` |
| [importlib-metadata](https://github.com/python/importlib_metadata) | `7.2.1` | `8.5.0` |
| [keyring](https://github.com/jaraco/keyring) | `25.2.1` | `25.5.0` |
| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.3.0` | `10.5.0` |
| [packaging](https://github.com/pypa/packaging) | `24.1` | `24.2` |
| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.11.1` | `1.12.0` |
| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.2` | `4.3.6` |
| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.12.0` | `2.12.1` |
| [readme-renderer](https://github.com/pypa/readme_renderer) | `43.0` | `44.0` |
| [rich](https://github.com/Textualize/rich) | `13.7.1` | `13.9.4` |
| [setuptools](https://github.com/pypa/setuptools) | `70.1.1` | `75.6.0` |
| [tqdm](https://github.com/tqdm/tqdm) | `4.66.4` | `4.67.1` |
| [twine](https://github.com/pypa/twine) | `5.1.0` | `6.0.1` |
| [urllib3](https://github.com/urllib3/urllib3) | `2.2.2` | `2.2.3` |
| [zipp](https://github.com/jaraco/zipp) | `3.19.2` | `3.21.0` |



Updates `black` from 24.4.2 to 24.10.0
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.4.2...24.10.0)

Updates `bleach` from 6.1.0 to 6.2.0
- [Changelog](https://github.com/mozilla/bleach/blob/main/CHANGES)
- [Commits](https://github.com/mozilla/bleach/compare/v6.1.0...v6.2.0)

Updates `certifi` from 2024.7.4 to 2024.8.30
- [Commits](https://github.com/certifi/python-certifi/compare/2024.07.04...2024.08.30)

Updates `charset-normalizer` from 3.3.2 to 3.4.0
- [Release notes](https://github.com/Ousret/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Ousret/charset_normalizer/compare/3.3.2...3.4.0)

Updates `flake8` from 7.1.0 to 7.1.1
- [Commits](https://github.com/pycqa/flake8/compare/7.1.0...7.1.1)

Updates `idna` from 3.7 to 3.10
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.7...v3.10)

Updates `importlib-metadata` from 7.2.1 to 8.5.0
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.2.1...v8.5.0)

Updates `keyring` from 25.2.1 to 25.5.0
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v25.2.1...v25.5.0)

Updates `more-itertools` from 10.3.0 to 10.5.0
- [Release notes](https://github.com/more-itertools/more-itertools/releases)
- [Commits](https://github.com/more-itertools/more-itertools/compare/v10.3.0...v10.5.0)

Updates `packaging` from 24.1 to 24.2
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/24.1...24.2)

Updates `pkginfo` from 1.11.1 to 1.12.0

Updates `platformdirs` from 4.2.2 to 4.3.6
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/CHANGES.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.2.2...4.3.6)

Updates `pycodestyle` from 2.12.0 to 2.12.1
- [Release notes](https://github.com/PyCQA/pycodestyle/releases)
- [Changelog](https://github.com/PyCQA/pycodestyle/blob/main/CHANGES.txt)
- [Commits](https://github.com/PyCQA/pycodestyle/compare/2.12.0...2.12.1)

Updates `readme-renderer` from 43.0 to 44.0
- [Release notes](https://github.com/pypa/readme_renderer/releases)
- [Changelog](https://github.com/pypa/readme_renderer/blob/main/CHANGES.rst)
- [Commits](https://github.com/pypa/readme_renderer/compare/43.0...44.0)

Updates `rich` from 13.7.1 to 13.9.4
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.7.1...v13.9.4)

Updates `setuptools` from 70.1.1 to 75.6.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v70.1.1...v75.6.0)

Updates `tqdm` from 4.66.4 to 4.67.1
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.66.4...v4.67.1)

Updates `twine` from 5.1.0 to 6.0.1
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/5.1.0...6.0.1)

Updates `urllib3` from 2.2.2 to 2.2.3
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.2...2.2.3)

Updates `zipp` from 3.19.2 to 3.21.0
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.19.2...v3.21.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: bleach
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: charset-normalizer
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: flake8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: idna
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: keyring
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: more-itertools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: packaging
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pkginfo
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: platformdirs
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pycodestyle
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: readme-renderer
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: tqdm
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: twine
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 17:57:51 +00:00
Jose Diaz-Gonzalez
6ca8030648 Merge pull request #345 from xloem/exclude_keyerror
KeyError fix with gists
2024-09-22 00:01:25 -04:00
John Doe
53f6650f61 KeyError fix with gists 2024-09-21 21:38:23 -04:00
John Doe
548a2ec405 Detect empty HTTPS contexts.
Some users are relying solely on the certifi package to provide their CA certs, as requests does this by default.

This patch detects this situation and emits a clear warning as well as importing certifi to work around the situation..

Fixes #162 .
2024-09-21 20:50:54 -04:00
Jose Diaz-Gonzalez
871d69b99a Merge pull request #341 from jwilk-forks/spelling
Fix punctuation in README
2024-09-14 03:49:40 -04:00
Jakub Wilk
ca3c4fa64b Fix punctuation in README 2024-09-13 07:26:02 +02:00
GitHub Action
0846e7d8e5 Release version 0.46.0 2024-09-11 18:51:53 +00:00
Jose Diaz-Gonzalez
503444359d Merge pull request #338 from SkySoft-ATM/fetch_commits_when_lfs
git fetch is required even when using lfs
2024-09-11 14:51:16 -04:00
Louis Parisot
04c70ce277 git fetch is required even when using lfs 2024-09-10 11:00:17 +02:00
Jose Diaz-Gonzalez
e774c70275 Merge pull request #321 from jarltotland/master
fix: do not double encode auth when retrieving release assets
2024-07-29 04:27:47 -04:00
Jarl Totland
ba46cb87e8 fix: do not double encode auth when retrieving release assets 2024-07-24 10:43:30 +02:00
Jose Diaz-Gonzalez
883407f8ca Merge pull request #318 from albertyw/upgrade-workflow
Upgrade github workflow ubuntu containers to newest LTS
2024-07-21 22:36:16 -04:00
Albert Wang
aacb252e57 Upgrade github workflow ubuntu containers to newest LTS 2024-07-21 16:46:20 -07:00
Jose Diaz-Gonzalez
2623167110 Merge pull request #313 from josegonzalez/dependabot/pip/certifi-2024.7.4
chore(deps): bump certifi from 2024.6.2 to 2024.7.4
2024-07-07 22:58:30 -04:00
dependabot[bot]
f6ad296730 chore(deps): bump certifi from 2024.6.2 to 2024.7.4
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.6.2 to 2024.7.4.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.06.02...2024.07.04)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-06 02:24:22 +00:00
Jose Diaz-Gonzalez
c8eef58d76 Merge pull request #306 from josegonzalez/dependabot/github_actions/docker/build-push-action-6
chore(deps): bump docker/build-push-action from 5 to 6
2024-06-25 15:53:19 -04:00
Jose Diaz-Gonzalez
8eb154a540 Merge pull request #308 from josegonzalez/dependabot/pip/python-packages-ac21675027
chore(deps): bump the python-packages group across 1 directory with 3 updates
2024-06-25 15:53:12 -04:00
dependabot[bot]
2e9db92b68 chore(deps): bump the python-packages group across 1 directory with 3 updates
Bumps the python-packages group with 3 updates in the / directory: [autopep8](https://github.com/hhatto/autopep8), [importlib-metadata](https://github.com/python/importlib_metadata) and [setuptools](https://github.com/pypa/setuptools).


Updates `autopep8` from 2.3.0 to 2.3.1
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](https://github.com/hhatto/autopep8/compare/v2.3.0...v2.3.1)

Updates `importlib-metadata` from 7.2.0 to 7.2.1
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.2.0...v7.2.1)

Updates `setuptools` from 70.1.0 to 70.1.1
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v70.1.0...v70.1.1)

---
updated-dependencies:
- dependency-name: autopep8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-25 13:47:45 +00:00
dependabot[bot]
09bbcfc7b1 chore(deps): bump docker/build-push-action from 5 to 6
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 04:42:05 +00:00
Jose Diaz-Gonzalez
4e14f5a2c6 Merge pull request #305 from josegonzalez/dependabot/pip/python-packages-df32069703
chore(deps): bump the python-packages group across 1 directory with 2 updates
2024-06-22 14:51:38 -04:00
dependabot[bot]
b474e1654f chore(deps): bump the python-packages group across 1 directory with 2 updates
Bumps the python-packages group with 2 updates in the / directory: [importlib-metadata](https://github.com/python/importlib_metadata) and [setuptools](https://github.com/pypa/setuptools).


Updates `importlib-metadata` from 7.1.0 to 7.2.0
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.1.0...v7.2.0)

Updates `setuptools` from 70.0.0 to 70.1.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v70.0.0...v70.1.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-21 13:40:17 +00:00
Jose Diaz-Gonzalez
71d70265cc Merge pull request #302 from josegonzalez/dependabot/pip/python-packages-7eea12767a
chore(deps): bump the python-packages group with 3 updates
2024-06-18 00:09:16 -04:00
Jose Diaz-Gonzalez
2309b0cb76 Merge pull request #303 from josegonzalez/dependabot/pip/urllib3-2.2.2
chore(deps): bump urllib3 from 2.2.1 to 2.2.2
2024-06-18 00:08:52 -04:00
dependabot[bot]
1e14a4eecd chore(deps): bump urllib3 from 2.2.1 to 2.2.2
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.1...2.2.2)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 22:53:08 +00:00
dependabot[bot]
56d3fd75bf chore(deps): bump the python-packages group with 3 updates
Bumps the python-packages group with 3 updates: [autopep8](https://github.com/hhatto/autopep8), [flake8](https://github.com/pycqa/flake8) and [pycodestyle](https://github.com/PyCQA/pycodestyle).


Updates `autopep8` from 2.2.0 to 2.3.0
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](https://github.com/hhatto/autopep8/compare/v2.2.0...v2.3.0)

Updates `flake8` from 7.0.0 to 7.1.0
- [Commits](https://github.com/pycqa/flake8/compare/7.0.0...7.1.0)

Updates `pycodestyle` from 2.11.1 to 2.12.0
- [Release notes](https://github.com/PyCQA/pycodestyle/releases)
- [Changelog](https://github.com/PyCQA/pycodestyle/blob/main/CHANGES.txt)
- [Commits](https://github.com/PyCQA/pycodestyle/compare/2.11.1...2.12.0)

---
updated-dependencies:
- dependency-name: autopep8
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: flake8
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pycodestyle
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 13:17:30 +00:00
Jose Diaz-Gonzalez
c3e470b34e Merge pull request #301 from josegonzalez/dependabot/pip/python-packages-137ec8b56e
chore(deps): bump the python-packages group across 1 directory with 7 updates
2024-06-12 00:20:27 -04:00
dependabot[bot]
4948178a63 chore(deps): bump the python-packages group across 1 directory with 7 updates
Bumps the python-packages group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [autopep8](https://github.com/hhatto/autopep8) | `2.1.1` | `2.2.0` |
| [certifi](https://github.com/certifi/python-certifi) | `2024.2.2` | `2024.6.2` |
| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.2.0` | `10.3.0` |
| [packaging](https://github.com/pypa/packaging) | `24.0` | `24.1` |
| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.10.0` | `1.11.1` |
| [requests](https://github.com/psf/requests) | `2.32.2` | `2.32.3` |
| [zipp](https://github.com/jaraco/zipp) | `3.18.2` | `3.19.2` |



Updates `autopep8` from 2.1.1 to 2.2.0
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](https://github.com/hhatto/autopep8/compare/v2.1.1...v2.2.0)

Updates `certifi` from 2024.2.2 to 2024.6.2
- [Commits](https://github.com/certifi/python-certifi/compare/2024.02.02...2024.06.02)

Updates `more-itertools` from 10.2.0 to 10.3.0
- [Release notes](https://github.com/more-itertools/more-itertools/releases)
- [Commits](https://github.com/more-itertools/more-itertools/compare/v10.2.0...v10.3.0)

Updates `packaging` from 24.0 to 24.1
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/24.0...24.1)

Updates `pkginfo` from 1.10.0 to 1.11.1

Updates `requests` from 2.32.2 to 2.32.3
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.2...v2.32.3)

Updates `zipp` from 3.18.2 to 3.19.2
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.18.2...v3.19.2)

---
updated-dependencies:
- dependency-name: autopep8
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: more-itertools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: packaging
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pkginfo
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 13:17:57 +00:00
Jose Diaz-Gonzalez
88de80c480 Merge pull request #289 from josegonzalez/dependabot/pip/python-packages-9f7b9a2b70
chore(deps): bump the python-packages group across 1 directory with 10 updates
2024-05-25 04:57:13 -04:00
dependabot[bot]
15eeff7879 ---
updated-dependencies:
- dependency-name: autopep8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: docutils
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: keyring
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: platformdirs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: tqdm
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: twine
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-25 08:53:59 +00:00
Jose Diaz-Gonzalez
4bb71db468 Merge pull request #293 from josegonzalez/josegonzalez-patch-1
chore: update python version in release workflow
2024-05-25 04:50:51 -04:00
Jose Diaz-Gonzalez
17af2cbc28 chore: update python version in release workflow 2024-05-25 04:47:35 -04:00
Jose Diaz-Gonzalez
e0d66daadb Merge pull request #292 from josegonzalez/josegonzalez-patch-1
chore: update python version used in linting
2024-05-25 04:47:13 -04:00
Jose Diaz-Gonzalez
1971c97b5d fix: add now missing setuptools 2024-05-25 04:45:38 -04:00
Jose Diaz-Gonzalez
b1b3df692d chore: update python version used in linting 2024-05-25 04:32:21 -04:00
Jose Diaz-Gonzalez
8d7311efbf Merge pull request #291 from josegonzalez/josegonzalez-patch-1
chore: drop unsupported python versions and add supported ones
2024-05-25 04:32:03 -04:00
Jose Diaz-Gonzalez
8449d6352d chore: drop unsupported python versions and add supported ones 2024-05-25 04:24:32 -04:00
Jose Diaz-Gonzalez
d8c228c83e Merge pull request #287 from josegonzalez/dependabot/pip/requests-2.32.0
chore(deps): bump requests from 2.31.0 to 2.32.0
2024-05-25 04:02:43 -04:00
dependabot[bot]
4a134ae2ec ---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 05:42:42 +00:00
Jose Diaz-Gonzalez
5cb7c6ad2e Merge pull request #282 from josegonzalez/dependabot/pip/tqdm-4.66.3
chore(deps): bump tqdm from 4.66.2 to 4.66.3
2024-05-05 10:38:16 -04:00
GitHub Action
75382afeae Release version 0.45.2 2024-05-04 18:36:39 +00:00
dependabot[bot]
f325daa875 chore(deps): bump tqdm from 4.66.2 to 4.66.3
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.66.2 to 4.66.3.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.66.2...v4.66.3)

---
updated-dependencies:
- dependency-name: tqdm
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-03 22:01:17 +00:00
Jose Diaz-Gonzalez
2cc34de2a3 Merge pull request #273 from josegonzalez/dependabot/pip/idna-3.7
chore(deps): bump idna from 3.6 to 3.7
2024-04-15 20:33:30 -04:00
dependabot[bot]
dea87873f9 chore(deps): bump idna from 3.6 to 3.7
Bumps [idna](https://github.com/kjd/idna) from 3.6 to 3.7.
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.6...v3.7)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 04:16:01 +00:00
Jose Diaz-Gonzalez
0288b5f553 Merge pull request #270 from josegonzalez/dependabot/pip/python-packages-30d09ca13e
chore(deps): bump the python-packages group with 1 update
2024-04-04 00:18:08 -04:00
dependabot[bot]
02a07d3f0d chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [keyring](https://github.com/jaraco/keyring).


Updates `keyring` from 25.0.0 to 25.1.0
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v25.0.0...v25.1.0)

---
updated-dependencies:
- dependency-name: keyring
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 13:34:48 +00:00
Jose Diaz-Gonzalez
24a7b1f885 Merge pull request #267 from josegonzalez/dependabot/pip/python-packages-b8e923a24a
chore(deps): bump the python-packages group with 1 update
2024-04-01 16:33:32 -04:00
dependabot[bot]
22fa2eb97e chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [jaraco-classes](https://github.com/jaraco/jaraco.classes).


Updates `jaraco-classes` from 3.3.1 to 3.4.0
- [Release notes](https://github.com/jaraco/jaraco.classes/releases)
- [Changelog](https://github.com/jaraco/jaraco.classes/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/jaraco.classes/compare/v3.3.1...v3.4.0)

---
updated-dependencies:
- dependency-name: jaraco-classes
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 13:13:51 +00:00
Jose Diaz-Gonzalez
cb147cf6d0 Merge pull request #266 from josegonzalez/dependabot/pip/python-packages-087e9c658d
chore(deps): bump the python-packages group with 1 update
2024-03-26 02:03:44 -04:00
dependabot[bot]
298724acfc chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [keyring](https://github.com/jaraco/keyring).


Updates `keyring` from 24.3.1 to 25.0.0
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v24.3.1...v25.0.0)

---
updated-dependencies:
- dependency-name: keyring
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 14:08:44 +00:00
Jose Diaz-Gonzalez
65d541f577 Merge pull request #265 from josegonzalez/dependabot/pip/python-packages-57a4e48c22
chore(deps): bump the python-packages group with 1 update
2024-03-23 21:29:34 -04:00
dependabot[bot]
8b08685678 chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [importlib-metadata](https://github.com/python/importlib_metadata).


Updates `importlib-metadata` from 7.0.2 to 7.1.0
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.2...v7.1.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-21 13:14:15 +00:00
Jose Diaz-Gonzalez
b18ba6de28 Merge pull request #264 from josegonzalez/dependabot/github_actions/actions/setup-python-5
chore(deps): bump actions/setup-python from 4 to 5
2024-03-18 16:01:20 -04:00
dependabot[bot]
358d1e3d3e chore(deps): bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 19:59:52 +00:00
Jose Diaz-Gonzalez
1cd04281e9 Merge pull request #263 from paranerd/master
Scheduled dependabot for GitHub Actions
2024-03-18 15:59:32 -04:00
paranerd
6630b2b82e Scheduled dependabot for GitHub Actions 2024-03-18 19:31:29 +01:00
Jose Diaz-Gonzalez
391f2ba305 Merge pull request #261 from josegonzalez/dependabot/pip/python-packages-43602f098d
chore(deps): bump the python-packages group with 2 updates
2024-03-18 13:50:15 -04:00
Jose Diaz-Gonzalez
1f0bf50381 Merge pull request #262 from paranerd/master
Fix authentication issue in Docker container
2024-03-18 13:50:08 -04:00
paranerd
eb44c735eb Added Docker info to README 2024-03-18 14:35:37 +01:00
dependabot[bot]
caff40e65b chore(deps): bump the python-packages group with 2 updates
Bumps the python-packages group with 2 updates: [autopep8](https://github.com/hhatto/autopep8) and [black](https://github.com/psf/black).


Updates `autopep8` from 2.0.4 to 2.1.0
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](https://github.com/hhatto/autopep8/compare/v2.0.4...v2.1.0)

Updates `black` from 24.2.0 to 24.3.0
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.2.0...24.3.0)

---
updated-dependencies:
- dependency-name: autopep8
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 13:35:12 +00:00
paranerd
bba39fb4c8 Disable credential persistance on checkout 2024-03-18 14:07:26 +01:00
paranerd
093db93994 Bumped actions versions to latest 2024-03-18 14:02:10 +01:00
GitHub Action
d835d47c17 Release version 0.45.1 2024-03-17 22:30:14 +00:00
Jose Diaz-Gonzalez
2cd9061c46 Merge pull request #257 from dale-primer-e/40-backing-up-releases-using-fine-grained-token-ends-with-an-error
234 Backing up releases using fine grained token ends with an error
2024-03-17 18:29:04 -04:00
Jose Diaz-Gonzalez
0cc50bc4cb Merge pull request #258 from josegonzalez/dependabot/pip/python-packages-1bc7570458
chore(deps): bump the python-packages group with 1 update
2024-03-16 14:05:08 -04:00
dependabot[bot]
436e8df0ac chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [zipp](https://github.com/jaraco/zipp).


Updates `zipp` from 3.18.0 to 3.18.1
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.18.0...v3.18.1)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-15 14:00:44 +00:00
dale-primer-e
9812988a4a Remove trailing whitespaces
That are triggering flake.
2024-03-15 08:27:09 +13:00
dale-primer-e
1eccebcb83 Fix error with as_app flag 2024-03-14 15:27:22 +13:00
dale-primer-e
122eb56aa1 Fix error downloading assets
When downloading assets using a fine grained token you will get a "can't
concat str to bytes" error. This is due to the fine grained token being
concatenated onto bytes in the line:

`request.add_header("Authorization", "Basic ".encode("ascii") + auth)`

This is better handled in the function `_construct_request` so I changed
the lines that construct the request in `download_file` to use the
function `_construct_request` and updated the function signature to
reflect that.
2024-03-14 15:02:49 +13:00
Jose Diaz-Gonzalez
a0fdae3314 Merge pull request #256 from josegonzalez/dependabot/pip/python-packages-7bf9c84fb1
chore(deps): bump the python-packages group with 1 update
2024-03-13 10:31:50 -04:00
dependabot[bot]
80fa92664c chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [zipp](https://github.com/jaraco/zipp).


Updates `zipp` from 3.17.0 to 3.18.0
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.17.0...v3.18.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-13 14:07:08 +00:00
Jose Diaz-Gonzalez
7b69394488 Merge pull request #255 from josegonzalez/dependabot/pip/python-packages-b7495dafca
chore(deps): bump the python-packages group with 2 updates
2024-03-11 23:14:07 -04:00
dependabot[bot]
d1d3d84d95 chore(deps): bump the python-packages group with 2 updates
Bumps the python-packages group with 2 updates: [importlib-metadata](https://github.com/python/importlib_metadata) and [packaging](https://github.com/pypa/packaging).


Updates `importlib-metadata` from 7.0.1 to 7.0.2
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.1...v7.0.2)

Updates `packaging` from 23.2 to 24.0
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/23.2...24.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: packaging
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 13:43:27 +00:00
Jose Diaz-Gonzalez
fff2aa4075 Merge pull request #253 from josegonzalez/dependabot/pip/python-packages-8501db5bed
chore(deps): bump the python-packages group with 2 updates
2024-03-05 00:14:53 -05:00
dependabot[bot]
8eba46d8a7 chore(deps): bump the python-packages group with 2 updates
Bumps the python-packages group with 2 updates: [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) and [rich](https://github.com/Textualize/rich).


Updates `pkginfo` from 1.9.6 to 1.10.0

Updates `rich` from 13.7.0 to 13.7.1
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.7.0...v13.7.1)

---
updated-dependencies:
- dependency-name: pkginfo
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 13:39:14 +00:00
Jose Diaz-Gonzalez
9dc3458dba Merge pull request #251 from josegonzalez/dependabot/pip/python-packages-5d78d04739
chore(deps): bump the python-packages group with 1 update
2024-02-28 12:46:27 -05:00
dependabot[bot]
e9d7692123 chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [keyring](https://github.com/jaraco/keyring).


Updates `keyring` from 24.3.0 to 24.3.1
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v24.3.0...v24.3.1)

---
updated-dependencies:
- dependency-name: keyring
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-28 13:43:08 +00:00
Jose Diaz-Gonzalez
a1ef61f87c Merge pull request #250 from josegonzalez/dependabot/pip/python-packages-b64df13e27
chore(deps): bump the python-packages group with 1 update
2024-02-27 11:09:25 -05:00
dependabot[bot]
6b62973997 chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [readme-renderer](https://github.com/pypa/readme_renderer).


Updates `readme-renderer` from 42.0 to 43.0
- [Release notes](https://github.com/pypa/readme_renderer/releases)
- [Changelog](https://github.com/pypa/readme_renderer/blob/main/CHANGES.rst)
- [Commits](https://github.com/pypa/readme_renderer/compare/42.0...43.0)

---
updated-dependencies:
- dependency-name: readme-renderer
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-27 14:05:42 +00:00
Jose Diaz-Gonzalez
b25af67898 Merge pull request #249 from josegonzalez/dependabot/pip/python-packages-ac51cbb969
chore(deps): bump the python-packages group with 1 update
2024-02-21 16:00:29 -05:00
dependabot[bot]
0380fb8e35 chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [urllib3](https://github.com/urllib3/urllib3).


Updates `urllib3` from 2.2.0 to 2.2.1
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.0...2.2.1)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 13:15:55 +00:00
Jose Diaz-Gonzalez
f62fe5e6c9 Merge pull request #248 from josegonzalez/dependabot/pip/python-packages-1f78fe719d
chore(deps): bump the python-packages group with 1 update
2024-02-14 00:15:51 -05:00
dependabot[bot]
c97598c914 chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [black](https://github.com/psf/black).


Updates `black` from 24.1.1 to 24.2.0
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.1.1...24.2.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-13 13:59:09 +00:00
Jose Diaz-Gonzalez
c488b0adf9 Merge pull request #247 from josegonzalez/dependabot/pip/python-packages-83fd33f513
chore(deps): bump the python-packages group with 2 updates
2024-02-12 17:28:46 -05:00
dependabot[bot]
888815c271 chore(deps): bump the python-packages group with 2 updates
Bumps the python-packages group with 2 updates: [tqdm](https://github.com/tqdm/tqdm) and [twine](https://github.com/pypa/twine).


Updates `tqdm` from 4.66.1 to 4.66.2
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.66.1...v4.66.2)

Updates `twine` from 4.0.2 to 5.0.0
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/4.0.2...5.0.0)

---
updated-dependencies:
- dependency-name: tqdm
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: twine
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-12 13:44:39 +00:00
Jose Diaz-Gonzalez
66e11aa532 Merge pull request #245 from josegonzalez/dependabot/pip/python-packages-2a4cc26f6d
chore(deps): bump the python-packages group with 1 update
2024-02-08 19:56:34 -05:00
dependabot[bot]
d1874c0bd9 chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [jaraco-classes](https://github.com/jaraco/jaraco.classes).


Updates `jaraco-classes` from 3.3.0 to 3.3.1
- [Release notes](https://github.com/jaraco/jaraco.classes/releases)
- [Changelog](https://github.com/jaraco/jaraco.classes/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/jaraco.classes/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: jaraco-classes
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 14:05:38 +00:00
Jose Diaz-Gonzalez
4c07bd1310 Merge pull request #242 from josegonzalez/dependabot/pip/python-packages-0117728348
chore(deps): bump the python-packages group with 1 update
2024-02-04 18:10:46 -05:00
dependabot[bot]
fd2d398025 chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2023.11.17 to 2024.2.2
- [Commits](https://github.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-02 13:26:36 +00:00
Jose Diaz-Gonzalez
53d2ceec10 Merge pull request #241 from josegonzalez/dependabot/pip/python-packages-8173d090d9
chore(deps): bump the python-packages group with 2 updates
2024-01-31 11:06:42 -05:00
dependabot[bot]
421a7ec62b chore(deps): bump the python-packages group with 2 updates
Bumps the python-packages group with 2 updates: [platformdirs](https://github.com/platformdirs/platformdirs) and [urllib3](https://github.com/urllib3/urllib3).


Updates `platformdirs` from 4.1.0 to 4.2.0
- [Release notes](https://github.com/platformdirs/platformdirs/releases)
- [Changelog](https://github.com/platformdirs/platformdirs/blob/main/CHANGES.rst)
- [Commits](https://github.com/platformdirs/platformdirs/compare/4.1.0...4.2.0)

Updates `urllib3` from 2.1.0 to 2.2.0
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.1.0...2.2.0)

---
updated-dependencies:
- dependency-name: platformdirs
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-31 14:16:30 +00:00
Jose Diaz-Gonzalez
ec43649bcd Merge pull request #240 from josegonzalez/dependabot/pip/python-packages-35d4ee13ea
chore(deps): bump the python-packages group with 1 update
2024-01-29 08:52:35 -05:00
dependabot[bot]
e869844dba chore(deps): bump the python-packages group with 1 update
Bumps the python-packages group with 1 update: [black](https://github.com/psf/black).


Updates `black` from 24.1.0 to 24.1.1
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.1.0...24.1.1)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 13:36:46 +00:00
GitHub Action
0857a37440 Release version 0.45.0 2024-01-29 12:52:57 +00:00
Jose Diaz-Gonzalez
585af4c4e3 Merge pull request #236 from BrOleg5/master
Add options to include certain number of latest release and skip prereleases
2024-01-29 07:51:35 -05:00
Jose Diaz-Gonzalez
41ec01d5cb Merge pull request #233 from 8cH9azbsFifZ/master
Docker Images
2024-01-29 07:51:29 -05:00
Jose Diaz-Gonzalez
7dc22358df Merge pull request #239 from josegonzalez/dependabot/pip/python-packages-1d7ddf90bb
chore(deps): bump the python-packages group with 6 updates
2024-01-29 07:50:21 -05:00
Jose Diaz-Gonzalez
b855bcabf6 Merge pull request #238 from mofe23/master
Fix 404 on hooks
2024-01-29 07:50:06 -05:00
dependabot[bot]
3c3262ed69 chore(deps): bump the python-packages group with 6 updates
Bumps the python-packages group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [black](https://github.com/psf/black) | `23.11.0` | `24.1.0` |
| [flake8](https://github.com/pycqa/flake8) | `6.1.0` | `7.0.0` |
| [importlib-metadata](https://github.com/python/importlib_metadata) | `7.0.0` | `7.0.1` |
| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.1.0` | `10.2.0` |
| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.11.2` | `0.12.1` |
| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.1.0` | `3.2.0` |


Updates `black` from 23.11.0 to 24.1.0
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.11.0...24.1.0)

Updates `flake8` from 6.1.0 to 7.0.0
- [Commits](https://github.com/pycqa/flake8/compare/6.1.0...7.0.0)

Updates `importlib-metadata` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.0...v7.0.1)

Updates `more-itertools` from 10.1.0 to 10.2.0
- [Release notes](https://github.com/more-itertools/more-itertools/releases)
- [Commits](https://github.com/more-itertools/more-itertools/compare/v10.1.0...v10.2.0)

Updates `pathspec` from 0.11.2 to 0.12.1
- [Release notes](https://github.com/cpburnz/python-pathspec/releases)
- [Changelog](https://github.com/cpburnz/python-pathspec/blob/master/CHANGES.rst)
- [Commits](https://github.com/cpburnz/python-pathspec/compare/v0.11.2...v0.12.1)

Updates `pyflakes` from 3.1.0 to 3.2.0
- [Changelog](https://github.com/PyCQA/pyflakes/blob/main/NEWS.rst)
- [Commits](https://github.com/PyCQA/pyflakes/compare/3.1.0...3.2.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: flake8
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: more-itertools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pathspec
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pyflakes
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-26 14:14:51 +00:00
Moritz Federspiel
42b836f623 fix: Catch 404s for non-existing hooks. Fixes #176
Explanation: Repositories where no webhooks are defined return 404 errors. This breaks further script execution.
2024-01-16 15:17:48 +01:00
BrOleg5
09f4168db6 Fix code style. 2024-01-05 20:46:02 +08:00
BrOleg5
3e9a4fa0d8 Update CLI help output in README.
Rename destination of latest-releases argument.
2024-01-05 20:35:37 +08:00
BrOleg5
ab18e96ea8 Add option to skip prerelease versions.
Replace release sorting by tag with release sorting by creation date.
2024-01-05 20:26:08 +08:00
BrOleg5
eb88def888 Add option to include certain number of the latest releases. 2024-01-02 12:54:06 +08:00
8cH9azbsFifZ
7fe6541291 auto docker build 2023-12-30 13:04:45 +01:00
8cH9azbsFifZ
c8b8b270f6 vs code 2023-12-30 13:01:46 +01:00
Jose Diaz-Gonzalez
a97f15b519 Merge pull request #229 from josegonzalez/dependabot/pip/python-packages-6492013e8e
chore(deps): bump the python-packages group with 15 updates
2023-12-09 13:30:28 -05:00
dependabot[bot]
500c97c60e chore(deps): bump the python-packages group with 15 updates
Bumps the python-packages group with 15 updates:

| Package | From | To |
| --- | --- | --- |
| [bleach](https://github.com/mozilla/bleach) | `6.0.0` | `6.1.0` |
| [certifi](https://github.com/certifi/python-certifi) | `2023.7.22` | `2023.11.17` |
| [charset-normalizer](https://github.com/Ousret/charset_normalizer) | `3.1.0` | `3.3.2` |
| [idna](https://github.com/kjd/idna) | `3.4` | `3.6` |
| [importlib-metadata](https://github.com/python/importlib_metadata) | `6.6.0` | `7.0.0` |
| [jaraco-classes](https://github.com/jaraco/jaraco.classes) | `3.2.3` | `3.3.0` |
| [keyring](https://github.com/jaraco/keyring) | `23.13.1` | `24.3.0` |
| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `2.2.0` | `3.0.0` |
| [more-itertools](https://github.com/more-itertools/more-itertools) | `9.1.0` | `10.1.0` |
| [pygments](https://github.com/pygments/pygments) | `2.15.1` | `2.17.2` |
| [readme-renderer](https://github.com/pypa/readme_renderer) | `37.3` | `42.0` |
| [rich](https://github.com/Textualize/rich) | `13.3.5` | `13.7.0` |
| [tqdm](https://github.com/tqdm/tqdm) | `4.65.0` | `4.66.1` |
| [urllib3](https://github.com/urllib3/urllib3) | `2.0.7` | `2.1.0` |
| [zipp](https://github.com/jaraco/zipp) | `3.15.0` | `3.17.0` |


Updates `bleach` from 6.0.0 to 6.1.0
- [Changelog](https://github.com/mozilla/bleach/blob/main/CHANGES)
- [Commits](https://github.com/mozilla/bleach/compare/v6.0.0...v6.1.0)

Updates `certifi` from 2023.7.22 to 2023.11.17
- [Commits](https://github.com/certifi/python-certifi/compare/2023.07.22...2023.11.17)

Updates `charset-normalizer` from 3.1.0 to 3.3.2
- [Release notes](https://github.com/Ousret/charset_normalizer/releases)
- [Changelog](https://github.com/Ousret/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Ousret/charset_normalizer/compare/3.1.0...3.3.2)

Updates `idna` from 3.4 to 3.6
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.4...v3.6)

Updates `importlib-metadata` from 6.6.0 to 7.0.0
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v6.6.0...v7.0.0)

Updates `jaraco-classes` from 3.2.3 to 3.3.0
- [Release notes](https://github.com/jaraco/jaraco.classes/releases)
- [Changelog](https://github.com/jaraco/jaraco.classes/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/jaraco.classes/compare/v3.2.3...v3.3.0)

Updates `keyring` from 23.13.1 to 24.3.0
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v23.13.1...v24.3.0)

Updates `markdown-it-py` from 2.2.0 to 3.0.0
- [Release notes](https://github.com/executablebooks/markdown-it-py/releases)
- [Changelog](https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/markdown-it-py/compare/v2.2.0...v3.0.0)

Updates `more-itertools` from 9.1.0 to 10.1.0
- [Release notes](https://github.com/more-itertools/more-itertools/releases)
- [Commits](https://github.com/more-itertools/more-itertools/compare/v9.1.0...v10.1.0)

Updates `pygments` from 2.15.1 to 2.17.2
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.15.1...2.17.2)

Updates `readme-renderer` from 37.3 to 42.0
- [Release notes](https://github.com/pypa/readme_renderer/releases)
- [Changelog](https://github.com/pypa/readme_renderer/blob/main/CHANGES.rst)
- [Commits](https://github.com/pypa/readme_renderer/compare/37.3...42.0)

Updates `rich` from 13.3.5 to 13.7.0
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.3.5...v13.7.0)

Updates `tqdm` from 4.65.0 to 4.66.1
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.65.0...v4.66.1)

Updates `urllib3` from 2.0.7 to 2.1.0
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.7...2.1.0)

Updates `zipp` from 3.15.0 to 3.17.0
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.15.0...v3.17.0)

---
updated-dependencies:
- dependency-name: bleach
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: charset-normalizer
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: idna
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: jaraco-classes
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: keyring
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: markdown-it-py
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: more-itertools
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: readme-renderer
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: tqdm
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-09 18:30:23 +00:00
Jose Diaz-Gonzalez
31a6e52a5e fix: ensure wheel is installed 2023-12-09 12:34:58 -05:00
Jose Diaz-Gonzalez
4c5187bcff chore: format python code 2023-12-09 12:31:33 -05:00
Jose Diaz-Gonzalez
2de69beffa chore: format yaml 2023-12-09 12:31:33 -05:00
Jose Diaz-Gonzalez
96592295e1 chore: update gitignore 2023-12-09 12:31:33 -05:00
Jose Diaz-Gonzalez
bd65c3d5d6 feat: add dependabot config to repository 2023-12-09 12:25:51 -05:00
GitHub Action
aaf45022cc Release version 0.44.1 2023-12-09 05:53:43 +00:00
Jose Diaz-Gonzalez
7cdf428e3a fix: use a deploy key to push tags so releases get auto-created 2023-12-09 00:52:00 -05:00
Jose Diaz-Gonzalez
cfb1f1368b Merge pull request #228 from josegonzalez/dependabot/pip/certifi-2023.7.22
chore(deps): bump certifi from 2023.5.7 to 2023.7.22
2023-12-09 00:45:27 -05:00
Jose Diaz-Gonzalez
4700a26d90 tests: run lint on pull requests 2023-12-09 00:45:20 -05:00
dependabot[bot]
f53f7d9b71 chore(deps): bump certifi from 2023.5.7 to 2023.7.22
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.5.7 to 2023.7.22.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-09 05:43:45 +00:00
Jose Diaz-Gonzalez
3b6aa060ba Merge pull request #227 from josegonzalez/dependabot/pip/urllib3-2.0.7
chore(deps): bump urllib3 from 2.0.2 to 2.0.7
2023-12-09 00:42:54 -05:00
Jose Diaz-Gonzalez
76ff7f3b0d chore: remove circleci as tests now run in github actions 2023-12-09 00:42:09 -05:00
Jose Diaz-Gonzalez
2615cab114 tests: install correct dependencies and rename job 2023-12-09 00:40:58 -05:00
Jose Diaz-Gonzalez
fda71b0467 tests: add lint github action workflow 2023-12-09 00:39:40 -05:00
Jose Diaz-Gonzalez
a9f82faa1c feat: install autopep8 2023-12-09 00:39:40 -05:00
Jose Diaz-Gonzalez
f17bf19776 Merge pull request #226 from josegonzalez/dependabot/pip/certifi-2023.7.22
chore(deps): bump certifi from 2023.5.7 to 2023.7.22
2023-12-09 00:31:43 -05:00
dependabot[bot]
54c81de3d7 chore(deps): bump urllib3 from 2.0.2 to 2.0.7
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.2 to 2.0.7.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.2...2.0.7)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-09 05:31:30 +00:00
dependabot[bot]
f2b4f566a1 chore(deps): bump certifi from 2023.5.7 to 2023.7.22
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.5.7 to 2023.7.22.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-09 05:31:23 +00:00
Jose Diaz-Gonzalez
2724f02b0a chore: reformat file and update flake8 2023-12-09 00:30:44 -05:00
GitHub Action
e0bf80a6aa Release version 0.44.0 2023-12-09 05:26:00 +00:00
Jose Diaz-Gonzalez
b60034a9d7 fix: do not use raw property in readme
This is disabled on pypi.
2023-12-09 00:25:28 -05:00
Jose Diaz-Gonzalez
878713a4e0 fix: validate release before committing and uploading it 2023-12-09 00:22:36 -05:00
Jose Diaz-Gonzalez
3b0c08cdc1 fix: correct lint issues and show errors on lint 2023-12-09 00:08:19 -05:00
Jose Diaz-Gonzalez
b52d9bfdc8 Merge pull request #215 from josegonzalez/dependabot/pip/certifi-2023.7.22
Bump certifi from 2023.5.7 to 2023.7.22
2023-12-09 00:04:48 -05:00
Jose Diaz-Gonzalez
336b8b746f Merge pull request #223 from Ondkloss/feature/auto-release
Added automatic release workflow, for use with GitHub Actions
2023-12-09 00:04:38 -05:00
Jose Diaz-Gonzalez
4e7d6f7497 Merge pull request #222 from pl4nty/patch-1
feat: create Dockerfile
2023-12-09 00:00:20 -05:00
Jose Diaz-Gonzalez
7d07cbbe4f Merge pull request #224 from hozza/master
more detailed README docs
2023-12-08 23:59:55 -05:00
Jose Diaz-Gonzalez
b80af2a4ca Merge pull request #221 from josegonzalez/dependabot/pip/urllib3-2.0.7
Bump urllib3 from 2.0.2 to 2.0.7
2023-12-08 23:59:20 -05:00
hozza
5dd0744ce0 fix rst html 2023-11-07 16:12:26 +00:00
hozza
81876a2bb3 add contributor section 2023-11-07 16:08:35 +00:00
hozza
a2b13c8109 fix readme wording and format 2023-11-07 16:08:00 +00:00
hozza
f63be3be24 fixed readme working and layout 2023-11-07 15:46:03 +00:00
hozza
9cf85b087f fix readme formatting, spelling and layout 2023-11-07 15:28:39 +00:00
hozza
f449d8bbe3 added details usage and examples
including gotchas, errors and development instructions.
2023-11-07 14:56:43 +00:00
hozza
7d03e4c9bb added verbose install instructions 2023-11-07 14:53:58 +00:00
Halvor Holsten Strand
4406ba7f07 Checkout everything. 2023-10-29 20:37:20 +01:00
Halvor Holsten Strand
febf380c57 Updated to latest Ubuntu LTS while keeping setup-python to stay put on Python 3.8. 2023-10-28 20:19:18 +02:00
Halvor Holsten Strand
f9b627c1e4 Added automatic release workflow, for use with GitHub Actions. 2023-10-28 08:33:58 +02:00
Tom Plant
f998943171 feat: create Dockerfile 2023-10-28 16:30:31 +11:00
dependabot[bot]
2bf8898545 Bump urllib3 from 2.0.2 to 2.0.7
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.2 to 2.0.7.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.2...2.0.7)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 20:24:18 +00:00
Jose Diaz-Gonzalez
dbc1619106 Merge pull request #218 from Ondkloss/fix/win32logger
Suggested modification to fix win32 logging failure
2023-10-09 20:38:38 -04:00
Jose Diaz-Gonzalez
ec210166f7 Merge pull request #219 from Ondkloss/feature/quiet_flag
Add support for quiet flag
2023-10-09 20:34:30 -04:00
Halvor Holsten Strand
ea74aa5094 Merge branch 'master' into feature/quiet_flag. 2023-10-09 12:07:24 +02:00
Halvor Holsten Strand
7437e3abb1 Merge pull request, while keeping -q --quiet flag.
Most changes were already included, only adjusted with black formatting.
2023-10-09 12:01:32 +02:00
Halvor Holsten Strand
6f3be3d0e8 Suggested modification to fix win32 logging failure, due to local variable scope.
Logger does not appear to have any utility within "logging_subprocess".
2023-10-07 19:02:52 +02:00
Jose Diaz-Gonzalez
d7ba57075e Merge pull request #216 from Ondkloss/feature/fine_grained
Add support for fine-grained tokens (continued)
2023-10-07 00:04:17 -04:00
Halvor Holsten Strand
b277baa6ea Update github_backup.py 2023-10-02 09:14:40 +02:00
Halvor Holsten Strand
15de769d67 Simplified one if/elif scenario.
Extracted file reading of another if/elif scenario.
2023-10-01 22:22:15 +02:00
Halvor Holsten Strand
a9d35c0fd5 Ran black. 2023-09-29 14:40:16 +02:00
Halvor Holsten Strand
20f5fd7a86 Merge branch 'master' into feature/fine_grained
# Conflicts:
#	README.rst
#	github_backup/github_backup.py
2023-09-29 14:34:06 +02:00
Halvor Holsten Strand
f12b877509 Keep backwards compatability by going back to "--token" for classic.
Allow "file://" uri for "--token-fine".
2023-09-29 14:01:53 +02:00
dependabot[bot]
96e6f58159 Bump certifi from 2023.5.7 to 2023.7.22
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.5.7 to 2023.7.22.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-25 23:20:45 +00:00
Jose Diaz-Gonzalez
d163cd66a4 Merge pull request #214 from ZhymabekRoman/master
fix: refactor logging
2023-06-27 15:21:16 -04:00
ZhymabekRoman
a8a583bed1 fix: minor cosmetic changes 2023-06-25 10:41:48 +06:00
ZhymabekRoman
68e718010f fix: add forgotten variable formatting 2023-06-25 10:39:16 +06:00
ZhymabekRoman
a06c3e9fd3 fix: refactor logging
Based on #195
2023-06-25 10:38:31 +06:00
Jose Diaz-Gonzalez
fe07d5ad09 Merge pull request #212 from ZhymabekRoman/dev-1
fix: minor typo fix
2023-06-23 13:04:17 -04:00
Zhymabek Roman
12799bb72c fix: minor typo fix 2023-06-23 21:27:52 +06:00
Jose Diaz-Gonzalez
f1cf4cd315 Release version 0.43.1 2023-05-29 18:45:57 -04:00
Jose Diaz-Gonzalez
f3340cd9eb chore: add release requirements 2023-05-29 18:45:49 -04:00
Jose Diaz-Gonzalez
0ebaffd102 Release version 0.43.0 2023-05-29 18:44:23 -04:00
Jose Diaz-Gonzalez
2730fc3e5a fix: do not update readme 2023-05-29 18:44:13 -04:00
Jose Diaz-Gonzalez
0b2330c2c4 fix: adjust for black 2023-05-29 18:43:29 -04:00
Jose Diaz-Gonzalez
82e35fb1cf feat: commit gitchangelog.rc to repo so anyone can generate a changelog 2023-05-29 18:43:23 -04:00
Jose Diaz-Gonzalez
e8f027469e fix: adjust for black 2023-05-29 18:37:02 -04:00
Jose Diaz-Gonzalez
37ef0222e1 fix: adjust for black 2023-05-29 18:36:06 -04:00
Jose Diaz-Gonzalez
96a73b3fe8 feat: add release tagging 2023-05-29 18:35:07 -04:00
Jose Diaz-Gonzalez
8b1bfd433c chore: formatting 2023-05-29 18:34:22 -04:00
Jose Diaz-Gonzalez
cca8a851ad chore: run black 2023-05-29 18:32:39 -04:00
josegonzalez
b5d749ec46 Merge pull request #199 from eht16/add_log_level_argument
Add --log-level command line argument
2023-05-29 18:29:41 -04:00
josegonzalez
00e5c019db Merge pull request #207 from kenbailey/kenbailey-patch-1
Check both updated_at and pushed_at properties
2023-05-29 18:29:29 -04:00
Robert Davey
61275c61b2 Update README.rst
Add flags and example for fine-grained tokens
2023-03-28 16:52:48 +01:00
froggleston
60cb484a19 Add support for fine-grained tokens 2023-03-22 14:53:07 +00:00
Ken Bailey
fbb977acf4 Check both updated_at and pushed_at properties
Check both updated_at and pushed_at dates to get the last_update to reduce data retrieved on incremental api calls using since.
2023-02-28 15:44:14 -07:00
Jose Diaz-Gonzalez
07e32b186c Release version 0.42.0 2022-11-28 00:25:13 -05:00
josegonzalez
dcc90b747a Merge pull request #204 from Assimila/exclude_repositories
Add option to exclude repositories
2022-11-28 00:23:20 -05:00
josegonzalez
f414fac108 Merge pull request #202 from TheOneric/pull_backup-regular-comments
Backup regular pull request comments as well
2022-11-28 00:23:08 -05:00
josegonzalez
38692bc836 Merge pull request #201 from TRAdEWORKS/fix-bug-request-url-error-forever-retry
Fix a bug forever retry when request url error
2022-11-28 00:22:54 -05:00
josegonzalez
81362e5596 Merge pull request #200 from TRAdEWORKS/no-prune-flag
Add --no-prune command line argument to disable prune option when doing git fetch
2022-11-28 00:22:40 -05:00
npounder
753a26d0d6 add option to exclude repositories 2022-11-25 12:35:24 +00:00
Oneric
b629a865f4 Backup regular pull request comments as well
Before, only review comments were backed up;
regular comments need to be fetched via issue API.

Fixes: https://github.com/josegonzalez/python-github-backup/issues/150
2022-07-12 18:38:11 +02:00
kornpisey
75ec773a6f fix bug forever retry when request url error 2022-05-30 13:50:23 +09:00
kornpisey
f8a16ee0f8 added --no-prune option to disable prune option when doing git fetch 2022-05-30 13:46:41 +09:00
Enrico Tröger
3d5eb359e2 Add --log-level command line argument
Support changing the log level to the desired value easily.
For example, this is useful to suppress progress messages but
keep logging warnings and errors.
2022-05-26 10:04:36 +02:00
Harrison Wright
125cfca05e Refactor logging and add support for quiet flag 2022-03-23 19:05:36 -05:00
Jose Diaz-Gonzalez
63441ebfbc Release version 0.41.0 2022-03-02 02:36:41 -05:00
Jose Diaz-Gonzalez
7ad324225e Merge pull request #191 from SkySoft-ATM/bug/lfs_mirror
git lfs clone does not respect --mirror
2022-03-02 02:34:17 -05:00
Louis Parisot
885e94a102 git lfs clone doe snot respect --mirror 2022-02-03 11:45:59 +01:00
Jose Diaz-Gonzalez
9e1800f56e Release version 0.40.2 2021-12-29 12:49:10 -05:00
Jose Diaz-Gonzalez
d057ee0d04 Merge pull request #186 from atinary-afoulon/patch-1
Fix lint issues raised by Flake8
2021-12-29 12:48:30 -05:00
atinary-afoulon
64562f2460 Fix lint issues raised by Flake8
According to job: 
[ https://app.circleci.com/pipelines/github/josegonzalez/python-github-backup/30/workflows/74eb93f2-2505-435d-b728-03b3cc04c14a/jobs/23 ]

Failed on the following checks:
./github_backup/github_backup.py:20:1: F811 redefinition of unused 'logging' from line 14
./github_backup/github_backup.py:45:1: E302 expected 2 blank lines, found 1
./github_backup/github_backup.py:136:20: E251 unexpected spaces around keyword / parameter equals
2021-12-13 14:33:21 +01:00
Jose Diaz-Gonzalez
f7f9ffd017 Release version 0.40.1 2021-09-22 12:29:08 -04:00
Jose Diaz-Gonzalez
048ef04e2a Merge pull request #180 from whwright/revert-to-fetch
Revert to fetch
2021-09-22 11:06:18 -04:00
Harrison Wright
b1acfed83a Revert to fetch 2021-07-14 10:53:14 -05:00
Jose Diaz-Gonzalez
18e78a4d66 Release version 0.40.0 2021-07-12 00:44:33 -04:00
Jose Diaz-Gonzalez
1ed5427043 Merge pull request #177 from jacekn/retry
Add retry on certain network errors
2021-07-12 00:43:19 -04:00
Jose Diaz-Gonzalez
c2e3665ed8 Merge pull request #178 from pew/patch-1
pull changes from remote
2021-07-12 00:43:10 -04:00
Jonas
0a30a92fe4 pull changes from remote
use `git pull` to pull actual files from the remote instead of using `fetch` for only the metadata
2021-07-06 06:21:06 +02:00
Jacek Nykis
cc52587f52 Add retry on certain network errors
This change includes certain network level errors in the retry logic.
It partially address #110 but I think more comprehensive fix would be useful.
2021-07-01 14:39:10 +01:00
Jose Diaz-Gonzalez
853b7c46a1 Release version 0.39.0 2021-03-18 23:16:04 -04:00
Jose Diaz-Gonzalez
e23d12d490 Merge pull request #173 from gallofeliz/make-compatible-python-call
Try to make compatible code with direct Python call ; reduce the hard link of the code with the cli
2021-03-18 22:51:01 -04:00
Jose Diaz-Gonzalez
f8e1151111 Merge pull request #174 from atorrescogollo/master
Fixed release_name with slash bug
2021-03-18 22:50:21 -04:00
Álvaro Torres Cogollo
664c2a765e Fixed release_name with slash bug 2021-03-03 11:36:44 +01:00
Gallo Feliz
fa7148d38f fix: fix missing INFO logs 2021-02-16 13:25:16 +01:00
Gallo Feliz
480ce3ce2a Try to make compatible code with direct Python call ; reduce the hard link of the code with the cli 2021-02-16 13:13:51 +01:00
Jose Diaz-Gonzalez
943e84e3d9 Release version 0.38.0 2021-02-13 03:55:02 -05:00
Jose Diaz-Gonzalez
0c924c3158 Merge pull request #172 from samanthaq/always-use-oauth-when-provided
fix: Always clone with OAuth token when provided
2021-02-13 03:53:26 -05:00
Samantha Baldwin
f62c4eaf8b fix: Always clone with OAuth token when provided
Github Enterprise servers with 'Anonymous Git read access' disabled
cause `git ls-remote` to fail (128) for a repo's `clone_url`. Using the
OAuth token when provided allows cloning private AND public repos when
Anonymous Git read access is disabled.
2021-02-12 00:46:06 -05:00
Jose Diaz-Gonzalez
a53d7f6849 Merge pull request #170 from Mindavi/bugfix/broken-url
Fix broken and incorrect link to github repository
2021-01-18 00:12:09 -05:00
Rick van Schijndel
4e571d0735 Change broken link to a fork to a working link to upstream 2021-01-03 23:08:58 +01:00
30 changed files with 5865 additions and 1140 deletions

View File

@@ -1,23 +0,0 @@
version: 2.1
orbs:
python: circleci/python@0.3.2
jobs:
build-and-test:
executor: python/default
steps:
- checkout
- python/load-cache
- run:
command: pip install flake8
name: Install dependencies
- python/save-cache
- run:
command: flake8 --ignore=E501
name: Lint
workflows:
main:
jobs:
- build-and-test

75
.dockerignore Normal file
View File

@@ -0,0 +1,75 @@
# Docker ignore file to reduce build context size
# Temp files
*~
~*
.*~
\#*
.#*
*#
dist
# Build files
build
dist
pkg
*.egg
*.egg-info
# Debian Files
debian/files
debian/python-github-backup*
# Sphinx build
doc/_build
# Generated man page
doc/github_backup.1
# Annoying macOS files
.DS_Store
._*
# IDE configuration files
.vscode
.atom
.idea
*.code-workspace
# RSA
id_rsa
id_rsa.pub
# Virtual env
venv
.venv
# Git
.git
.gitignore
.gitchangelog.rc
.github
# Documentation
*.md
!README.md
# Environment variables files
.env
.env.*
!.env.example
*.log
# Cache files
**/__pycache__/
*.py[cod]
# Docker files
docker-compose.yml
Dockerfile*
# Other files
release
*.tar
*.zip
*.gzip

117
.gitchangelog.rc Normal file
View File

@@ -0,0 +1,117 @@
#
# Format
#
# ACTION: [AUDIENCE:] COMMIT_MSG [@TAG ...]
#
# Description
#
# ACTION is one of 'chg', 'fix', 'new'
#
# Is WHAT the change is about.
#
# 'chg' is for refactor, small improvement, cosmetic changes...
# 'fix' is for bug fixes
# 'new' is for new features, big improvement
#
# SUBJECT is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
#
# Is WHO is concerned by the change.
#
# 'dev' is for developpers (API changes, refactors...)
# 'usr' is for final users (UI changes)
# 'pkg' is for packagers (packaging changes)
# 'test' is for testers (test only related changes)
# 'doc' is for doc guys (doc only changes)
#
# COMMIT_MSG is ... well ... the commit message itself.
#
# TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
#
# 'refactor' is obviously for refactoring code only
# 'minor' is for a very meaningless change (a typo, adding a comment)
# 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
#
# Example:
#
# new: usr: support of bazaar implemented
# chg: re-indentend some lines @cosmetic
# new: dev: updated code to be compatible with last version of killer lib.
# fix: pkg: updated year of licence coverage.
# new: test: added a bunch of test around user usability of feature X.
# fix: typo in spelling my name in comment. @minor
#
# Please note that multi-line commit message are supported, and only the
# first line will be considered as the "summary" of the commit message. So
# tags, and other rules only applies to the summary. The body of the commit
# message will be displayed in the changelog with minor reformating.
#
# ``ignore_regexps`` is a line of regexps
#
# Any commit having its full commit message matching any regexp listed here
# will be ignored and won't be reported in the changelog.
#
ignore_regexps = [
r'(?i)^(Merge pull request|Merge branch|Release|Update)',
]
#
# ``replace_regexps`` is a dict associating a regexp pattern and its replacement
#
# It will be applied to get the summary line from the full commit message.
#
# Note that you can provide multiple replacement patterns, they will be all
# tried. If None matches, the summary line will be the full commit message.
#
replace_regexps = {
# current format (ie: 'chg: dev: my commit msg @tag1 @tag2')
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$':
r'\4',
}
# ``section_regexps`` is a list of 2-tuples associating a string label and a
# list of regexp
#
# Commit messages will be classified in sections thanks to this. Section
# titles are the label, and a commit is classified under this section if any
# of the regexps associated is matching.
#
section_regexps = [
('New', [
r'^[nN]ew\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Changes', [
r'^[cC]hg\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Fix', [
r'^[fF]ix\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Other', None # Match all lines
),
]
# ``body_split_regexp`` is a regexp
#
# Commit message body (not the summary) if existing will be split
# (new line) on this regexp
#
body_split_regexp = r'[\n-]'
# ``tag_filter_regexp`` is a regexp
#
# Tags that will be used for the changelog must match this regexp.
#
# tag_filter_regexp = r'^[0-9]+$'
tag_filter_regexp = r'^(?:[vV])?[0-9\.]+$'
# ``unreleased_version_label`` is a string
#
# This label will be used as the changelog Title of the last set of changes
# between last valid tag and HEAD if any.
unreleased_version_label = "%%version%% (unreleased)"

28
.github/ISSUE_TEMPLATE/bug.yaml vendored Normal file
View File

@@ -0,0 +1,28 @@
---
name: Bug Report
description: File a bug report.
body:
- type: markdown
attributes:
value: |
# Important notice regarding filed issues
This project already fills my needs, and as such I have no real reason to continue it's development. This project is otherwise provided as is, and no support is given.
If pull requests implementing bug fixes or enhancements are pushed, I am happy to review and merge them (time permitting).
If you wish to have a bug fixed, you have a few options:
- Fix it yourself and file a pull request.
- File a bug and hope someone else fixes it for you.
- Pay me to fix it (my rate is $200 an hour, minimum 1 hour, contact me via my [github email address](https://github.com/josegonzalez) if you want to go this route).
In all cases, feel free to file an issue, they may be of help to others in the future.
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen?
placeholder: Tell us what you see!
validations:
required: true

27
.github/ISSUE_TEMPLATE/feature.yaml vendored Normal file
View File

@@ -0,0 +1,27 @@
---
name: Feature Request
description: File a feature request.
body:
- type: markdown
attributes:
value: |
# Important notice regarding filed issues
This project already fills my needs, and as such I have no real reason to continue it's development. This project is otherwise provided as is, and no support is given.
If pull requests implementing bug fixes or enhancements are pushed, I am happy to review and merge them (time permitting).
If you wish to have a feature implemented, you have a few options:
- Implement it yourself and file a pull request.
- File an issue and hope someone else implements it for you.
- Pay me to implement it (my rate is $200 an hour, minimum 1 hour, contact me via my [github email address](https://github.com/josegonzalez) if you want to go this route).
In all cases, feel free to file an issue, they may be of help to others in the future.
- type: textarea
id: what-would-you-like-to-happen
attributes:
label: What would you like to happen?
description: Please describe in detail how the new functionality should work as well as any issues with existing functionality.
validations:
required: true

15
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
version: 2
updates:
- package-ecosystem: pip
directory: "/"
schedule:
interval: daily
time: "13:00"
groups:
python-packages:
patterns:
- "*"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

41
.github/workflows/automatic-release.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: automatic-release
on:
workflow_dispatch:
inputs:
release_type:
description: Release type
required: true
type: choice
options:
- patch
- minor
- major
jobs:
release:
name: Release
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
ssh-key: ${{ secrets.DEPLOY_PRIVATE_KEY }}
- name: Setup Git
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install prerequisites
run: pip install -r release-requirements.txt
- name: Execute release
env:
SEMVER_BUMP: ${{ github.event.inputs.release_type }}
TWINE_REPOSITORY: ${{ vars.TWINE_REPOSITORY }}
TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
run: ./release $SEMVER_BUMP

77
.github/workflows/docker.yml vendored Normal file
View File

@@ -0,0 +1,77 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Create and publish a Docker image
on:
push:
branches:
- 'master'
- 'main'
- 'dev'
tags:
- 'v*'
- 'v*.*'
- 'v*.*.*'
- '*'
- '*.*'
- '*.*.*'
pull_request:
branches:
- 'main'
- 'dev'
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

36
.github/workflows/lint.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
---
name: "lint"
# yamllint disable-line rule:truthy
on:
pull_request:
branches:
- "*"
push:
branches:
- "main"
- "master"
jobs:
lint:
name: lint
runs-on: ubuntu-24.04
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- run: pip install -r release-requirements.txt && pip install wheel
- run: flake8 --ignore=E501,E203,W503
- run: black .
- run: rst-lint README.rst
- run: python setup.py sdist bdist_wheel && twine check dist/*

19
.github/workflows/tagged-release.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
---
name: "tagged-release"
# yamllint disable-line rule:truthy
on:
push:
tags:
- '*'
jobs:
tagged-release:
name: tagged-release
runs-on: ubuntu-24.04
steps:
- uses: "marvinpinto/action-automatic-releases@v1.2.1"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false

33
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
---
name: "test"
# yamllint disable-line rule:truthy
on:
pull_request:
branches:
- "*"
push:
branches:
- "main"
- "master"
jobs:
test:
name: test
runs-on: ubuntu-24.04
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- run: pip install -r release-requirements.txt
- run: pytest tests/ -v

15
.gitignore vendored
View File

@@ -1,4 +1,4 @@
*.py[oc] *.py[cod]
# Temp files # Temp files
*~ *~
@@ -18,13 +18,13 @@ pkg
# Debian Files # Debian Files
debian/files debian/files
debian/python-aws-hostname* debian/python-github-backup*
# Sphinx build # Sphinx build
doc/_build doc/_build
# Generated man page # Generated man page
doc/aws_hostname.1 doc/github_backup.1
# Annoying macOS files # Annoying macOS files
.DS_Store .DS_Store
@@ -33,5 +33,14 @@ doc/aws_hostname.1
# IDE configuration files # IDE configuration files
.vscode .vscode
.atom .atom
.idea
README README
# RSA
id_rsa
id_rsa.pub
# Virtual env
venv
.venv

File diff suppressed because it is too large Load Diff

38
Dockerfile Normal file
View File

@@ -0,0 +1,38 @@
FROM python:3.12-alpine3.22 AS builder
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir uv
WORKDIR /app
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=requirements.txt,target=requirements.txt \
--mount=type=bind,source=release-requirements.txt,target=release-requirements.txt \
uv venv \
&& uv pip install -r release-requirements.txt
COPY . .
RUN --mount=type=cache,target=/root/.cache/uv \
uv pip install .
FROM python:3.12-alpine3.22
ENV PYTHONUNBUFFERED=1
RUN apk add --no-cache \
ca-certificates \
git \
git-lfs \
&& addgroup -g 1000 appuser \
&& adduser -D -u 1000 -G appuser appuser
COPY --from=builder --chown=appuser:appuser /app /app
WORKDIR /app
USER appuser
ENV PATH="/app/.venv/bin:$PATH"
ENTRYPOINT ["github-backup"]

View File

@@ -1,13 +0,0 @@
# Important notice regarding filed issues
This project already fills my needs, and as such I have no real reason to continue it's development. This project is otherwise provided as is, and no support is given.
If pull requests implementing bug fixes or enhancements are pushed, I am happy to review and merge them (time permitting).
If you wish to have a bug fixed, you have a few options:
- Fix it yourself and file a pull request.
- File a bug and hope someone else fixes it for you.
- Pay me to fix it (my rate is $200 an hour, minimum 1 hour, contact me via my [github email address](https://github.com/josegonzalez) if you want to go this route).
In all cases, feel free to file an issue, they may be of help to others in the future.

View File

@@ -4,13 +4,12 @@ github-backup
|PyPI| |Python Versions| |PyPI| |Python Versions|
This project is considered feature complete for the primary maintainer. If you would like a bugfix or enhancement and cannot sponsor the work, pull requests are welcome. Feel free to contact the maintainer for consulting estimates if desired. The package can be used to backup an *entire* `Github <https://github.com/>`_ organization, repository or user account, including starred repos, issues and wikis in the most appropriate format (clones for wikis, json files for issues).
backup a github user or organization
Requirements Requirements
============ ============
- Python 3.10 or higher
- GIT 1.9+ - GIT 1.9+
Installation Installation
@@ -20,29 +19,40 @@ Using PIP via PyPI::
pip install github-backup pip install github-backup
Using PIP via Github:: Using PIP via Github (more likely the latest version)::
pip install git+https://github.com/josegonzalez/python-github-backup.git#egg=github-backup pip install git+https://github.com/josegonzalez/python-github-backup.git#egg=github-backup
Usage *Install note for python newcomers:*
=====
CLI Usage is as follows:: Python scripts are unlikely to be included in your ``$PATH`` by default, this means it cannot be run directly in terminal with ``$ github-backup ...``, you can either add python's install path to your environments ``$PATH`` or call the script directly e.g. using ``$ ~/.local/bin/github-backup``.*
github-backup [-h] [-u USERNAME] [-p PASSWORD] [-t TOKEN] [--as-app] Basic Help
[-o OUTPUT_DIRECTORY] [-i] [--starred] [--all-starred] ==========
[--watched] [--followers] [--following] [--all]
[--issues] [--issue-comments] [--issue-events] [--pulls] Show the CLI help output::
github-backup -h
CLI Help output::
github-backup [-h] [-u USERNAME] [-p PASSWORD] [-t TOKEN_CLASSIC]
[-f TOKEN_FINE] [--as-app] [-o OUTPUT_DIRECTORY]
[-l LOG_LEVEL] [-i] [--starred] [--all-starred]
[--watched] [--followers] [--following] [--all] [--issues]
[--issue-comments] [--issue-events] [--pulls]
[--pull-comments] [--pull-commits] [--pull-details] [--pull-comments] [--pull-commits] [--pull-details]
[--labels] [--hooks] [--milestones] [--repositories] [--labels] [--hooks] [--milestones] [--repositories]
[--bare] [--lfs] [--wikis] [--gists] [--starred-gists] [--bare] [--lfs] [--wikis] [--gists] [--starred-gists]
[--skip-existing] [-L [LANGUAGES [LANGUAGES ...]]] [--skip-archived] [--skip-existing] [-L [LANGUAGES ...]]
[-N NAME_REGEX] [-H GITHUB_HOST] [-O] [-R REPOSITORY] [-N NAME_REGEX] [-H GITHUB_HOST] [-O] [-R REPOSITORY]
[-P] [-F] [--prefer-ssh] [-v] [-P] [-F] [--prefer-ssh] [-v]
[--keychain-name OSX_KEYCHAIN_ITEM_NAME] [--keychain-name OSX_KEYCHAIN_ITEM_NAME]
[--keychain-account OSX_KEYCHAIN_ITEM_ACCOUNT] [--keychain-account OSX_KEYCHAIN_ITEM_ACCOUNT]
[--releases] [--assets] [--throttle-limit THROTTLE_LIMIT] [--releases] [--latest-releases NUMBER_OF_LATEST_RELEASES]
[--throttle-pause THROTTLE_PAUSE] [--skip-prerelease] [--assets] [--attachments]
[--exclude [REPOSITORY [REPOSITORY ...]]
[--throttle-limit THROTTLE_LIMIT] [--throttle-pause THROTTLE_PAUSE]
USER USER
Backup a github account Backup a github account
@@ -57,13 +67,20 @@ CLI Usage is as follows::
-p PASSWORD, --password PASSWORD -p PASSWORD, --password PASSWORD
password for basic auth. If a username is given but password for basic auth. If a username is given but
not a password, the password will be prompted for. not a password, the password will be prompted for.
-t TOKEN, --token TOKEN -f TOKEN_FINE, --token-fine TOKEN_FINE
fine-grained personal access token or path to token
(file://...)
-t TOKEN_CLASSIC, --token TOKEN_CLASSIC
personal access, OAuth, or JSON Web token, or path to personal access, OAuth, or JSON Web token, or path to
token (file://...) token (file://...)
--as-app authenticate as github app instead of as a user. --as-app authenticate as github app instead of as a user.
-o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY -o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY
directory at which to backup the repositories directory at which to backup the repositories
-l LOG_LEVEL, --log-level LOG_LEVEL
log level to use (default: info, possible levels:
debug, info, warning, error, critical)
-i, --incremental incremental backup -i, --incremental incremental backup
--incremental-by-files incremental backup using modified time of files
--starred include JSON output of starred repositories in backup --starred include JSON output of starred repositories in backup
--all-starred include starred repositories in backup [*] --all-starred include starred repositories in backup [*]
--watched include JSON output of watched repositories in backup --watched include JSON output of watched repositories in backup
@@ -110,8 +127,17 @@ CLI Usage is as follows::
keychain that holds the personal access or OAuth token keychain that holds the personal access or OAuth token
--releases include release information, not including assets or --releases include release information, not including assets or
binaries binaries
--latest-releases NUMBER_OF_LATEST_RELEASES
include certain number of the latest releases;
only applies if including releases
--skip-prerelease skip prerelease and draft versions; only applies if including releases
--assets include assets alongside release information; only --assets include assets alongside release information; only
applies if including releases applies if including releases
--attachments download user-attachments from issues and pull requests
to issues/attachments/{issue_number}/ and
pulls/attachments/{pull_number}/ directories
--exclude [REPOSITORY [REPOSITORY ...]]
names of repositories to exclude from backup.
--throttle-limit THROTTLE_LIMIT --throttle-limit THROTTLE_LIMIT
start throttling of GitHub API requests after this start throttling of GitHub API requests after this
amount of API requests remain amount of API requests remain
@@ -121,15 +147,43 @@ CLI Usage is as follows::
--throttle-limit to be set) --throttle-limit to be set)
The package can be used to backup an *entire* organization or repository, including issues and wikis in the most appropriate format (clones for wikis, json files for issues). Usage Details
=============
Authentication Authentication
============== --------------
**Password-based authentication** will fail if you have two-factor authentication enabled, and will `be deprecated <https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13/>`_ by 2023 EOY.
``--username`` is used for basic password authentication and separate from the positional argument ``USER``, which specifies the user account you wish to back up.
**Classic tokens** are `slightly less secure <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#personal-access-tokens-classic>`_ as they provide very coarse-grained permissions.
If you need authentication for long-running backups (e.g. for a cron job) it is recommended to use **fine-grained personal access token** ``-f TOKEN_FINE``.
Fine Tokens
~~~~~~~~~~~
You can "generate new token", choosing the repository scope by selecting specific repos or all repos. On Github this is under *Settings -> Developer Settings -> Personal access tokens -> Fine-grained Tokens*
Customise the permissions for your use case, but for a personal account full backup you'll need to enable the following permissions:
**User permissions**: Read access to followers, starring, and watching.
**Repository permissions**: Read access to contents, issues, metadata, pull requests, and webhooks.
Prefer SSH
~~~~~~~~~~
If cloning repos is enabled with ``--repositories``, ``--all-starred``, ``--wikis``, ``--gists``, ``--starred-gists`` using the ``--prefer-ssh`` argument will use ssh for cloning the git repos, but all other connections will still use their own protocol, e.g. API requests for issues uses HTTPS.
To clone with SSH, you'll need SSH authentication setup `as usual with Github <https://docs.github.com/en/authentication/connecting-to-github-with-ssh>`_, e.g. via SSH public and private keys.
Note: Password-based authentication will fail if you have two-factor authentication enabled.
Using the Keychain on Mac OSX Using the Keychain on Mac OSX
============================= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note: On Mac OSX the token can be stored securely in the user's keychain. To do this: Note: On Mac OSX the token can be stored securely in the user's keychain. To do this:
1. Open Keychain from "Applications -> Utilities -> Keychain Access" 1. Open Keychain from "Applications -> Utilities -> Keychain Access"
@@ -143,31 +197,165 @@ Note: When you run github-backup, you will be asked whether you want to allow "
1. **Allow:** In this case you will need to click "Allow" each time you run `github-backup` 1. **Allow:** In this case you will need to click "Allow" each time you run `github-backup`
2. **Always Allow:** In this case, you will not be asked for permission when you run `github-backup` in future. This is less secure, but is required if you want to schedule `github-backup` to run automatically 2. **Always Allow:** In this case, you will not be asked for permission when you run `github-backup` in future. This is less secure, but is required if you want to schedule `github-backup` to run automatically
About Git LFS
=============
When you use the "--lfs" option, you will need to make sure you have Git LFS installed. Github Rate-limit and Throttling
--------------------------------
"github-backup" will automatically throttle itself based on feedback from the Github API.
Their API is usually rate-limited to 5000 calls per hour. The API will ask github-backup to pause until a specific time when the limit is reset again (at the start of the next hour). This continues until the backup is complete.
During a large backup, such as ``--all-starred``, and on a fast connection this can result in (~20 min) pauses with bursts of API calls periodically maxing out the API limit. If this is not suitable `it has been observed <https://github.com/josegonzalez/python-github-backup/issues/76#issuecomment-636158717>`_ under real-world conditions that overriding the throttle with ``--throttle-limit 5000 --throttle-pause 0.6`` provides a smooth rate across the hour, although a ``--throttle-pause 0.72`` (3600 seconds [1 hour] / 5000 limit) is theoretically safer to prevent large rate-limit pauses.
About Git LFS
-------------
When you use the ``--lfs`` option, you will need to make sure you have Git LFS installed.
Instructions on how to do this can be found on https://git-lfs.github.com. Instructions on how to do this can be found on https://git-lfs.github.com.
Examples
========
Backup all repositories, including private ones:: About Attachments
-----------------
When you use the ``--attachments`` option with ``--issues`` or ``--pulls``, the tool will download user-uploaded attachments (images, videos, documents, etc.) from issue and pull request descriptions and comments. In some circumstances attachments contain valuable data related to the topic, and without their backup important information or context might be lost inadvertently.
Attachments are saved to ``issues/attachments/{issue_number}/`` and ``pulls/attachments/{pull_number}/`` directories, where ``{issue_number}`` is the GitHub issue number (e.g., issue #123 saves to ``issues/attachments/123/``). Each attachment directory contains:
- The downloaded attachment files (named by their GitHub identifier with appropriate file extensions)
- If multiple attachments have the same filename, conflicts are resolved with numeric suffixes (e.g., ``report.pdf``, ``report_1.pdf``, ``report_2.pdf``)
- A ``manifest.json`` file documenting all downloads, including URLs, file metadata, and download status
The tool automatically extracts file extensions from HTTP headers to ensure files can be more easily opened by your operating system.
**Supported URL formats:**
- Modern: ``github.com/user-attachments/{assets,files}/*``
- Legacy: ``user-images.githubusercontent.com/*`` and ``private-user-images.githubusercontent.com/*``
- Repo files: ``github.com/{owner}/{repo}/files/*`` (filtered to current repository)
- Repo assets: ``github.com/{owner}/{repo}/assets/*`` (filtered to current repository)
**Repository filtering** for repo files/assets handles renamed and transferred repositories gracefully. URLs are included if they either match the current repository name directly, or redirect to it (e.g., ``willmcgugan/rich`` redirects to ``Textualize/rich`` after transfer).
Run in Docker container
-----------------------
To run the tool in a Docker container use the following command:
sudo docker run --rm -v /path/to/backup:/data --name github-backup ghcr.io/josegonzalez/python-github-backup -o /data $OPTIONS $USER
Gotchas / Known-issues
======================
All is not everything
---------------------
The ``--all`` argument does not include: cloning private repos (``-P, --private``), cloning forks (``-F, --fork``), cloning starred repositories (``--all-starred``), ``--pull-details``, cloning LFS repositories (``--lfs``), cloning gists (``--gists``) or cloning starred gist repos (``--starred-gists``). See examples for more.
Cloning all starred size
------------------------
Using the ``--all-starred`` argument to clone all starred repositories may use a large amount of storage space, especially if ``--all`` or more arguments are used. e.g. commonly starred repos can have tens of thousands of issues, many large assets and the repo itself etc. Consider just storing links to starred repos in JSON format with ``--starred``.
Incremental Backup
------------------
Using (``-i, --incremental``) will only request new data from the API **since the last run (successful or not)**. e.g. only request issues from the API since the last run.
This means any blocking errors on previous runs can cause a large amount of missing data in backups.
Using (``--incremental-by-files``) will request new data from the API **based on when the file was modified on filesystem**. e.g. if you modify the file yourself you may miss something.
Still saver than the previous version.
Specifically, issues and pull requests are handled like this.
Known blocking errors
---------------------
Some errors will block the backup run by exiting the script. e.g. receiving a 403 Forbidden error from the Github API.
If the incremental argument is used, this will result in the next backup only requesting API data since the last blocked/failed run. Potentially causing unexpected large amounts of missing data.
It's therefore recommended to only use the incremental argument if the output/result is being actively monitored, or complimented with periodic full non-incremental runs, to avoid unexpected missing data in a regular backup runs.
1. **Starred public repo hooks blocking**
Since the ``--all`` argument includes ``--hooks``, if you use ``--all`` and ``--all-starred`` together to clone a users starred public repositories, the backup will likely error and block the backup continuing.
This is due to needing the correct permission for ``--hooks`` on public repos.
"bare" is actually "mirror"
---------------------------
Using the bare clone argument (``--bare``) will actually call git's ``clone --mirror`` command. There's a subtle difference between `bare <https://www.git-scm.com/docs/git-clone#Documentation/git-clone.txt---bare>`_ and `mirror <https://www.git-scm.com/docs/git-clone#Documentation/git-clone.txt---mirror>`_ clone.
*From git docs "Compared to --bare, --mirror not only maps local branches of the source to local branches of the target, it maps all refs (including remote-tracking branches, notes etc.) and sets up a refspec configuration such that all these refs are overwritten by a git remote update in the target repository."*
Starred gists vs starred repo behaviour
---------------------------------------
The starred normal repo cloning (``--all-starred``) argument stores starred repos separately to the users own repositories. However, using ``--starred-gists`` will store starred gists within the same directory as the users own gists ``--gists``. Also, all gist repo directory names are IDs not the gist's name.
Skip existing on incomplete backups
-----------------------------------
The ``--skip-existing`` argument will skip a backup if the directory already exists, even if the backup in that directory failed (perhaps due to a blocking error). This may result in unexpected missing data in a regular backup.
Github Backup Examples
======================
Backup all repositories, including private ones using a classic token::
export ACCESS_TOKEN=SOME-GITHUB-TOKEN export ACCESS_TOKEN=SOME-GITHUB-TOKEN
github-backup WhiteHouse --token $ACCESS_TOKEN --organization --output-directory /tmp/white-house --repositories --private github-backup WhiteHouse --token $ACCESS_TOKEN --organization --output-directory /tmp/white-house --repositories --private
Backup a single organization repository with everything else (wiki, pull requests, comments, issues etc):: Use a fine-grained access token to backup a single organization repository with everything else (wiki, pull requests, comments, issues etc)::
export ACCESS_TOKEN=SOME-GITHUB-TOKEN export FINE_ACCESS_TOKEN=SOME-GITHUB-TOKEN
ORGANIZATION=docker ORGANIZATION=docker
REPO=cli REPO=cli
# e.g. git@github.com:docker/cli.git # e.g. git@github.com:docker/cli.git
github-backup $ORGANIZATION -P -t $ACCESS_TOKEN -o . --all -O -R $REPO github-backup $ORGANIZATION -P -f $FINE_ACCESS_TOKEN -o . --all -O -R $REPO
Quietly and incrementally backup useful Github user data (public and private repos with SSH) including; all issues, pulls, all public starred repos and gists (omitting "hooks", "releases" and therefore "assets" to prevent blocking). *Great for a cron job.* ::
export FINE_ACCESS_TOKEN=SOME-GITHUB-TOKEN
GH_USER=YOUR-GITHUB-USER
github-backup -f $FINE_ACCESS_TOKEN --prefer-ssh -o ~/github-backup/ -l error -P -i --all-starred --starred --watched --followers --following --issues --issue-comments --issue-events --pulls --pull-comments --pull-commits --labels --milestones --repositories --wikis --releases --assets --attachments --pull-details --gists --starred-gists $GH_USER
Debug an error/block or incomplete backup into a temporary directory. Omit "incremental" to fill a previous incomplete backup. ::
export FINE_ACCESS_TOKEN=SOME-GITHUB-TOKEN
GH_USER=YOUR-GITHUB-USER
github-backup -f $FINE_ACCESS_TOKEN -o /tmp/github-backup/ -l debug -P --all-starred --starred --watched --followers --following --issues --issue-comments --issue-events --pulls --pull-comments --pull-commits --labels --milestones --repositories --wikis --releases --assets --pull-details --gists --starred-gists $GH_USER
Development
===========
This project is considered feature complete for the primary maintainer @josegonzalez. If you would like a bugfix or enhancement, pull requests are welcome. Feel free to contact the maintainer for consulting estimates if you'd like to sponsor the work instead.
Contibuters
-----------
A huge thanks to all the contibuters!
.. image:: https://contrib.rocks/image?repo=josegonzalez/python-github-backup
:target: https://github.com/josegonzalez/python-github-backup/graphs/contributors
:alt: contributors
Testing Testing
======= -------
This project currently contains no unit tests. To run linting:: This project currently contains no unit tests. To run linting::
@@ -178,4 +366,4 @@ This project currently contains no unit tests. To run linting::
.. |PyPI| image:: https://img.shields.io/pypi/v/github-backup.svg .. |PyPI| image:: https://img.shields.io/pypi/v/github-backup.svg
:target: https://pypi.python.org/pypi/github-backup/ :target: https://pypi.python.org/pypi/github-backup/
.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/github-backup.svg .. |Python Versions| image:: https://img.shields.io/pypi/pyversions/github-backup.svg
:target: https://github.com/albertyw/github-backup :target: https://github.com/josegonzalez/python-github-backup

View File

@@ -1,6 +1,8 @@
#!/usr/bin/env python #!/usr/bin/env python
import logging
import os import os
import sys
from github_backup.github_backup import ( from github_backup.github_backup import (
backup_account, backup_account,
@@ -8,29 +10,43 @@ from github_backup.github_backup import (
check_git_lfs_install, check_git_lfs_install,
filter_repositories, filter_repositories,
get_authenticated_user, get_authenticated_user,
log_info, logger,
mkdir_p, mkdir_p,
parse_args, parse_args,
retrieve_repositories, retrieve_repositories,
) )
logging.basicConfig(
format="%(asctime)s.%(msecs)03d: %(message)s",
datefmt="%Y-%m-%dT%H:%M:%S",
level=logging.INFO,
)
def main(): def main():
args = parse_args() args = parse_args()
if args.quiet:
logger.setLevel(logging.WARNING)
output_directory = os.path.realpath(args.output_directory) output_directory = os.path.realpath(args.output_directory)
if not os.path.isdir(output_directory): if not os.path.isdir(output_directory):
log_info('Create output directory {0}'.format(output_directory)) logger.info("Create output directory {0}".format(output_directory))
mkdir_p(output_directory) mkdir_p(output_directory)
if args.lfs_clone: if args.lfs_clone:
check_git_lfs_install() check_git_lfs_install()
if args.log_level:
log_level = logging.getLevelName(args.log_level.upper())
if isinstance(log_level, int):
logger.root.setLevel(log_level)
if not args.as_app: if not args.as_app:
log_info('Backing up user {0} to {1}'.format(args.user, output_directory)) logger.info("Backing up user {0} to {1}".format(args.user, output_directory))
authenticated_user = get_authenticated_user(args) authenticated_user = get_authenticated_user(args)
else: else:
authenticated_user = {'login': None} authenticated_user = {"login": None}
repositories = retrieve_repositories(args, authenticated_user) repositories = retrieve_repositories(args, authenticated_user)
repositories = filter_repositories(args, repositories) repositories = filter_repositories(args, repositories)
@@ -38,5 +54,9 @@ def main():
backup_account(args, output_directory) backup_account(args, output_directory)
if __name__ == '__main__': if __name__ == "__main__":
main() try:
main()
except Exception as e:
logger.error(str(e))
sys.exit(1)

View File

@@ -1 +1 @@
__version__ = '0.37.2' __version__ = "0.52.0"

File diff suppressed because it is too large Load Diff

6
pytest.ini Normal file
View File

@@ -0,0 +1,6 @@
[pytest]
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
addopts = -v

View File

@@ -0,0 +1,7 @@
{
"folders": [
{
"path": "."
}
]
}

80
release
View File

@@ -1,37 +1,38 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -eo pipefail; [[ $RELEASE_TRACE ]] && set -x set -eo pipefail
[[ $RELEASE_TRACE ]] && set -x
if [[ ! -f setup.py ]]; then if [[ ! -f setup.py ]]; then
echo -e "${RED}WARNING: Missing setup.py${COLOR_OFF}\n" echo -e "${RED}WARNING: Missing setup.py${COLOR_OFF}\n"
exit 1 exit 1
fi fi
PACKAGE_NAME="$(cat setup.py | grep "name='" | head | cut -d "'" -f2)" PACKAGE_NAME="$(cat setup.py | grep 'name="' | head | cut -d '"' -f2)"
INIT_PACKAGE_NAME="$(echo "${PACKAGE_NAME//-/_}")" INIT_PACKAGE_NAME="$(echo "${PACKAGE_NAME//-/_}")"
PUBLIC="true" PUBLIC="true"
# Colors # Colors
COLOR_OFF="\033[0m" # unsets color to term fg color COLOR_OFF="\033[0m" # unsets color to term fg color
RED="\033[0;31m" # red RED="\033[0;31m" # red
GREEN="\033[0;32m" # green GREEN="\033[0;32m" # green
YELLOW="\033[0;33m" # yellow YELLOW="\033[0;33m" # yellow
MAGENTA="\033[0;35m" # magenta MAGENTA="\033[0;35m" # magenta
CYAN="\033[0;36m" # cyan CYAN="\033[0;36m" # cyan
# ensure wheel is available # ensure wheel is available
pip install wheel > /dev/null pip install wheel >/dev/null
command -v gitchangelog >/dev/null 2>&1 || { command -v gitchangelog >/dev/null 2>&1 || {
echo -e "${RED}WARNING: Missing gitchangelog binary, please run: pip install gitchangelog==3.0.4${COLOR_OFF}\n" echo -e "${RED}WARNING: Missing gitchangelog binary, please run: pip install gitchangelog==3.0.4${COLOR_OFF}\n"
exit 1 exit 1
} }
command -v rst-lint > /dev/null || { command -v rst-lint >/dev/null || {
echo -e "${RED}WARNING: Missing rst-lint binary, please run: pip install restructuredtext_lint${COLOR_OFF}\n" echo -e "${RED}WARNING: Missing rst-lint binary, please run: pip install restructuredtext_lint${COLOR_OFF}\n"
exit 1 exit 1
} }
command -v twine > /dev/null || { command -v twine >/dev/null || {
echo -e "${RED}WARNING: Missing twine binary, please run: pip install twine==3.2.0${COLOR_OFF}\n" echo -e "${RED}WARNING: Missing twine binary, please run: pip install twine==3.2.0${COLOR_OFF}\n"
exit 1 exit 1
} }
@@ -43,41 +44,41 @@ fi
echo -e "\n${GREEN}STARTING RELEASE PROCESS${COLOR_OFF}\n" echo -e "\n${GREEN}STARTING RELEASE PROCESS${COLOR_OFF}\n"
set +e; set +e
git status | grep -Eo "working (directory|tree) clean" &> /dev/null git status | grep -Eo "working (directory|tree) clean" &>/dev/null
if [ ! $? -eq 0 ]; then # working directory is NOT clean if [ ! $? -eq 0 ]; then # working directory is NOT clean
echo -e "${RED}WARNING: You have uncomitted changes, you may have forgotten something${COLOR_OFF}\n" echo -e "${RED}WARNING: You have uncomitted changes, you may have forgotten something${COLOR_OFF}\n"
exit 1 exit 1
fi fi
set -e; set -e
echo -e "${YELLOW}--->${COLOR_OFF} Updating local copy" echo -e "${YELLOW}--->${COLOR_OFF} Updating local copy"
git pull -q origin master git pull -q origin master
echo -e "${YELLOW}--->${COLOR_OFF} Retrieving release versions" echo -e "${YELLOW}--->${COLOR_OFF} Retrieving release versions"
current_version=$(cat ${INIT_PACKAGE_NAME}/__init__.py |grep '__version__ ='|sed 's/[^0-9.]//g') current_version=$(cat ${INIT_PACKAGE_NAME}/__init__.py | grep '__version__ =' | sed 's/[^0-9.]//g')
major=$(echo $current_version | awk '{split($0,a,"."); print a[1]}') major=$(echo $current_version | awk '{split($0,a,"."); print a[1]}')
minor=$(echo $current_version | awk '{split($0,a,"."); print a[2]}') minor=$(echo $current_version | awk '{split($0,a,"."); print a[2]}')
patch=$(echo $current_version | awk '{split($0,a,"."); print a[3]}') patch=$(echo $current_version | awk '{split($0,a,"."); print a[3]}')
if [[ "$@" == "major" ]]; then if [[ "$@" == "major" ]]; then
major=$(($major + 1)); major=$(($major + 1))
minor="0" minor="0"
patch="0" patch="0"
elif [[ "$@" == "minor" ]]; then elif [[ "$@" == "minor" ]]; then
minor=$(($minor + 1)); minor=$(($minor + 1))
patch="0" patch="0"
elif [[ "$@" == "patch" ]]; then elif [[ "$@" == "patch" ]]; then
patch=$(($patch + 1)); patch=$(($patch + 1))
fi fi
next_version="${major}.${minor}.${patch}" next_version="${major}.${minor}.${patch}"
echo -e "${YELLOW} >${COLOR_OFF} ${MAGENTA}${current_version}${COLOR_OFF} -> ${MAGENTA}${next_version}${COLOR_OFF}" echo -e "${YELLOW} >${COLOR_OFF} ${MAGENTA}${current_version}${COLOR_OFF} -> ${MAGENTA}${next_version}${COLOR_OFF}"
echo -e "${YELLOW}--->${COLOR_OFF} Ensuring readme passes lint checks (if this fails, run rst-lint)" echo -e "${YELLOW}--->${COLOR_OFF} Ensuring readme passes lint checks (if this fails, run rst-lint)"
rst-lint README.rst > /dev/null rst-lint README.rst || exit 1
echo -e "${YELLOW}--->${COLOR_OFF} Creating necessary temp file" echo -e "${YELLOW}--->${COLOR_OFF} Creating necessary temp file"
tempfoo=$(basename $0) tempfoo=$(basename $0)
@@ -86,33 +87,29 @@ TMPFILE=$(mktemp /tmp/${tempfoo}.XXXXXX) || {
exit 1 exit 1
} }
find_this="__version__ = '$current_version'" find_this="__version__ = \"$current_version\""
replace_with="__version__ = '$next_version'" replace_with="__version__ = \"$next_version\""
echo -e "${YELLOW}--->${COLOR_OFF} Updating ${INIT_PACKAGE_NAME}/__init__.py" echo -e "${YELLOW}--->${COLOR_OFF} Updating ${INIT_PACKAGE_NAME}/__init__.py"
sed "s/$find_this/$replace_with/" ${INIT_PACKAGE_NAME}/__init__.py > $TMPFILE && mv $TMPFILE ${INIT_PACKAGE_NAME}/__init__.py sed "s/$find_this/$replace_with/" ${INIT_PACKAGE_NAME}/__init__.py >$TMPFILE && mv $TMPFILE ${INIT_PACKAGE_NAME}/__init__.py
find_this="${PACKAGE_NAME}.git@$current_version"
replace_with="${PACKAGE_NAME}.git@$next_version"
echo -e "${YELLOW}--->${COLOR_OFF} Updating README.rst"
sed "s/$find_this/$replace_with/" README.rst > $TMPFILE && mv $TMPFILE README.rst
if [ -f docs/conf.py ]; then if [ -f docs/conf.py ]; then
echo -e "${YELLOW}--->${COLOR_OFF} Updating docs" echo -e "${YELLOW}--->${COLOR_OFF} Updating docs"
find_this="version = '${current_version}'" find_this="version = '${current_version}'"
replace_with="version = '${next_version}'" replace_with="version = '${next_version}'"
sed "s/$find_this/$replace_with/" docs/conf.py > $TMPFILE && mv $TMPFILE docs/conf.py sed "s/$find_this/$replace_with/" docs/conf.py >$TMPFILE && mv $TMPFILE docs/conf.py
find_this="version = '${current_version}'" find_this="version = '${current_version}'"
replace_with="release = '${next_version}'" replace_with="release = '${next_version}'"
sed "s/$find_this/$replace_with/" docs/conf.py > $TMPFILE && mv $TMPFILE docs/conf.py sed "s/$find_this/$replace_with/" docs/conf.py >$TMPFILE && mv $TMPFILE docs/conf.py
fi fi
echo -e "${YELLOW}--->${COLOR_OFF} Updating CHANGES.rst for new release" echo -e "${YELLOW}--->${COLOR_OFF} Updating CHANGES.rst for new release"
version_header="$next_version ($(date +%F))" version_header="$next_version ($(date +%F))"
set +e; dashes=$(yes '-'|head -n ${#version_header}|tr -d '\n') ; set -e set +e
gitchangelog |sed "4s/.*/$version_header/"|sed "5s/.*/$dashes/" > $TMPFILE && mv $TMPFILE CHANGES.rst dashes=$(yes '-' | head -n ${#version_header} | tr -d '\n')
set -e
gitchangelog | sed "4s/.*/$version_header/" | sed "5s/.*/$dashes/" >$TMPFILE && mv $TMPFILE CHANGES.rst
echo -e "${YELLOW}--->${COLOR_OFF} Adding changed files to git" echo -e "${YELLOW}--->${COLOR_OFF} Adding changed files to git"
git add CHANGES.rst README.rst ${INIT_PACKAGE_NAME}/__init__.py git add CHANGES.rst README.rst ${INIT_PACKAGE_NAME}/__init__.py
@@ -121,6 +118,15 @@ if [ -f docs/conf.py ]; then git add docs/conf.py; fi
echo -e "${YELLOW}--->${COLOR_OFF} Creating release" echo -e "${YELLOW}--->${COLOR_OFF} Creating release"
git commit -q -m "Release version $next_version" git commit -q -m "Release version $next_version"
if [[ "$PUBLIC" == "true" ]]; then
echo -e "${YELLOW}--->${COLOR_OFF} Creating python release files"
cp README.rst README
python setup.py sdist bdist_wheel >/dev/null
echo -e "${YELLOW}--->${COLOR_OFF} Validating long_description"
twine check dist/*
fi
echo -e "${YELLOW}--->${COLOR_OFF} Tagging release" echo -e "${YELLOW}--->${COLOR_OFF} Tagging release"
git tag -a $next_version -m "Release version $next_version" git tag -a $next_version -m "Release version $next_version"
@@ -128,9 +134,7 @@ echo -e "${YELLOW}--->${COLOR_OFF} Pushing release and tags to github"
git push -q origin master && git push -q --tags git push -q origin master && git push -q --tags
if [[ "$PUBLIC" == "true" ]]; then if [[ "$PUBLIC" == "true" ]]; then
echo -e "${YELLOW}--->${COLOR_OFF} Creating python release" echo -e "${YELLOW}--->${COLOR_OFF} Uploading python release"
cp README.rst README
python setup.py sdist bdist_wheel > /dev/null
twine upload dist/* twine upload dist/*
rm README rm README
fi fi

40
release-requirements.txt Normal file
View File

@@ -0,0 +1,40 @@
autopep8==2.3.2
black==25.11.0
bleach==6.3.0
certifi==2025.11.12
charset-normalizer==3.4.4
click==8.3.1
colorama==0.4.6
docutils==0.22.3
flake8==7.3.0
gitchangelog==3.0.4
pytest==9.0.1
idna==3.11
importlib-metadata==8.7.0
jaraco.classes==3.4.0
keyring==25.7.0
markdown-it-py==4.0.0
mccabe==0.7.0
mdurl==0.1.2
more-itertools==10.8.0
mypy-extensions==1.1.0
packaging==25.0
pathspec==0.12.1
pkginfo==1.12.1.2
platformdirs==4.5.0
pycodestyle==2.14.0
pyflakes==3.4.0
Pygments==2.19.2
readme-renderer==44.0
requests==2.32.5
requests-toolbelt==1.0.0
restructuredtext-lint==2.0.2
rfc3986==2.0.0
rich==14.2.0
setuptools==80.9.0
six==1.17.0
tqdm==4.67.1
twine==6.2.0
urllib3==2.5.0
webencodings==0.5.1
zipp==3.23.0

View File

@@ -1 +0,0 @@

View File

@@ -1,10 +1,12 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
from github_backup import __version__ from github_backup import __version__
try: try:
from setuptools import setup from setuptools import setup
setup # workaround for pyflakes issue #13 setup # workaround for pyflakes issue #13
except ImportError: except ImportError:
from distutils.core import setup from distutils.core import setup
@@ -15,6 +17,7 @@ except ImportError:
# http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html) # http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)
try: try:
import multiprocessing import multiprocessing
multiprocessing multiprocessing
except ImportError: except ImportError:
pass pass
@@ -25,26 +28,28 @@ def open_file(fname):
setup( setup(
name='github-backup', name="github-backup",
version=__version__, version=__version__,
author='Jose Diaz-Gonzalez', author="Jose Diaz-Gonzalez",
author_email='github-backup@josediazgonzalez.com', author_email="github-backup@josediazgonzalez.com",
packages=['github_backup'], packages=["github_backup"],
scripts=['bin/github-backup'], scripts=["bin/github-backup"],
url='http://github.com/josegonzalez/python-github-backup', url="http://github.com/josegonzalez/python-github-backup",
license='MIT', license="MIT",
classifiers=[ classifiers=[
'Development Status :: 5 - Production/Stable', "Development Status :: 5 - Production/Stable",
'Topic :: System :: Archiving :: Backup', "Topic :: System :: Archiving :: Backup",
'License :: OSI Approved :: MIT License', "License :: OSI Approved :: MIT License",
'Programming Language :: Python :: 3.5', "Programming Language :: Python :: 3.10",
'Programming Language :: Python :: 3.6', "Programming Language :: Python :: 3.11",
'Programming Language :: Python :: 3.7', "Programming Language :: Python :: 3.12",
'Programming Language :: Python :: 3.8', "Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
], ],
description='backup a github user or organization', description="backup a github user or organization",
long_description=open_file('README.rst').read(), long_description=open_file("README.rst").read(),
long_description_content_type='text/x-rst', long_description_content_type="text/x-rst",
install_requires=open_file('requirements.txt').readlines(), install_requires=open_file("requirements.txt").readlines(),
python_requires=">=3.10",
zip_safe=True, zip_safe=True,
) )

1
tests/__init__.py Normal file
View File

@@ -0,0 +1 @@
"""Tests for python-github-backup."""

353
tests/test_attachments.py Normal file
View File

@@ -0,0 +1,353 @@
"""Behavioral tests for attachment functionality."""
import json
import os
import tempfile
from pathlib import Path
from unittest.mock import Mock
import pytest
from github_backup import github_backup
@pytest.fixture
def attachment_test_setup(tmp_path):
"""Fixture providing setup and helper for attachment download tests."""
from unittest.mock import patch
issue_cwd = tmp_path / "issues"
issue_cwd.mkdir()
# Mock args
args = Mock()
args.as_app = False
args.token_fine = None
args.token_classic = None
args.username = None
args.password = None
args.osx_keychain_item_name = None
args.osx_keychain_item_account = None
args.user = "testuser"
args.repository = "testrepo"
repository = {"full_name": "testuser/testrepo"}
def call_download(issue_data, issue_number=123):
"""Call download_attachments with mocked HTTP downloads.
Returns list of URLs that were actually downloaded.
"""
downloaded_urls = []
def mock_download(url, path, auth, as_app, fine):
downloaded_urls.append(url)
return {
"success": True,
"saved_as": os.path.basename(path),
"url": url,
}
with patch(
"github_backup.github_backup.download_attachment_file",
side_effect=mock_download,
):
github_backup.download_attachments(
args, str(issue_cwd), issue_data, issue_number, repository
)
return downloaded_urls
return {
"issue_cwd": str(issue_cwd),
"args": args,
"repository": repository,
"call_download": call_download,
}
class TestURLExtraction:
"""Test URL extraction with realistic issue content."""
def test_mixed_urls(self):
issue_data = {
"body": """
## Bug Report
When uploading files, I see this error. Here's a screenshot:
https://github.com/user-attachments/assets/abc123def456
The logs show: https://github.com/user-attachments/files/789/error-log.txt
This is similar to https://github.com/someorg/somerepo/issues/42 but different.
You can also see the video at https://user-images.githubusercontent.com/12345/video-demo.mov
Here's how to reproduce:
```bash
# Don't extract this example URL:
curl https://github.com/user-attachments/assets/example999
```
More info at https://docs.example.com/guide
Also see this inline code `https://github.com/user-attachments/files/111/inline.pdf` should not extract.
Final attachment: https://github.com/user-attachments/files/222/report.pdf.
""",
"comment_data": [
{
"body": "Here's another attachment: https://private-user-images.githubusercontent.com/98765/secret.png?jwt=token123"
},
{
"body": """
Example code:
```python
url = "https://github.com/user-attachments/assets/code-example"
```
But this is real: https://github.com/user-attachments/files/333/actual.zip
"""
},
],
}
# Extract URLs
urls = github_backup.extract_attachment_urls(issue_data)
expected_urls = [
"https://github.com/user-attachments/assets/abc123def456",
"https://github.com/user-attachments/files/789/error-log.txt",
"https://user-images.githubusercontent.com/12345/video-demo.mov",
"https://github.com/user-attachments/files/222/report.pdf",
"https://private-user-images.githubusercontent.com/98765/secret.png?jwt=token123",
"https://github.com/user-attachments/files/333/actual.zip",
]
assert set(urls) == set(expected_urls)
def test_trailing_punctuation_stripped(self):
"""URLs with trailing punctuation should have punctuation stripped."""
issue_data = {
"body": """
See this file: https://github.com/user-attachments/files/1/doc.pdf.
And this one (https://github.com/user-attachments/files/2/image.png).
Check it out! https://github.com/user-attachments/files/3/data.csv!
"""
}
urls = github_backup.extract_attachment_urls(issue_data)
expected = [
"https://github.com/user-attachments/files/1/doc.pdf",
"https://github.com/user-attachments/files/2/image.png",
"https://github.com/user-attachments/files/3/data.csv",
]
assert set(urls) == set(expected)
def test_deduplication_across_body_and_comments(self):
"""Same URL in body and comments should only appear once."""
duplicate_url = "https://github.com/user-attachments/assets/abc123"
issue_data = {
"body": f"First mention: {duplicate_url}",
"comment_data": [
{"body": f"Second mention: {duplicate_url}"},
{"body": f"Third mention: {duplicate_url}"},
],
}
urls = github_backup.extract_attachment_urls(issue_data)
assert set(urls) == {duplicate_url}
class TestFilenameExtraction:
"""Test filename extraction from different URL types."""
def test_modern_assets_url(self):
"""Modern assets URL returns UUID."""
url = "https://github.com/user-attachments/assets/abc123def456"
filename = github_backup.get_attachment_filename(url)
assert filename == "abc123def456"
def test_modern_files_url(self):
"""Modern files URL returns filename."""
url = "https://github.com/user-attachments/files/12345/report.pdf"
filename = github_backup.get_attachment_filename(url)
assert filename == "report.pdf"
def test_legacy_cdn_url(self):
"""Legacy CDN URL returns filename with extension."""
url = "https://user-images.githubusercontent.com/123456/abc-def.png"
filename = github_backup.get_attachment_filename(url)
assert filename == "abc-def.png"
def test_private_cdn_url(self):
"""Private CDN URL returns filename."""
url = "https://private-user-images.githubusercontent.com/98765/secret.png?jwt=token123"
filename = github_backup.get_attachment_filename(url)
assert filename == "secret.png"
def test_repo_files_url(self):
"""Repo-scoped files URL returns filename."""
url = "https://github.com/owner/repo/files/789/document.txt"
filename = github_backup.get_attachment_filename(url)
assert filename == "document.txt"
class TestFilenameCollision:
"""Test filename collision resolution."""
def test_collision_behavior(self):
"""Test filename collision resolution with real files."""
with tempfile.TemporaryDirectory() as tmpdir:
# No collision - file doesn't exist
result = github_backup.resolve_filename_collision(
os.path.join(tmpdir, "report.pdf")
)
assert result == os.path.join(tmpdir, "report.pdf")
# Create the file, now collision exists
Path(os.path.join(tmpdir, "report.pdf")).touch()
result = github_backup.resolve_filename_collision(
os.path.join(tmpdir, "report.pdf")
)
assert result == os.path.join(tmpdir, "report_1.pdf")
# Create report_1.pdf too
Path(os.path.join(tmpdir, "report_1.pdf")).touch()
result = github_backup.resolve_filename_collision(
os.path.join(tmpdir, "report.pdf")
)
assert result == os.path.join(tmpdir, "report_2.pdf")
def test_manifest_reserved(self):
"""manifest.json is always treated as reserved."""
with tempfile.TemporaryDirectory() as tmpdir:
# Even if manifest.json doesn't exist, should get manifest_1.json
result = github_backup.resolve_filename_collision(
os.path.join(tmpdir, "manifest.json")
)
assert result == os.path.join(tmpdir, "manifest_1.json")
class TestManifestDuplicatePrevention:
"""Test that manifest prevents duplicate downloads (the bug fix)."""
def test_manifest_filters_existing_urls(self, attachment_test_setup):
"""URLs in manifest are not re-downloaded."""
setup = attachment_test_setup
# Create manifest with existing URLs
attachments_dir = os.path.join(setup["issue_cwd"], "attachments", "123")
os.makedirs(attachments_dir)
manifest_path = os.path.join(attachments_dir, "manifest.json")
manifest = {
"attachments": [
{
"url": "https://github.com/user-attachments/assets/old1",
"success": True,
"saved_as": "old1.pdf",
},
{
"url": "https://github.com/user-attachments/assets/old2",
"success": True,
"saved_as": "old2.pdf",
},
]
}
with open(manifest_path, "w") as f:
json.dump(manifest, f)
# Issue data with 2 old URLs and 1 new URL
issue_data = {
"body": """
Old: https://github.com/user-attachments/assets/old1
Old: https://github.com/user-attachments/assets/old2
New: https://github.com/user-attachments/assets/new1
"""
}
downloaded_urls = setup["call_download"](issue_data)
# Should only download the NEW URL (old ones filtered by manifest)
assert len(downloaded_urls) == 1
assert downloaded_urls[0] == "https://github.com/user-attachments/assets/new1"
def test_no_manifest_downloads_all(self, attachment_test_setup):
"""Without manifest, all URLs should be downloaded."""
setup = attachment_test_setup
# Issue data with 2 URLs
issue_data = {
"body": """
https://github.com/user-attachments/assets/url1
https://github.com/user-attachments/assets/url2
"""
}
downloaded_urls = setup["call_download"](issue_data)
# Should download ALL URLs (no manifest to filter)
assert len(downloaded_urls) == 2
assert set(downloaded_urls) == {
"https://github.com/user-attachments/assets/url1",
"https://github.com/user-attachments/assets/url2",
}
def test_manifest_skips_permanent_failures(self, attachment_test_setup):
"""Manifest skips permanent failures (404, 410) but retries transient (503)."""
setup = attachment_test_setup
# Create manifest with different failure types
attachments_dir = os.path.join(setup["issue_cwd"], "attachments", "123")
os.makedirs(attachments_dir)
manifest_path = os.path.join(attachments_dir, "manifest.json")
manifest = {
"attachments": [
{
"url": "https://github.com/user-attachments/assets/success",
"success": True,
"saved_as": "success.pdf",
},
{
"url": "https://github.com/user-attachments/assets/notfound",
"success": False,
"http_status": 404,
},
{
"url": "https://github.com/user-attachments/assets/gone",
"success": False,
"http_status": 410,
},
{
"url": "https://github.com/user-attachments/assets/unavailable",
"success": False,
"http_status": 503,
},
]
}
with open(manifest_path, "w") as f:
json.dump(manifest, f)
# Issue data has all 4 URLs
issue_data = {
"body": """
https://github.com/user-attachments/assets/success
https://github.com/user-attachments/assets/notfound
https://github.com/user-attachments/assets/gone
https://github.com/user-attachments/assets/unavailable
"""
}
downloaded_urls = setup["call_download"](issue_data)
# Should only retry 503 (transient failure)
# Success, 404, and 410 should be skipped
assert len(downloaded_urls) == 1
assert (
downloaded_urls[0]
== "https://github.com/user-attachments/assets/unavailable"
)

143
tests/test_http_451.py Normal file
View File

@@ -0,0 +1,143 @@
"""Tests for HTTP 451 (DMCA takedown) handling."""
import json
from unittest.mock import Mock, patch
import pytest
from github_backup import github_backup
class TestHTTP451Exception:
"""Test suite for HTTP 451 DMCA takedown exception handling."""
def test_repository_unavailable_error_raised(self):
"""HTTP 451 should raise RepositoryUnavailableError with DMCA URL."""
# Create mock args
args = Mock()
args.as_app = False
args.token_fine = None
args.token_classic = None
args.username = None
args.password = None
args.osx_keychain_item_name = None
args.osx_keychain_item_account = None
args.throttle_limit = None
args.throttle_pause = 0
# Mock HTTPError 451 response
mock_response = Mock()
mock_response.getcode.return_value = 451
dmca_data = {
"message": "Repository access blocked",
"block": {
"reason": "dmca",
"created_at": "2024-11-12T14:38:04Z",
"html_url": "https://github.com/github/dmca/blob/master/2024/11/2024-11-04-source-code.md"
}
}
mock_response.read.return_value = json.dumps(dmca_data).encode("utf-8")
mock_response.headers = {"x-ratelimit-remaining": "5000"}
mock_response.reason = "Unavailable For Legal Reasons"
def mock_get_response(request, auth, template):
return mock_response, []
with patch("github_backup.github_backup._get_response", side_effect=mock_get_response):
with pytest.raises(github_backup.RepositoryUnavailableError) as exc_info:
list(github_backup.retrieve_data_gen(args, "https://api.github.com/repos/test/dmca/issues"))
# Check exception has DMCA URL
assert exc_info.value.dmca_url == "https://github.com/github/dmca/blob/master/2024/11/2024-11-04-source-code.md"
assert "451" in str(exc_info.value)
def test_repository_unavailable_error_without_dmca_url(self):
"""HTTP 451 without DMCA details should still raise exception."""
args = Mock()
args.as_app = False
args.token_fine = None
args.token_classic = None
args.username = None
args.password = None
args.osx_keychain_item_name = None
args.osx_keychain_item_account = None
args.throttle_limit = None
args.throttle_pause = 0
mock_response = Mock()
mock_response.getcode.return_value = 451
mock_response.read.return_value = b'{"message": "Blocked"}'
mock_response.headers = {"x-ratelimit-remaining": "5000"}
mock_response.reason = "Unavailable For Legal Reasons"
def mock_get_response(request, auth, template):
return mock_response, []
with patch("github_backup.github_backup._get_response", side_effect=mock_get_response):
with pytest.raises(github_backup.RepositoryUnavailableError) as exc_info:
list(github_backup.retrieve_data_gen(args, "https://api.github.com/repos/test/dmca/issues"))
# Exception raised even without DMCA URL
assert exc_info.value.dmca_url is None
assert "451" in str(exc_info.value)
def test_repository_unavailable_error_with_malformed_json(self):
"""HTTP 451 with malformed JSON should still raise exception."""
args = Mock()
args.as_app = False
args.token_fine = None
args.token_classic = None
args.username = None
args.password = None
args.osx_keychain_item_name = None
args.osx_keychain_item_account = None
args.throttle_limit = None
args.throttle_pause = 0
mock_response = Mock()
mock_response.getcode.return_value = 451
mock_response.read.return_value = b"invalid json {"
mock_response.headers = {"x-ratelimit-remaining": "5000"}
mock_response.reason = "Unavailable For Legal Reasons"
def mock_get_response(request, auth, template):
return mock_response, []
with patch("github_backup.github_backup._get_response", side_effect=mock_get_response):
with pytest.raises(github_backup.RepositoryUnavailableError):
list(github_backup.retrieve_data_gen(args, "https://api.github.com/repos/test/dmca/issues"))
def test_other_http_errors_unchanged(self):
"""Other HTTP errors should still raise generic Exception."""
args = Mock()
args.as_app = False
args.token_fine = None
args.token_classic = None
args.username = None
args.password = None
args.osx_keychain_item_name = None
args.osx_keychain_item_account = None
args.throttle_limit = None
args.throttle_pause = 0
mock_response = Mock()
mock_response.getcode.return_value = 404
mock_response.read.return_value = b'{"message": "Not Found"}'
mock_response.headers = {"x-ratelimit-remaining": "5000"}
mock_response.reason = "Not Found"
def mock_get_response(request, auth, template):
return mock_response, []
with patch("github_backup.github_backup._get_response", side_effect=mock_get_response):
# Should raise generic Exception, not RepositoryUnavailableError
with pytest.raises(Exception) as exc_info:
list(github_backup.retrieve_data_gen(args, "https://api.github.com/repos/test/notfound/issues"))
assert not isinstance(exc_info.value, github_backup.RepositoryUnavailableError)
assert "404" in str(exc_info.value)
if __name__ == "__main__":
pytest.main([__file__, "-v"])

153
tests/test_pagination.py Normal file
View File

@@ -0,0 +1,153 @@
"""Tests for Link header pagination handling."""
import json
from unittest.mock import Mock, patch
import pytest
from github_backup import github_backup
class MockHTTPResponse:
"""Mock HTTP response for paginated API calls."""
def __init__(self, data, link_header=None):
self._content = json.dumps(data).encode("utf-8")
self._link_header = link_header
self._read = False
self.reason = "OK"
def getcode(self):
return 200
def read(self):
if self._read:
return b""
self._read = True
return self._content
def get_header(self, name, default=None):
"""Mock method for headers.get()."""
return self.headers.get(name, default)
@property
def headers(self):
headers = {"x-ratelimit-remaining": "5000"}
if self._link_header:
headers["Link"] = self._link_header
return headers
@pytest.fixture
def mock_args():
"""Mock args for retrieve_data_gen."""
args = Mock()
args.as_app = False
args.token_fine = None
args.token_classic = "fake_token"
args.username = None
args.password = None
args.osx_keychain_item_name = None
args.osx_keychain_item_account = None
args.throttle_limit = None
args.throttle_pause = 0
return args
def test_cursor_based_pagination(mock_args):
"""Link header with 'after' cursor parameter works correctly."""
# Simulate issues endpoint behavior: returns cursor in Link header
responses = [
# Issues endpoint returns 'after' cursor parameter (not 'page')
MockHTTPResponse(
data=[{"issue": i} for i in range(1, 101)], # Page 1 contents
link_header='<https://api.github.com/repos/owner/repo/issues?per_page=100&after=ABC123&page=2>; rel="next"',
),
MockHTTPResponse(
data=[{"issue": i} for i in range(101, 151)], # Page 2 contents
link_header=None, # No Link header - signals end of pagination
),
]
requests_made = []
def mock_urlopen(request, *args, **kwargs):
url = request.get_full_url()
requests_made.append(url)
return responses[len(requests_made) - 1]
with patch("github_backup.github_backup.urlopen", side_effect=mock_urlopen):
results = list(
github_backup.retrieve_data_gen(
mock_args, "https://api.github.com/repos/owner/repo/issues"
)
)
# Verify all items retrieved and cursor was used in second request
assert len(results) == 150
assert len(requests_made) == 2
assert "after=ABC123" in requests_made[1]
def test_page_based_pagination(mock_args):
"""Link header with 'page' parameter works correctly."""
# Simulate pulls/repos endpoint behavior: returns page numbers in Link header
responses = [
# Pulls endpoint uses traditional 'page' parameter (not cursor)
MockHTTPResponse(
data=[{"pull": i} for i in range(1, 101)], # Page 1 contents
link_header='<https://api.github.com/repos/owner/repo/pulls?per_page=100&page=2>; rel="next"',
),
MockHTTPResponse(
data=[{"pull": i} for i in range(101, 181)], # Page 2 contents
link_header=None, # No Link header - signals end of pagination
),
]
requests_made = []
def mock_urlopen(request, *args, **kwargs):
url = request.get_full_url()
requests_made.append(url)
return responses[len(requests_made) - 1]
with patch("github_backup.github_backup.urlopen", side_effect=mock_urlopen):
results = list(
github_backup.retrieve_data_gen(
mock_args, "https://api.github.com/repos/owner/repo/pulls"
)
)
# Verify all items retrieved and page parameter was used (not cursor)
assert len(results) == 180
assert len(requests_made) == 2
assert "page=2" in requests_made[1]
assert "after" not in requests_made[1]
def test_no_link_header_stops_pagination(mock_args):
"""Pagination stops when Link header is absent."""
# Simulate endpoint with results that fit in a single page
responses = [
MockHTTPResponse(
data=[{"label": i} for i in range(1, 51)], # Page contents
link_header=None, # No Link header - signals end of pagination
)
]
requests_made = []
def mock_urlopen(request, *args, **kwargs):
requests_made.append(request.get_full_url())
return responses[len(requests_made) - 1]
with patch("github_backup.github_backup.urlopen", side_effect=mock_urlopen):
results = list(
github_backup.retrieve_data_gen(
mock_args, "https://api.github.com/repos/owner/repo/labels"
)
)
# Verify pagination stopped after first request
assert len(results) == 50
assert len(requests_made) == 1