pulp-python 3.10.0__tar.gz → 3.10.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. pulp_python-3.10.2/CHANGES.md +435 -0
  2. {pulp-python-3.10.0 → pulp_python-3.10.2}/MANIFEST.in +2 -1
  3. pulp_python-3.10.2/PKG-INFO +43 -0
  4. {pulp-python-3.10.0 → pulp_python-3.10.2}/functest_requirements.txt +5 -3
  5. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/__init__.py +1 -1
  6. pulp_python-3.10.2/pulp_python/app/fields.py +12 -0
  7. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/models.py +5 -1
  8. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/pypi/serializers.py +4 -3
  9. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/pypi/views.py +2 -1
  10. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/serializers.py +7 -6
  11. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/tasks/sync.py +24 -3
  12. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_crud_content_unit.py +15 -0
  13. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_download_content.py +32 -1
  14. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_full_mirror.py +13 -8
  15. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_pypi_apis.py +0 -20
  16. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_sync.py +17 -0
  17. pulp_python-3.10.2/pulp_python/tests/functional/conftest.py +185 -0
  18. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/constants.py +7 -4
  19. pulp_python-3.10.2/pulp_python.egg-info/PKG-INFO +43 -0
  20. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python.egg-info/SOURCES.txt +2 -1
  21. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python.egg-info/entry_points.txt +0 -1
  22. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python.egg-info/requires.txt +2 -2
  23. pulp_python-3.10.2/pyproject.toml +72 -0
  24. pulp_python-3.10.2/requirements.txt +4 -0
  25. {pulp-python-3.10.0 → pulp_python-3.10.2}/setup.py +1 -1
  26. pulp_python-3.10.2/test_requirements.txt +3 -0
  27. pulp-python-3.10.0/CHANGES.rst +0 -589
  28. pulp-python-3.10.0/PKG-INFO +0 -28
  29. pulp-python-3.10.0/pulp_python/tests/functional/conftest.py +0 -94
  30. pulp-python-3.10.0/pulp_python.egg-info/PKG-INFO +0 -28
  31. pulp-python-3.10.0/pyproject.toml +0 -27
  32. pulp-python-3.10.0/requirements.txt +0 -4
  33. pulp-python-3.10.0/test_requirements.txt +0 -10
  34. {pulp-python-3.10.0 → pulp_python-3.10.2}/COMMITMENT +0 -0
  35. {pulp-python-3.10.0 → pulp_python-3.10.2}/COPYRIGHT +0 -0
  36. {pulp-python-3.10.0 → pulp_python-3.10.2}/LICENSE +0 -0
  37. {pulp-python-3.10.0 → pulp_python-3.10.2}/README.md +0 -0
  38. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/__init__.py +0 -0
  39. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0001_initial.py +0 -0
  40. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +0 -0
  41. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0003_new_sync_filters.py +0 -0
  42. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +0 -0
  43. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +0 -0
  44. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +0 -0
  45. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +0 -0
  46. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +0 -0
  47. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +0 -0
  48. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0010_update_json_field.py +0 -0
  49. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +0 -0
  50. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/migrations/__init__.py +0 -0
  51. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/pypi/__init__.py +0 -0
  52. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/settings.py +0 -0
  53. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/tasks/__init__.py +0 -0
  54. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/tasks/publish.py +0 -0
  55. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/tasks/upload.py +0 -0
  56. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/urls.py +0 -0
  57. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/utils.py +0 -0
  58. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/viewsets.py +0 -0
  59. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/webserver_snippets/__init__.py +0 -0
  60. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/webserver_snippets/apache.conf +0 -0
  61. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
  62. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/__init__.py +0 -0
  63. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/__init__.py +0 -0
  64. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/__init__.py +0 -0
  65. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_auto_publish.py +0 -0
  66. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_consume_content.py +0 -0
  67. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_crud_publications.py +0 -0
  68. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/api/test_crud_remotes.py +0 -0
  69. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/functional/utils.py +0 -0
  70. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/unit/__init__.py +0 -0
  71. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/unit/test_models.py +0 -0
  72. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/upgrade/__init__.py +0 -0
  73. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/upgrade/post/__init__.py +0 -0
  74. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/upgrade/post/test_publish.py +0 -0
  75. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/upgrade/pre/__init__.py +0 -0
  76. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python/tests/upgrade/pre/test_publish.py +0 -0
  77. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python.egg-info/dependency_links.txt +0 -0
  78. {pulp-python-3.10.0 → pulp_python-3.10.2}/pulp_python.egg-info/top_level.txt +0 -0
  79. {pulp-python-3.10.0 → pulp_python-3.10.2}/setup.cfg +0 -0
  80. {pulp-python-3.10.0 → pulp_python-3.10.2}/unittest_requirements.txt +0 -0
@@ -0,0 +1,435 @@
1
+ # Changelog
2
+
3
+ [//]: # (You should *NOT* be adding new change log entries to this file, this)
4
+ [//]: # (file is managed by towncrier. You *may* edit previous change logs to)
5
+ [//]: # (fix problems like typo corrections or such.)
6
+ [//]: # (To add a new change log entry, please see the contributing docs.)
7
+ [//]: # (WARNING: Don't drop the towncrier directive!)
8
+
9
+ [//]: # (towncrier release notes start)
10
+
11
+ ## 3.10.1 (2025-07-23) {: #3.10.1 }
12
+
13
+ ### Bugfixes
14
+
15
+ - Fixed tls_validation not being disabled when set to false on the remote.
16
+ [#653](https://github.com/pulp/pulp_python/issues/653)
17
+ - Fixed uploads not supporting packages using metadata spec 2.3
18
+ [#682](https://github.com/pulp/pulp_python/issues/682)
19
+ - Fixed the `package_types` filter breaking other remote filters.
20
+ [#691](https://github.com/pulp/pulp_python/issues/691)
21
+ - Fixed package name normalization issue preventing syncing packages with "." or "_" in their names.
22
+ [#716](https://github.com/pulp/pulp_python/issues/716)
23
+ - Fixed the JSONField specification so it doesn't break ruby bindings.
24
+ See context [here](https://github.com/pulp/pulp_rpm/issues/3639).
25
+
26
+ ---
27
+
28
+ ## 3.10.0 (2023-05-17) {: #3.10.0 }
29
+
30
+ ### Features
31
+
32
+ - Added compatibility for pulpcore 3.25, pulpcore support is now >=3.25,<3.40.
33
+ [#605](https://github.com/pulp/pulp_python/issues/605)
34
+
35
+ ---
36
+
37
+ ## 3.9.0 (2023-03-17) {: #3.9.0 }
38
+
39
+ ### Features
40
+
41
+ - Added version filter to package list endpoint.
42
+ [#577](https://github.com/pulp/pulp_python/issues/577)
43
+ - Allow duplicate uploads to return existing packages instead of erring.
44
+ [#590](https://github.com/pulp/pulp_python/issues/590)
45
+
46
+ ### Bugfixes
47
+
48
+ - Fixed pull-through caching ignoring remote proxy settings.
49
+ [#553](https://github.com/pulp/pulp_python/issues/553)
50
+ - Changed includes and excludes openapi schema to report as array of strings instead of object.
51
+ [#576](https://github.com/pulp/pulp_python/issues/576)
52
+ - Fixed syncing ignoring remote proxy.
53
+ [#581](https://github.com/pulp/pulp_python/issues/581)
54
+ - Fixed duplicate operationID for generated PyPI simple endpoints schema.
55
+ [#594](https://github.com/pulp/pulp_python/issues/594)
56
+
57
+ ---
58
+
59
+ ## 3.8.0 (2022-12-19) {: #3.8.0 }
60
+
61
+ ### Bugfixes
62
+
63
+ - Fixed syncing failing when using bandersnatch 5.3.0
64
+ [#554](https://github.com/pulp/pulp_python/issues/554)
65
+ - Prevent .netrc file from being read on syncs.
66
+ [#566](https://github.com/pulp/pulp_python/issues/566)
67
+ - Fix 500 error when pip installing using object storage.
68
+ [#572](https://github.com/pulp/pulp_python/issues/572)
69
+
70
+ ### Improved Documentation
71
+
72
+ - Documented `pulp_python` specific settings.
73
+ [#571](https://github.com/pulp/pulp_python/issues/571)
74
+
75
+ ---
76
+
77
+ ## 3.7.3 (2022-10-06) {: #3.7.3 }
78
+
79
+ ### Bugfixes
80
+
81
+ - Prevent .netrc file from being read on syncs.
82
+ [#566](https://github.com/pulp/pulp_python/issues/566)
83
+
84
+ ---
85
+
86
+ ## 3.7.2 (2022-08-04) {: #3.7.2 }
87
+
88
+ ### Bugfixes
89
+
90
+ - Fixed syncing failing when using bandersnatch 5.3.0
91
+ [#554](https://github.com/pulp/pulp_python/issues/554)
92
+
93
+ ---
94
+
95
+ ## 3.7.1 (2022-06-29) {: #3.7.1 }
96
+
97
+ No significant changes.
98
+
99
+ ---
100
+
101
+ ## 3.7.0 (2022-06-22) {: #3.7.0 }
102
+
103
+ ### Features
104
+
105
+ - Added ability to fully sync repositories that don't support the PyPI XMLRPC endpoints. Full Pulp-to-Pulp syncing is now available.
106
+ [#462](https://github.com/pulp/pulp_python/issues/462)
107
+
108
+ ### Bugfixes
109
+
110
+ - Ensured temporary package uploads are written to worker's directory instead of /tmp.
111
+ [#505](https://github.com/pulp/pulp_python/issues/505)
112
+
113
+ ### Misc
114
+
115
+ - [#503](https://github.com/pulp/pulp_python/issues/503)
116
+
117
+ ---
118
+
119
+ ## 3.6.1 (2022-08-19) {: #3.6.1 }
120
+
121
+ ### Bugfixes
122
+
123
+ - Fixed syncing failing when using bandersnatch 5.3.0
124
+ [#554](https://github.com/pulp/pulp_python/issues/554)
125
+
126
+ ---
127
+
128
+ ## 3.6.0 (2021-12-15) {: #3.6.0 }
129
+
130
+ ### Features
131
+
132
+ - `pulp_python` now supports pull-through caching. Add a remote to a distribution to enable this feature.
133
+ [#381](https://github.com/pulp/pulp_python/issues/381)
134
+ - Enable Azure support
135
+ [#458](https://github.com/pulp/pulp_python/issues/458)
136
+
137
+ ### Bugfixes
138
+
139
+ - Fixed proxy url not being passed during sync
140
+ [#433](https://github.com/pulp/pulp_python/issues/433)
141
+ - Changed the use of `dispatch` to match the signature from pulpcore>=3.15.
142
+ [#443](https://github.com/pulp/pulp_python/issues/443)
143
+ - Fixed package name normalization issue preventing installing packages with "." or "_" in their names.
144
+ [#467](https://github.com/pulp/pulp_python/issues/467)
145
+
146
+ ---
147
+
148
+ ## 3.5.2 (2021-10-05) {: #3.5.2 }
149
+
150
+ ### Bugfixes
151
+
152
+ - Fixed proxy url not being passed during sync
153
+ (backported from #445)
154
+ [#436](https://github.com/pulp/pulp_python/issues/436)
155
+ - Changed the use of `dispatch` to match the signature from pulpcore>=3.15.
156
+ (backported from #443)
157
+ [#446](https://github.com/pulp/pulp_python/issues/446)
158
+
159
+ ---
160
+
161
+ ## 3.5.1 (2021-09-10) {: #3.5.1 }
162
+
163
+ ### Bugfixes
164
+
165
+ - Fixed proxy url not being passed during sync
166
+ (backported from #433)
167
+ [#436](https://github.com/pulp/pulp_python/issues/436)
168
+
169
+ ---
170
+
171
+ ## 3.5.0 (2021-08-30) {: #3.5.0 }
172
+
173
+ ### Features
174
+
175
+ - Python package content can now be filtered by their sha256
176
+ [#404](https://github.com/pulp/pulp_python/issues/404)
177
+ - Added new setting `PYPI_API_HOSTNAME` that is used to form a distribution's `base_url`. Defaults to the machine's FQDN.
178
+ [#412](https://github.com/pulp/pulp_python/issues/412)
179
+ - Enabled reclaim disk feature provided by pulpcore 3.15+.
180
+ [#425](https://github.com/pulp/pulp_python/issues/425)
181
+
182
+ ### Bugfixes
183
+
184
+ - Fixed twine upload failing when using remote storage backends
185
+ [#400](https://github.com/pulp/pulp_python/issues/400)
186
+ - Fixed improper metadata serving when using publications with S3 storage
187
+ [#413](https://github.com/pulp/pulp_python/issues/413)
188
+
189
+ ### Deprecations and Removals
190
+
191
+ - Dropped support for Python < 3.8.
192
+ [#402](https://github.com/pulp/pulp_python/issues/402)
193
+
194
+ ### Misc
195
+
196
+ - [#408](https://github.com/pulp/pulp_python/issues/408), [#427](https://github.com/pulp/pulp_python/issues/427)
197
+
198
+ ---
199
+
200
+ ## 3.4.1 (2021-08-24) {: #3.4.1 }
201
+
202
+ ### Features
203
+
204
+ - Python package content can now be filtered by their sha256
205
+ (backported from #404)
206
+ [#419](https://github.com/pulp/pulp_python/issues/419)
207
+
208
+ ### Bugfixes
209
+
210
+ - Fixed improper metadata serving when using publications with S3 storage
211
+ (backported from #413)
212
+ [#418](https://github.com/pulp/pulp_python/issues/418)
213
+ - Fixed twine upload failing when using remote storage backends
214
+ (backported from #400)
215
+ [#420](https://github.com/pulp/pulp_python/issues/420)
216
+
217
+ ---
218
+
219
+ ## 3.4.0 (2021-06-17) {: #3.4.0 }
220
+
221
+ ### Features
222
+
223
+ - Added `twine` (and other similar Python tools) package upload support
224
+ [#342](https://github.com/pulp/pulp_python/issues/342)
225
+ - PyPI endpoints are now available at `/pypi/{base_path}/`
226
+ [#376](https://github.com/pulp/pulp_python/issues/376)
227
+ - Changed the global uniqueness constraint for `PythonPackageContent` to its sha256 digest
228
+ [#380](https://github.com/pulp/pulp_python/issues/380)
229
+
230
+ ### Bugfixes
231
+
232
+ - Added missing fields to PyPI live JSON API to be compliant with core metadata version 2.1
233
+ [#352](https://github.com/pulp/pulp_python/issues/352)
234
+ - Fixed sync to use default concurrency (10) when download_concurrency was not specified
235
+ [#391](https://github.com/pulp/pulp_python/issues/391)
236
+
237
+ ---
238
+
239
+ ## 3.3.0 (2021-05-27) {: #3.3.0 }
240
+
241
+ ### Features
242
+
243
+ - Add support for automatic publishing and distributing.
244
+ [#365](https://github.com/pulp/pulp_python/issues/365)
245
+
246
+ ### Bugfixes
247
+
248
+ - Fixed publications publishing more content than was in the repository
249
+ [#362](https://github.com/pulp/pulp_python/issues/362)
250
+
251
+ ### Improved Documentation
252
+
253
+ - Update syntax in doc for cli repository content add command
254
+ [#368](https://github.com/pulp/pulp_python/issues/368)
255
+
256
+ ### Misc
257
+
258
+ - [#347](https://github.com/pulp/pulp_python/issues/347), [#360](https://github.com/pulp/pulp_python/issues/360), [#371](https://github.com/pulp/pulp_python/issues/371)
259
+
260
+ ---
261
+
262
+ ## 3.2.0 (2021-04-14) {: #3.2.0 }
263
+
264
+ ### Features
265
+
266
+ - Added new sync filter keep_latest_packages to specify how many latest versions of packages to sync
267
+ [#339](https://github.com/pulp/pulp_python/issues/339)
268
+ - Added new sync filters package_types and exclude_platforms to specify package types to sync
269
+ [#341](https://github.com/pulp/pulp_python/issues/341)
270
+
271
+ ### Misc
272
+
273
+ - [#354](https://github.com/pulp/pulp_python/issues/354)
274
+
275
+ ---
276
+
277
+ ## 3.1.0 (2021-03-12) {: #3.1.0 }
278
+
279
+ ### Features
280
+
281
+ - Python content can now be filtered by requires_python
282
+ [#3629](https://pulp.plan.io/issues/3629)
283
+
284
+ ### Improved Documentation
285
+
286
+ - Updated workflows to use Pulp CLI commands
287
+ [#8364](https://pulp.plan.io/issues/8364)
288
+
289
+ ---
290
+
291
+ ## 3.0.0 (2021-01-12) {: #3.0.0 }
292
+
293
+ ### Bugfixes
294
+
295
+ - Remote proxy settings are now passed to Bandersnatch while syncing
296
+ [#7864](https://pulp.plan.io/issues/7864)
297
+
298
+ ### Improved Documentation
299
+
300
+ - Added bullet list of Python Plugin features and a tech preview page for new experimental features
301
+ [#7628](https://pulp.plan.io/issues/7628)
302
+
303
+ ---
304
+
305
+ ## 3.0.0b12 (2020-11-05)
306
+
307
+ ### Features
308
+
309
+ - Pulp Python can now fully mirror all packages from PyPi
310
+ [#985](https://pulp.plan.io/issues/985)
311
+ - Implemented PyPi's json API at content endpoint '/pypi/{package-name}/json'. Pulp can now perform basic syncing on other Pulp Python instances.
312
+ [#2886](https://pulp.plan.io/issues/2886)
313
+ - Pulp Python now uses Bandersnatch to perform syncing and filtering of package metadata
314
+ [#6930](https://pulp.plan.io/issues/6930)
315
+
316
+ ### Bugfixes
317
+
318
+ - Sync now includes python package's classifiers in the content unit
319
+ [#3627](https://pulp.plan.io/issues/3627)
320
+ - Policy can now be specified when creating a remote from a Bandersnatch config
321
+ [#7331](https://pulp.plan.io/issues/7331)
322
+ - Includes/excludes/prereleases fields are now properly set in a remote from Bandersnatch config
323
+ [#7392](https://pulp.plan.io/issues/7392)
324
+
325
+ ### Improved Documentation
326
+
327
+ - Fixed makemigrations commands in the install docs
328
+ [#5386](https://pulp.plan.io/issues/5386)
329
+
330
+ ### Misc
331
+
332
+ - [#6875](https://pulp.plan.io/issues/6875), [#7401](https://pulp.plan.io/issues/7401)
333
+
334
+ ---
335
+
336
+ ## 3.0.0b11 (2020-08-18)
337
+
338
+ Compatibility update for pulpcore 3.6
339
+
340
+ ---
341
+
342
+ ## 3.0.0b10 (2020-08-05)
343
+
344
+ ### Features
345
+
346
+ - Added a new endpoint to remotes "/from_bandersnatch" that allows for Python remote creation from a Bandersnatch config file.
347
+ [#6929](https://pulp.plan.io/issues/6929)
348
+
349
+ ### Bugfixes
350
+
351
+ - Including requirements.txt on MANIFEST.in
352
+ [#6891](https://pulp.plan.io/issues/6891)
353
+ - Updating API to not return publications that aren't complete.
354
+ [#6987](https://pulp.plan.io/issues/6987)
355
+ - Fixed an issue that prevented 'on_demand' content from being published.
356
+ [#7128](https://pulp.plan.io/issues/7128)
357
+
358
+ ### Improved Documentation
359
+
360
+ - Change the commands for publication and distribution on the publish workflow to use their respective scripts already defined in _scripts.
361
+ [#6877](https://pulp.plan.io/issues/6877)
362
+ - Updated sync.sh, publication.sh and distribution.sh in docs/_scripts to reference wait_until_task_finished function from base.sh
363
+ [#6918](https://pulp.plan.io/issues/6918)
364
+
365
+ ---
366
+
367
+ ## 3.0.0b9 (2020-06-01)
368
+
369
+ ### Features
370
+
371
+ - Add upload functionality to the python contents endpoints.
372
+ [#5464](https://pulp.plan.io/issues/5464)
373
+
374
+ ### Bugfixes
375
+
376
+ - Fixed the 500 error returned by the OpenAPI schema endpoint.
377
+ [#5452](https://pulp.plan.io/issues/5452)
378
+
379
+ ### Improved Documentation
380
+
381
+ - Change the prefix of Pulp services from pulp-* to pulpcore-*
382
+ [#4554](https://pulp.plan.io/issues/4554)
383
+ - Added "python/python/" to fix two commands in repo.sh, fixed export command in sync.sh
384
+ [#6790](https://pulp.plan.io/issues/6790)
385
+ - Added "index.html" to the relative_path field for both project_metadata and index_metadata. Added a "/" to fix the link in the simple_index_template.
386
+ [#6792](https://pulp.plan.io/issues/6792)
387
+ - Updated the workflow documentation for upload.html. Fixed the workflow commands and added more details to the instructions.
388
+ [#6854](https://pulp.plan.io/issues/6854)
389
+
390
+ ### Deprecations and Removals
391
+
392
+ - Change _id, _created, _last_updated, _href to pulp_id, pulp_created, pulp_last_updated, pulp_href
393
+ [#5457](https://pulp.plan.io/issues/5457)
394
+
395
+ - Remove "_" from _versions_href, _latest_version_href
396
+ [#5548](https://pulp.plan.io/issues/5548)
397
+
398
+ - Removing base field: _type .
399
+ [#5550](https://pulp.plan.io/issues/5550)
400
+
401
+ - Sync is no longer available at the {remote_href}/sync/ repository={repo_href} endpoint. Instead, use POST {repo_href}/sync/ remote={remote_href}.
402
+
403
+ Creating / listing / editing / deleting python repositories is now performed on /pulp/api/v3/python/python/ instead of /pulp/api/v3/repositories/. Only python content can be present in a python repository, and only a python repository can hold python content.
404
+ [#5625](https://pulp.plan.io/issues/5625)
405
+
406
+ ### Misc
407
+
408
+ - [#remotetests](https://pulp.plan.io/issues/remotetests), [#4681](https://pulp.plan.io/issues/4681), [#4682](https://pulp.plan.io/issues/4682), [#5304](https://pulp.plan.io/issues/5304), [#5471](https://pulp.plan.io/issues/5471), [#5580](https://pulp.plan.io/issues/5580), [#5701](https://pulp.plan.io/issues/5701)
409
+
410
+ ---
411
+
412
+ ## 3.0.0b8 (2019-09-16)
413
+
414
+ ### Misc
415
+
416
+ - [#4681](https://pulp.plan.io/issues/4681)
417
+
418
+ ---
419
+
420
+ ## 3.0.0b7 (2019-08-01)
421
+
422
+ ### Features
423
+
424
+ - Users can upload a file to create content and optionally add to a repo in one step known as
425
+ one-shot upload
426
+ [#4396](https://pulp.plan.io/issues/4396)
427
+ - Override the Remote's serializer to allow policy='on_demand' and policy='streamed'.
428
+ [#4990](https://pulp.plan.io/issues/4990)
429
+
430
+ ### Improved Documentation
431
+
432
+ - Switch to using [towncrier](https://github.com/hawkowl/towncrier) for better release notes.
433
+ [#4875](https://pulp.plan.io/issues/4875)
434
+
435
+ ---
@@ -1,10 +1,11 @@
1
1
  include LICENSE
2
2
  include requirements.txt
3
3
  include pyproject.toml
4
- include CHANGES.rst
4
+ include CHANGES.md
5
5
  include COMMITMENT
6
6
  include COPYRIGHT
7
7
  include functest_requirements.txt
8
8
  include test_requirements.txt
9
9
  include unittest_requirements.txt
10
10
  include pulp_python/app/webserver_snippets/*
11
+ exclude releasing.md
@@ -0,0 +1,43 @@
1
+ Metadata-Version: 2.4
2
+ Name: pulp-python
3
+ Version: 3.10.2
4
+ Summary: pulp-python plugin for the Pulp Project
5
+ Home-page: https://www.pulpproject.org
6
+ Author: Pulp Project Developers
7
+ Author-email: pulp-list@redhat.com
8
+ License: GPLv2+
9
+ Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
10
+ Classifier: Operating System :: POSIX :: Linux
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Framework :: Django
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.8
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Requires-Python: >=3.8
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: pulpcore<3.40,>=3.28.0
21
+ Requires-Dist: pkginfo<1.12.0,>=1.10.0
22
+ Requires-Dist: bandersnatch<6.2,>=6.1
23
+ Requires-Dist: pypi-simple<1.0.0,>=0.9.0
24
+ Dynamic: author
25
+ Dynamic: author-email
26
+ Dynamic: classifier
27
+ Dynamic: description
28
+ Dynamic: description-content-type
29
+ Dynamic: home-page
30
+ Dynamic: license
31
+ Dynamic: license-file
32
+ Dynamic: requires-dist
33
+ Dynamic: requires-python
34
+ Dynamic: summary
35
+
36
+ # pulp_python
37
+
38
+ ![Pulp Nightly CI/CD](https://github.com/pulp/pulp_python/actions/workflows/nightly.yml/badge.svg)
39
+
40
+ A Pulp plugin to support hosting your own pip compatible Python packages.
41
+
42
+ For more information, please see the [documentation](https://docs.pulpproject.org/pulp_python/) or the
43
+ [Pulp project page](https://pulpproject.org).
@@ -1,7 +1,9 @@
1
1
  git+https://github.com/pulp/pulp-smash.git#egg=pulp-smash
2
- pytest
2
+ pytest<9
3
+ pytest-custom_exit_code
4
+ pytest-xdist
3
5
  lxml
4
6
  twine
5
7
  pypi-simple
6
- pulpcore-client
7
- pulp-python-client
8
+ trustme~=1.2.0
9
+ pytest-timeout
@@ -8,5 +8,5 @@ class PulpPythonPluginAppConfig(PulpPluginAppConfig):
8
8
 
9
9
  name = "pulp_python.app"
10
10
  label = "python"
11
- version = "3.10.0"
11
+ version = "3.10.2"
12
12
  python_package_name = "pulp-python"
@@ -0,0 +1,12 @@
1
+ from drf_spectacular.utils import extend_schema_field
2
+ from drf_spectacular.types import OpenApiTypes
3
+ from rest_framework import serializers
4
+
5
+
6
+ @extend_schema_field(OpenApiTypes.OBJECT)
7
+ class JSONObjectField(serializers.JSONField):
8
+ """A drf JSONField override to force openapi schema to use 'object' type.
9
+
10
+ Not strictly correct, but we relied on that for a long time.
11
+ See: https://github.com/tfranzel/drf-spectacular/issues/1095
12
+ """
@@ -16,6 +16,7 @@ from pulpcore.plugin.responses import ArtifactResponse
16
16
 
17
17
  from pathlib import PurePath
18
18
  from .utils import (
19
+ canonicalize_name,
19
20
  get_project_metadata_from_artifact,
20
21
  parse_project_metadata,
21
22
  python_content_to_json,
@@ -84,6 +85,8 @@ class PythonDistribution(Distribution):
84
85
  ).latest("pulp_created")
85
86
  except ObjectDoesNotExist:
86
87
  return None
88
+ if len(path.parts) == 2:
89
+ path = PurePath(f"simple/{canonicalize_name(path.parts[1])}")
87
90
  rel_path = f"{path}/index.html"
88
91
  try:
89
92
  ca = (
@@ -100,8 +103,9 @@ class PythonDistribution(Distribution):
100
103
  return ArtifactResponse(ca.artifact, headers=headers)
101
104
 
102
105
  if name:
106
+ normalized = canonicalize_name(name)
103
107
  package_content = PythonPackageContent.objects.filter(
104
- pk__in=self.publication.repository_version.content, name__iexact=name
108
+ pk__in=self.publication.repository_version.content, name__normalize=normalized
105
109
  )
106
110
  # TODO Change this value to the Repo's serial value when implemented
107
111
  headers = {PYPI_LAST_SERIAL: str(PYPI_SERIAL_CONSTANT)}
@@ -3,6 +3,7 @@ from gettext import gettext as _
3
3
 
4
4
  from rest_framework import serializers
5
5
  from pulp_python.app.utils import DIST_EXTENSIONS
6
+ from pulp_python.app import fields
6
7
  from pulpcore.plugin.models import Artifact
7
8
  from django.db.utils import IntegrityError
8
9
 
@@ -27,9 +28,9 @@ class PackageMetadataSerializer(serializers.Serializer):
27
28
  """
28
29
 
29
30
  last_serial = serializers.IntegerField(help_text=_("Cache value from last PyPI sync"))
30
- info = serializers.JSONField(help_text=_("Core metadata of the package"))
31
- releases = serializers.JSONField(help_text=_("List of all the releases of the package"))
32
- urls = serializers.JSONField()
31
+ info = fields.JSONObjectField(help_text=_("Core metadata of the package"))
32
+ releases = fields.JSONObjectField(help_text=_("List of all the releases of the package"))
33
+ urls = fields.JSONObjectField()
33
34
 
34
35
 
35
36
  class PackageUploadSerializer(serializers.Serializer):
@@ -278,7 +278,8 @@ class MetadataView(ViewSet, PyPIMixin):
278
278
  elif meta_path.match("*/json"):
279
279
  name = meta_path.parts[0]
280
280
  if name:
281
- package_content = content.filter(name__iexact=name)
281
+ normalized = canonicalize_name(name)
282
+ package_content = content.filter(name__normalize=normalized)
282
283
  # TODO Change this value to the Repo's serial value when implemented
283
284
  headers = {PYPI_LAST_SERIAL: str(PYPI_SERIAL_CONSTANT)}
284
285
  json_body = python_content_to_json(path, package_content, version=version)
@@ -7,6 +7,7 @@ from pulpcore.plugin import models as core_models
7
7
  from pulpcore.plugin import serializers as core_serializers
8
8
 
9
9
  from pulp_python.app import models as python_models
10
+ from pulp_python.app import fields
10
11
  from pulp_python.app.utils import get_project_metadata_from_artifact, parse_project_metadata
11
12
 
12
13
 
@@ -154,7 +155,7 @@ class PythonPackageContentSerializer(core_serializers.SingleArtifactContentUploa
154
155
  required=False, allow_blank=True,
155
156
  help_text=_('A browsable URL for the project and a label for it, separated by a comma.')
156
157
  )
157
- project_urls = serializers.JSONField(
158
+ project_urls = fields.JSONObjectField(
158
159
  required=False, default=dict,
159
160
  help_text=_('A dictionary of labels and URLs for the project.')
160
161
  )
@@ -167,28 +168,28 @@ class PythonPackageContentSerializer(core_serializers.SingleArtifactContentUploa
167
168
  required=False, allow_blank=True,
168
169
  help_text=_('Field to specify the OS and CPU for which the binary package was compiled. ')
169
170
  )
170
- requires_dist = serializers.JSONField(
171
+ requires_dist = fields.JSONObjectField(
171
172
  required=False, default=list,
172
173
  help_text=_('A JSON list containing names of some other distutils project '
173
174
  'required by this distribution.')
174
175
  )
175
- provides_dist = serializers.JSONField(
176
+ provides_dist = fields.JSONObjectField(
176
177
  required=False, default=list,
177
178
  help_text=_('A JSON list containing names of a Distutils project which is contained'
178
179
  ' within this distribution.')
179
180
  )
180
- obsoletes_dist = serializers.JSONField(
181
+ obsoletes_dist = fields.JSONObjectField(
181
182
  required=False, default=list,
182
183
  help_text=_('A JSON list containing names of a distutils project\'s distribution which '
183
184
  'this distribution renders obsolete, meaning that the two projects should not '
184
185
  'be installed at the same time.')
185
186
  )
186
- requires_external = serializers.JSONField(
187
+ requires_external = fields.JSONObjectField(
187
188
  required=False, default=list,
188
189
  help_text=_('A JSON list containing some dependency in the system that the distribution '
189
190
  'is to be used.')
190
191
  )
191
- classifiers = serializers.JSONField(
192
+ classifiers = fields.JSONObjectField(
192
193
  required=False, default=list,
193
194
  help_text=_('A JSON list containing classification values for a Python package.')
194
195
  )