github-backup 0.46.0__tar.gz → 0.48.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,315 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- 0.46.0 (2024-09-11)
4
+ 0.48.0 (2025-01-04)
5
5
  -------------------
6
6
  ------------------------
7
+ - Chore: reformat file to fix lint issues. [Jose Diaz-Gonzalez]
8
+ - Chore(deps): bump the python-packages group across 1 directory with 4
9
+ updates. [dependabot[bot]]
10
+
11
+ 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).
12
+
13
+
14
+ Updates `charset-normalizer` from 3.4.0 to 3.4.1
15
+ - [Release notes](https://github.com/jawah/charset_normalizer/releases)
16
+ - [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
17
+ - [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.0...3.4.1)
18
+
19
+ Updates `click` from 8.1.7 to 8.1.8
20
+ - [Release notes](https://github.com/pallets/click/releases)
21
+ - [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
22
+ - [Commits](https://github.com/pallets/click/compare/8.1.7...8.1.8)
23
+
24
+ Updates `keyring` from 25.5.0 to 25.6.0
25
+ - [Release notes](https://github.com/jaraco/keyring/releases)
26
+ - [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
27
+ - [Commits](https://github.com/jaraco/keyring/compare/v25.5.0...v25.6.0)
28
+
29
+ Updates `urllib3` from 2.2.3 to 2.3.0
30
+ - [Release notes](https://github.com/urllib3/urllib3/releases)
31
+ - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
32
+ - [Commits](https://github.com/urllib3/urllib3/compare/2.2.3...2.3.0)
33
+
34
+ ---
35
+ updated-dependencies:
36
+ - dependency-name: charset-normalizer
37
+ dependency-type: direct:production
38
+ update-type: version-update:semver-patch
39
+ dependency-group: python-packages
40
+ - dependency-name: click
41
+ dependency-type: direct:production
42
+ update-type: version-update:semver-patch
43
+ dependency-group: python-packages
44
+ - dependency-name: keyring
45
+ dependency-type: direct:production
46
+ update-type: version-update:semver-minor
47
+ dependency-group: python-packages
48
+ - dependency-name: urllib3
49
+ dependency-type: direct:production
50
+ update-type: version-update:semver-minor
51
+ dependency-group: python-packages
52
+ ...
53
+ - Fix typo README.rst: --starred-gists that should be --gists. [Michael
54
+ D. Adams]
55
+ - Remove fixed release issue from known blocking errors. [Ethan White]
56
+
57
+ The issue with --release producing errors documented in #209 (the linked issue) and #234 appears to have been fixed in #257.
58
+
59
+ This change removes the associated warning from the README.
60
+ - Chore(deps): bump certifi in the python-packages group.
61
+ [dependabot[bot]]
62
+
63
+ Bumps the python-packages group with 1 update: [certifi](https://github.com/certifi/python-certifi).
64
+
65
+
66
+ Updates `certifi` from 2024.8.30 to 2024.12.14
67
+ - [Commits](https://github.com/certifi/python-certifi/compare/2024.08.30...2024.12.14)
68
+
69
+ ---
70
+ updated-dependencies:
71
+ - dependency-name: certifi
72
+ dependency-type: direct:production
73
+ update-type: version-update:semver-minor
74
+ dependency-group: python-packages
75
+ ...
76
+
77
+
78
+ 0.47.0 (2024-12-09)
79
+ -------------------
80
+ - Detect empty HTTPS contexts. [John Doe]
81
+
82
+ Some users are relying solely on the certifi package to provide their CA certs, as requests does this by default.
83
+
84
+ This patch detects this situation and emits a clear warning as well as importing certifi to work around the situation..
85
+
86
+ Fixes #162 .
87
+ - Chore(deps): bump six from 1.16.0 to 1.17.0 in the python-packages
88
+ group. [dependabot[bot]]
89
+
90
+ Bumps the python-packages group with 1 update: [six](https://github.com/benjaminp/six).
91
+
92
+
93
+ Updates `six` from 1.16.0 to 1.17.0
94
+ - [Changelog](https://github.com/benjaminp/six/blob/main/CHANGES)
95
+ - [Commits](https://github.com/benjaminp/six/compare/1.16.0...1.17.0)
96
+
97
+ ---
98
+ updated-dependencies:
99
+ - dependency-name: six
100
+ dependency-type: direct:production
101
+ update-type: version-update:semver-minor
102
+ dependency-group: python-packages
103
+ ...
104
+ - Chore(deps): bump the python-packages group across 1 directory with 20
105
+ updates. [dependabot[bot]]
106
+
107
+ Bumps the python-packages group with 20 updates in the / directory:
108
+
109
+ | Package | From | To |
110
+ | --- | --- | --- |
111
+ | [black](https://github.com/psf/black) | `24.4.2` | `24.10.0` |
112
+ | [bleach](https://github.com/mozilla/bleach) | `6.1.0` | `6.2.0` |
113
+ | [certifi](https://github.com/certifi/python-certifi) | `2024.7.4` | `2024.8.30` |
114
+ | [charset-normalizer](https://github.com/Ousret/charset_normalizer) | `3.3.2` | `3.4.0` |
115
+ | [flake8](https://github.com/pycqa/flake8) | `7.1.0` | `7.1.1` |
116
+ | [idna](https://github.com/kjd/idna) | `3.7` | `3.10` |
117
+ | [importlib-metadata](https://github.com/python/importlib_metadata) | `7.2.1` | `8.5.0` |
118
+ | [keyring](https://github.com/jaraco/keyring) | `25.2.1` | `25.5.0` |
119
+ | [more-itertools](https://github.com/more-itertools/more-itertools) | `10.3.0` | `10.5.0` |
120
+ | [packaging](https://github.com/pypa/packaging) | `24.1` | `24.2` |
121
+ | [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.11.1` | `1.12.0` |
122
+ | [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.2` | `4.3.6` |
123
+ | [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.12.0` | `2.12.1` |
124
+ | [readme-renderer](https://github.com/pypa/readme_renderer) | `43.0` | `44.0` |
125
+ | [rich](https://github.com/Textualize/rich) | `13.7.1` | `13.9.4` |
126
+ | [setuptools](https://github.com/pypa/setuptools) | `70.1.1` | `75.6.0` |
127
+ | [tqdm](https://github.com/tqdm/tqdm) | `4.66.4` | `4.67.1` |
128
+ | [twine](https://github.com/pypa/twine) | `5.1.0` | `6.0.1` |
129
+ | [urllib3](https://github.com/urllib3/urllib3) | `2.2.2` | `2.2.3` |
130
+ | [zipp](https://github.com/jaraco/zipp) | `3.19.2` | `3.21.0` |
131
+
132
+
133
+
134
+ Updates `black` from 24.4.2 to 24.10.0
135
+ - [Release notes](https://github.com/psf/black/releases)
136
+ - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
137
+ - [Commits](https://github.com/psf/black/compare/24.4.2...24.10.0)
138
+
139
+ Updates `bleach` from 6.1.0 to 6.2.0
140
+ - [Changelog](https://github.com/mozilla/bleach/blob/main/CHANGES)
141
+ - [Commits](https://github.com/mozilla/bleach/compare/v6.1.0...v6.2.0)
142
+
143
+ Updates `certifi` from 2024.7.4 to 2024.8.30
144
+ - [Commits](https://github.com/certifi/python-certifi/compare/2024.07.04...2024.08.30)
145
+
146
+ Updates `charset-normalizer` from 3.3.2 to 3.4.0
147
+ - [Release notes](https://github.com/Ousret/charset_normalizer/releases)
148
+ - [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
149
+ - [Commits](https://github.com/Ousret/charset_normalizer/compare/3.3.2...3.4.0)
150
+
151
+ Updates `flake8` from 7.1.0 to 7.1.1
152
+ - [Commits](https://github.com/pycqa/flake8/compare/7.1.0...7.1.1)
153
+
154
+ Updates `idna` from 3.7 to 3.10
155
+ - [Release notes](https://github.com/kjd/idna/releases)
156
+ - [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
157
+ - [Commits](https://github.com/kjd/idna/compare/v3.7...v3.10)
158
+
159
+ Updates `importlib-metadata` from 7.2.1 to 8.5.0
160
+ - [Release notes](https://github.com/python/importlib_metadata/releases)
161
+ - [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
162
+ - [Commits](https://github.com/python/importlib_metadata/compare/v7.2.1...v8.5.0)
163
+
164
+ Updates `keyring` from 25.2.1 to 25.5.0
165
+ - [Release notes](https://github.com/jaraco/keyring/releases)
166
+ - [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
167
+ - [Commits](https://github.com/jaraco/keyring/compare/v25.2.1...v25.5.0)
168
+
169
+ Updates `more-itertools` from 10.3.0 to 10.5.0
170
+ - [Release notes](https://github.com/more-itertools/more-itertools/releases)
171
+ - [Commits](https://github.com/more-itertools/more-itertools/compare/v10.3.0...v10.5.0)
172
+
173
+ Updates `packaging` from 24.1 to 24.2
174
+ - [Release notes](https://github.com/pypa/packaging/releases)
175
+ - [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
176
+ - [Commits](https://github.com/pypa/packaging/compare/24.1...24.2)
177
+
178
+ Updates `pkginfo` from 1.11.1 to 1.12.0
179
+
180
+ Updates `platformdirs` from 4.2.2 to 4.3.6
181
+ - [Release notes](https://github.com/tox-dev/platformdirs/releases)
182
+ - [Changelog](https://github.com/tox-dev/platformdirs/blob/main/CHANGES.rst)
183
+ - [Commits](https://github.com/tox-dev/platformdirs/compare/4.2.2...4.3.6)
184
+
185
+ Updates `pycodestyle` from 2.12.0 to 2.12.1
186
+ - [Release notes](https://github.com/PyCQA/pycodestyle/releases)
187
+ - [Changelog](https://github.com/PyCQA/pycodestyle/blob/main/CHANGES.txt)
188
+ - [Commits](https://github.com/PyCQA/pycodestyle/compare/2.12.0...2.12.1)
189
+
190
+ Updates `readme-renderer` from 43.0 to 44.0
191
+ - [Release notes](https://github.com/pypa/readme_renderer/releases)
192
+ - [Changelog](https://github.com/pypa/readme_renderer/blob/main/CHANGES.rst)
193
+ - [Commits](https://github.com/pypa/readme_renderer/compare/43.0...44.0)
194
+
195
+ Updates `rich` from 13.7.1 to 13.9.4
196
+ - [Release notes](https://github.com/Textualize/rich/releases)
197
+ - [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
198
+ - [Commits](https://github.com/Textualize/rich/compare/v13.7.1...v13.9.4)
199
+
200
+ Updates `setuptools` from 70.1.1 to 75.6.0
201
+ - [Release notes](https://github.com/pypa/setuptools/releases)
202
+ - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
203
+ - [Commits](https://github.com/pypa/setuptools/compare/v70.1.1...v75.6.0)
204
+
205
+ Updates `tqdm` from 4.66.4 to 4.67.1
206
+ - [Release notes](https://github.com/tqdm/tqdm/releases)
207
+ - [Commits](https://github.com/tqdm/tqdm/compare/v4.66.4...v4.67.1)
208
+
209
+ Updates `twine` from 5.1.0 to 6.0.1
210
+ - [Release notes](https://github.com/pypa/twine/releases)
211
+ - [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
212
+ - [Commits](https://github.com/pypa/twine/compare/5.1.0...6.0.1)
213
+
214
+ Updates `urllib3` from 2.2.2 to 2.2.3
215
+ - [Release notes](https://github.com/urllib3/urllib3/releases)
216
+ - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
217
+ - [Commits](https://github.com/urllib3/urllib3/compare/2.2.2...2.2.3)
218
+
219
+ Updates `zipp` from 3.19.2 to 3.21.0
220
+ - [Release notes](https://github.com/jaraco/zipp/releases)
221
+ - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
222
+ - [Commits](https://github.com/jaraco/zipp/compare/v3.19.2...v3.21.0)
223
+
224
+ ---
225
+ updated-dependencies:
226
+ - dependency-name: black
227
+ dependency-type: direct:production
228
+ update-type: version-update:semver-minor
229
+ dependency-group: python-packages
230
+ - dependency-name: bleach
231
+ dependency-type: direct:production
232
+ update-type: version-update:semver-minor
233
+ dependency-group: python-packages
234
+ - dependency-name: certifi
235
+ dependency-type: direct:production
236
+ update-type: version-update:semver-minor
237
+ dependency-group: python-packages
238
+ - dependency-name: charset-normalizer
239
+ dependency-type: direct:production
240
+ update-type: version-update:semver-minor
241
+ dependency-group: python-packages
242
+ - dependency-name: flake8
243
+ dependency-type: direct:production
244
+ update-type: version-update:semver-patch
245
+ dependency-group: python-packages
246
+ - dependency-name: idna
247
+ dependency-type: direct:production
248
+ update-type: version-update:semver-minor
249
+ dependency-group: python-packages
250
+ - dependency-name: importlib-metadata
251
+ dependency-type: direct:production
252
+ update-type: version-update:semver-major
253
+ dependency-group: python-packages
254
+ - dependency-name: keyring
255
+ dependency-type: direct:production
256
+ update-type: version-update:semver-minor
257
+ dependency-group: python-packages
258
+ - dependency-name: more-itertools
259
+ dependency-type: direct:production
260
+ update-type: version-update:semver-minor
261
+ dependency-group: python-packages
262
+ - dependency-name: packaging
263
+ dependency-type: direct:production
264
+ update-type: version-update:semver-minor
265
+ dependency-group: python-packages
266
+ - dependency-name: pkginfo
267
+ dependency-type: direct:production
268
+ update-type: version-update:semver-minor
269
+ dependency-group: python-packages
270
+ - dependency-name: platformdirs
271
+ dependency-type: direct:production
272
+ update-type: version-update:semver-minor
273
+ dependency-group: python-packages
274
+ - dependency-name: pycodestyle
275
+ dependency-type: direct:production
276
+ update-type: version-update:semver-patch
277
+ dependency-group: python-packages
278
+ - dependency-name: readme-renderer
279
+ dependency-type: direct:production
280
+ update-type: version-update:semver-major
281
+ dependency-group: python-packages
282
+ - dependency-name: rich
283
+ dependency-type: direct:production
284
+ update-type: version-update:semver-minor
285
+ dependency-group: python-packages
286
+ - dependency-name: setuptools
287
+ dependency-type: direct:production
288
+ update-type: version-update:semver-major
289
+ dependency-group: python-packages
290
+ - dependency-name: tqdm
291
+ dependency-type: direct:production
292
+ update-type: version-update:semver-minor
293
+ dependency-group: python-packages
294
+ - dependency-name: twine
295
+ dependency-type: direct:production
296
+ update-type: version-update:semver-major
297
+ dependency-group: python-packages
298
+ - dependency-name: urllib3
299
+ dependency-type: direct:production
300
+ update-type: version-update:semver-patch
301
+ dependency-group: python-packages
302
+ - dependency-name: zipp
303
+ dependency-type: direct:production
304
+ update-type: version-update:semver-minor
305
+ dependency-group: python-packages
306
+ ...
307
+ - KeyError fix with gists. [John Doe]
308
+ - Fix punctuation in README. [Jakub Wilk]
309
+
310
+
311
+ 0.46.0 (2024-09-11)
312
+ -------------------
7
313
 
8
314
  Fix
9
315
  ~~~
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: github-backup
3
- Version: 0.46.0
3
+ Version: 0.48.0
4
4
  Summary: backup a github user or organization
5
5
  Home-page: http://github.com/josegonzalez/python-github-backup
6
6
  Author: Jose Diaz-Gonzalez
@@ -186,7 +186,7 @@ Customise the permissions for your use case, but for a personal account full bac
186
186
 
187
187
  **User permissions**: Read access to followers, starring, and watching.
188
188
 
189
- **Repository permissions**: Read access to code, commit statuses, issues, metadata, pages, pull requests, and repository hooks.
189
+ **Repository permissions**: Read access to contents, issues, metadata, pull requests, and webhooks.
190
190
 
191
191
 
192
192
  Prefer SSH
@@ -244,7 +244,7 @@ Gotchas / Known-issues
244
244
  All is not everything
245
245
  ---------------------
246
246
 
247
- 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 (``--starred-gists``) or cloning starred gist repos (``--starred-gists``). See examples for more.
247
+ 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.
248
248
 
249
249
  Cloning all starred size
250
250
  ------------------------
@@ -273,12 +273,6 @@ It's therefore recommended to only use the incremental argument if the output/re
273
273
 
274
274
  This is due to needing the correct permission for ``--hooks`` on public repos.
275
275
 
276
- 2. **Releases blocking**
277
-
278
- A known ``--releases`` (required for ``--assets``) error will sometimes block the backup.
279
-
280
- If you're backing up a lot of repositories with releases e.g. an organisation or ``--all-starred``. You may need to remove ``--releases`` (and therefore ``--assets``) to complete a backup. Documented in `issue 209 <https://github.com/josegonzalez/python-github-backup/issues/209>`_.
281
-
282
276
 
283
277
  "bare" is actually "mirror"
284
278
  ---------------------------
@@ -167,7 +167,7 @@ Customise the permissions for your use case, but for a personal account full bac
167
167
 
168
168
  **User permissions**: Read access to followers, starring, and watching.
169
169
 
170
- **Repository permissions**: Read access to code, commit statuses, issues, metadata, pages, pull requests, and repository hooks.
170
+ **Repository permissions**: Read access to contents, issues, metadata, pull requests, and webhooks.
171
171
 
172
172
 
173
173
  Prefer SSH
@@ -225,7 +225,7 @@ Gotchas / Known-issues
225
225
  All is not everything
226
226
  ---------------------
227
227
 
228
- 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 (``--starred-gists``) or cloning starred gist repos (``--starred-gists``). See examples for more.
228
+ 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.
229
229
 
230
230
  Cloning all starred size
231
231
  ------------------------
@@ -254,12 +254,6 @@ It's therefore recommended to only use the incremental argument if the output/re
254
254
 
255
255
  This is due to needing the correct permission for ``--hooks`` on public repos.
256
256
 
257
- 2. **Releases blocking**
258
-
259
- A known ``--releases`` (required for ``--assets``) error will sometimes block the backup.
260
-
261
- If you're backing up a lot of repositories with releases e.g. an organisation or ``--all-starred``. You may need to remove ``--releases`` (and therefore ``--assets``) to complete a backup. Documented in `issue 209 <https://github.com/josegonzalez/python-github-backup/issues/209>`_.
262
-
263
257
 
264
258
  "bare" is actually "mirror"
265
259
  ---------------------------
@@ -167,7 +167,7 @@ Customise the permissions for your use case, but for a personal account full bac
167
167
 
168
168
  **User permissions**: Read access to followers, starring, and watching.
169
169
 
170
- **Repository permissions**: Read access to code, commit statuses, issues, metadata, pages, pull requests, and repository hooks.
170
+ **Repository permissions**: Read access to contents, issues, metadata, pull requests, and webhooks.
171
171
 
172
172
 
173
173
  Prefer SSH
@@ -225,7 +225,7 @@ Gotchas / Known-issues
225
225
  All is not everything
226
226
  ---------------------
227
227
 
228
- 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 (``--starred-gists``) or cloning starred gist repos (``--starred-gists``). See examples for more.
228
+ 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.
229
229
 
230
230
  Cloning all starred size
231
231
  ------------------------
@@ -254,12 +254,6 @@ It's therefore recommended to only use the incremental argument if the output/re
254
254
 
255
255
  This is due to needing the correct permission for ``--hooks`` on public repos.
256
256
 
257
- 2. **Releases blocking**
258
-
259
- A known ``--releases`` (required for ``--assets``) error will sometimes block the backup.
260
-
261
- If you're backing up a lot of repositories with releases e.g. an organisation or ``--all-starred``. You may need to remove ``--releases`` (and therefore ``--assets``) to complete a backup. Documented in `issue 209 <https://github.com/josegonzalez/python-github-backup/issues/209>`_.
262
-
263
257
 
264
258
  "bare" is actually "mirror"
265
259
  ---------------------------
@@ -0,0 +1 @@
1
+ __version__ = "0.48.0"
@@ -15,15 +15,16 @@ import platform
15
15
  import re
16
16
  import select
17
17
  import socket
18
+ import ssl
18
19
  import subprocess
19
20
  import sys
20
21
  import time
22
+ from datetime import datetime
21
23
  from http.client import IncompleteRead
22
24
  from urllib.error import HTTPError, URLError
23
25
  from urllib.parse import quote as urlquote
24
26
  from urllib.parse import urlencode, urlparse
25
27
  from urllib.request import HTTPRedirectHandler, Request, build_opener, urlopen
26
- from datetime import datetime
27
28
 
28
29
  try:
29
30
  from . import __version__
@@ -36,6 +37,23 @@ FNULL = open(os.devnull, "w")
36
37
  FILE_URI_PREFIX = "file://"
37
38
  logger = logging.getLogger(__name__)
38
39
 
40
+ https_ctx = ssl.create_default_context()
41
+ if not https_ctx.get_ca_certs():
42
+ import warnings
43
+
44
+ warnings.warn(
45
+ "\n\nYOUR DEFAULT CA CERTS ARE EMPTY.\n"
46
+ + "PLEASE POPULATE ANY OF:"
47
+ + "".join(
48
+ ["\n - " + x for x in ssl.get_default_verify_paths() if type(x) is str]
49
+ )
50
+ + "\n",
51
+ stacklevel=2,
52
+ )
53
+ import certifi
54
+
55
+ https_ctx = ssl.create_default_context(cafile=certifi.where())
56
+
39
57
 
40
58
  def logging_subprocess(
41
59
  popenargs, stdout_log_level=logging.DEBUG, stderr_log_level=logging.ERROR, **kwargs
@@ -511,7 +529,7 @@ def get_github_host(args):
511
529
 
512
530
 
513
531
  def read_file_contents(file_uri):
514
- return open(file_uri[len(FILE_URI_PREFIX):], "rt").readline().strip()
532
+ return open(file_uri[len(FILE_URI_PREFIX) :], "rt").readline().strip()
515
533
 
516
534
 
517
535
  def get_github_repo_url(args, repository):
@@ -666,7 +684,7 @@ def _get_response(request, auth, template):
666
684
  while True:
667
685
  should_continue = False
668
686
  try:
669
- r = urlopen(request)
687
+ r = urlopen(request, context=https_ctx)
670
688
  except HTTPError as exc:
671
689
  errors, should_continue = _request_http_error(exc, auth, errors) # noqa
672
690
  r = exc
@@ -782,13 +800,15 @@ def download_file(url, path, auth, as_app=False, fine=False):
782
800
  if os.path.exists(path):
783
801
  return
784
802
 
785
- request = _construct_request(per_page=100,
786
- page=1,
787
- query_args={},
788
- template=url,
789
- auth=auth,
790
- as_app=as_app,
791
- fine=fine)
803
+ request = _construct_request(
804
+ per_page=100,
805
+ page=1,
806
+ query_args={},
807
+ template=url,
808
+ auth=auth,
809
+ as_app=as_app,
810
+ fine=fine,
811
+ )
792
812
  request.add_header("Accept", "application/octet-stream")
793
813
  opener = build_opener(S3HTTPRedirectHandler)
794
814
 
@@ -931,11 +951,15 @@ def filter_repositories(args, unfiltered_repositories):
931
951
  if r.get("language") and r.get("language").lower() in languages
932
952
  ] # noqa
933
953
  if name_regex:
934
- repositories = [r for r in repositories if name_regex.match(r["name"])]
954
+ repositories = [
955
+ r for r in repositories if "name" not in r or name_regex.match(r["name"])
956
+ ]
935
957
  if args.skip_archived:
936
958
  repositories = [r for r in repositories if not r.get("archived")]
937
959
  if args.exclude:
938
- repositories = [r for r in repositories if r["name"] not in args.exclude]
960
+ repositories = [
961
+ r for r in repositories if "name" not in r or r["name"] not in args.exclude
962
+ ]
939
963
 
940
964
  return repositories
941
965
 
@@ -1231,10 +1255,16 @@ def backup_releases(args, repo_cwd, repository, repos_template, include_assets=F
1231
1255
  if args.skip_prerelease:
1232
1256
  releases = [r for r in releases if not r["prerelease"] and not r["draft"]]
1233
1257
 
1234
- if args.number_of_latest_releases and args.number_of_latest_releases < len(releases):
1235
- releases.sort(key=lambda item: datetime.strptime(item["created_at"], "%Y-%m-%dT%H:%M:%SZ"),
1236
- reverse=True)
1237
- releases = releases[:args.number_of_latest_releases]
1258
+ if args.number_of_latest_releases and args.number_of_latest_releases < len(
1259
+ releases
1260
+ ):
1261
+ releases.sort(
1262
+ key=lambda item: datetime.strptime(
1263
+ item["created_at"], "%Y-%m-%dT%H:%M:%SZ"
1264
+ ),
1265
+ reverse=True,
1266
+ )
1267
+ releases = releases[: args.number_of_latest_releases]
1238
1268
  logger.info("Saving the latest {0} releases to disk".format(len(releases)))
1239
1269
  else:
1240
1270
  logger.info("Saving {0} releases to disk".format(len(releases)))
@@ -1261,7 +1291,7 @@ def backup_releases(args, repo_cwd, repository, repos_template, include_assets=F
1261
1291
  os.path.join(release_assets_cwd, asset["name"]),
1262
1292
  get_auth(args, encode=not args.as_app),
1263
1293
  as_app=args.as_app,
1264
- fine=True if args.token_fine is not None else False
1294
+ fine=True if args.token_fine is not None else False,
1265
1295
  )
1266
1296
 
1267
1297
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: github-backup
3
- Version: 0.46.0
3
+ Version: 0.48.0
4
4
  Summary: backup a github user or organization
5
5
  Home-page: http://github.com/josegonzalez/python-github-backup
6
6
  Author: Jose Diaz-Gonzalez
@@ -186,7 +186,7 @@ Customise the permissions for your use case, but for a personal account full bac
186
186
 
187
187
  **User permissions**: Read access to followers, starring, and watching.
188
188
 
189
- **Repository permissions**: Read access to code, commit statuses, issues, metadata, pages, pull requests, and repository hooks.
189
+ **Repository permissions**: Read access to contents, issues, metadata, pull requests, and webhooks.
190
190
 
191
191
 
192
192
  Prefer SSH
@@ -244,7 +244,7 @@ Gotchas / Known-issues
244
244
  All is not everything
245
245
  ---------------------
246
246
 
247
- 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 (``--starred-gists``) or cloning starred gist repos (``--starred-gists``). See examples for more.
247
+ 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.
248
248
 
249
249
  Cloning all starred size
250
250
  ------------------------
@@ -273,12 +273,6 @@ It's therefore recommended to only use the incremental argument if the output/re
273
273
 
274
274
  This is due to needing the correct permission for ``--hooks`` on public repos.
275
275
 
276
- 2. **Releases blocking**
277
-
278
- A known ``--releases`` (required for ``--assets``) error will sometimes block the backup.
279
-
280
- If you're backing up a lot of repositories with releases e.g. an organisation or ``--all-starred``. You may need to remove ``--releases`` (and therefore ``--assets``) to complete a backup. Documented in `issue 209 <https://github.com/josegonzalez/python-github-backup/issues/209>`_.
281
-
282
276
 
283
277
  "bare" is actually "mirror"
284
278
  ---------------------------
@@ -0,0 +1,39 @@
1
+ autopep8==2.3.1
2
+ black==24.10.0
3
+ bleach==6.2.0
4
+ certifi==2024.12.14
5
+ charset-normalizer==3.4.1
6
+ click==8.1.8
7
+ colorama==0.4.6
8
+ docutils==0.21.2
9
+ flake8==7.1.1
10
+ gitchangelog==3.0.4
11
+ idna==3.10
12
+ importlib-metadata==8.5.0
13
+ jaraco.classes==3.4.0
14
+ keyring==25.6.0
15
+ markdown-it-py==3.0.0
16
+ mccabe==0.7.0
17
+ mdurl==0.1.2
18
+ more-itertools==10.5.0
19
+ mypy-extensions==1.0.0
20
+ packaging==24.2
21
+ pathspec==0.12.1
22
+ pkginfo==1.12.0
23
+ platformdirs==4.3.6
24
+ pycodestyle==2.12.1
25
+ pyflakes==3.2.0
26
+ Pygments==2.18.0
27
+ readme-renderer==44.0
28
+ requests==2.32.3
29
+ requests-toolbelt==1.0.0
30
+ restructuredtext-lint==1.4.0
31
+ rfc3986==2.0.0
32
+ rich==13.9.4
33
+ setuptools==75.6.0
34
+ six==1.17.0
35
+ tqdm==4.67.1
36
+ twine==6.0.1
37
+ urllib3==2.3.0
38
+ webencodings==0.5.1
39
+ zipp==3.21.0
@@ -1 +0,0 @@
1
- __version__ = "0.46.0"
@@ -1,39 +0,0 @@
1
- autopep8==2.3.1
2
- black==24.4.2
3
- bleach==6.1.0
4
- certifi==2024.7.4
5
- charset-normalizer==3.3.2
6
- click==8.1.7
7
- colorama==0.4.6
8
- docutils==0.21.2
9
- flake8==7.1.0
10
- gitchangelog==3.0.4
11
- idna==3.7
12
- importlib-metadata==7.2.1
13
- jaraco.classes==3.4.0
14
- keyring==25.2.1
15
- markdown-it-py==3.0.0
16
- mccabe==0.7.0
17
- mdurl==0.1.2
18
- more-itertools==10.3.0
19
- mypy-extensions==1.0.0
20
- packaging==24.1
21
- pathspec==0.12.1
22
- pkginfo==1.11.1
23
- platformdirs==4.2.2
24
- pycodestyle==2.12.0
25
- pyflakes==3.2.0
26
- Pygments==2.18.0
27
- readme-renderer==43.0
28
- requests==2.32.3
29
- requests-toolbelt==1.0.0
30
- restructuredtext-lint==1.4.0
31
- rfc3986==2.0.0
32
- rich==13.7.1
33
- setuptools==70.1.1
34
- six==1.16.0
35
- tqdm==4.66.4
36
- twine==5.1.0
37
- urllib3==2.2.2
38
- webencodings==0.5.1
39
- zipp==3.19.2
File without changes
File without changes