pulp-python 3.11.0__tar.gz → 3.12.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.
Files changed (97) hide show
  1. pulp-python-3.12.0/CHANGES.md +465 -0
  2. {pulp-python-3.11.0 → pulp-python-3.12.0}/MANIFEST.in +1 -1
  3. {pulp-python-3.11.0 → pulp-python-3.12.0}/PKG-INFO +12 -13
  4. pulp-python-3.12.0/functest_requirements.txt +8 -0
  5. pulp-python-3.12.0/pulp_python/app/__init__.py +66 -0
  6. pulp-python-3.12.0/pulp_python/app/global_access_conditions.py +30 -0
  7. pulp-python-3.12.0/pulp_python/app/migrations/0012_add_domain.py +37 -0
  8. pulp-python-3.12.0/pulp_python/app/migrations/0013_add_rbac_permissions.py +29 -0
  9. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/modelresource.py +4 -1
  10. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/models.py +34 -8
  11. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/pypi/serializers.py +4 -3
  12. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/pypi/views.py +122 -49
  13. pulp-python-3.12.0/pulp_python/app/replica.py +39 -0
  14. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/serializers.py +8 -1
  15. pulp-python-3.12.0/pulp_python/app/settings.py +9 -0
  16. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/tasks/publish.py +4 -2
  17. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/tasks/sync.py +28 -5
  18. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/tasks/upload.py +14 -6
  19. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/urls.py +5 -1
  20. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/utils.py +15 -12
  21. pulp-python-3.12.0/pulp_python/app/viewsets.py +569 -0
  22. pulp-python-3.12.0/pulp_python/pytest_plugin.py +211 -0
  23. pulp-python-3.12.0/pulp_python/tests/functional/api/test_auto_publish.py +41 -0
  24. pulp-python-3.12.0/pulp_python/tests/functional/api/test_consume_content.py +33 -0
  25. pulp-python-3.12.0/pulp_python/tests/functional/api/test_crud_content_unit.py +110 -0
  26. pulp-python-3.12.0/pulp_python/tests/functional/api/test_crud_publications.py +109 -0
  27. pulp-python-3.12.0/pulp_python/tests/functional/api/test_crud_remotes.py +130 -0
  28. pulp-python-3.12.0/pulp_python/tests/functional/api/test_domains.py +264 -0
  29. pulp-python-3.12.0/pulp_python/tests/functional/api/test_download_content.py +89 -0
  30. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/tests/functional/api/test_export_import.py +33 -25
  31. pulp-python-3.12.0/pulp_python/tests/functional/api/test_full_mirror.py +73 -0
  32. pulp-python-3.12.0/pulp_python/tests/functional/api/test_pypi_apis.py +367 -0
  33. pulp-python-3.12.0/pulp_python/tests/functional/api/test_rbac.py +259 -0
  34. pulp-python-3.12.0/pulp_python/tests/functional/api/test_sync.py +300 -0
  35. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/tests/functional/constants.py +15 -34
  36. pulp-python-3.12.0/pulp_python/tests/functional/utils.py +55 -0
  37. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python.egg-info/PKG-INFO +12 -13
  38. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python.egg-info/SOURCES.txt +9 -8
  39. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python.egg-info/entry_points.txt +2 -0
  40. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python.egg-info/requires.txt +1 -1
  41. {pulp-python-3.11.0 → pulp-python-3.12.0}/pyproject.toml +7 -4
  42. {pulp-python-3.11.0 → pulp-python-3.12.0}/requirements.txt +1 -1
  43. {pulp-python-3.11.0 → pulp-python-3.12.0}/setup.py +6 -4
  44. {pulp-python-3.11.0 → pulp-python-3.12.0}/test_requirements.txt +1 -2
  45. pulp-python-3.12.0/unittest_requirements.txt +2 -0
  46. pulp-python-3.11.0/CHANGES.rst +0 -605
  47. pulp-python-3.11.0/functest_requirements.txt +0 -7
  48. pulp-python-3.11.0/pulp_python/app/__init__.py +0 -12
  49. pulp-python-3.11.0/pulp_python/app/settings.py +0 -4
  50. pulp-python-3.11.0/pulp_python/app/viewsets.py +0 -224
  51. pulp-python-3.11.0/pulp_python/tests/functional/api/test_auto_publish.py +0 -63
  52. pulp-python-3.11.0/pulp_python/tests/functional/api/test_consume_content.py +0 -141
  53. pulp-python-3.11.0/pulp_python/tests/functional/api/test_crud_content_unit.py +0 -229
  54. pulp-python-3.11.0/pulp_python/tests/functional/api/test_crud_publications.py +0 -282
  55. pulp-python-3.11.0/pulp_python/tests/functional/api/test_crud_remotes.py +0 -414
  56. pulp-python-3.11.0/pulp_python/tests/functional/api/test_download_content.py +0 -151
  57. pulp-python-3.11.0/pulp_python/tests/functional/api/test_full_mirror.py +0 -159
  58. pulp-python-3.11.0/pulp_python/tests/functional/api/test_pypi_apis.py +0 -334
  59. pulp-python-3.11.0/pulp_python/tests/functional/api/test_sync.py +0 -704
  60. pulp-python-3.11.0/pulp_python/tests/functional/conftest.py +0 -112
  61. pulp-python-3.11.0/pulp_python/tests/functional/utils.py +0 -385
  62. pulp-python-3.11.0/pulp_python/tests/upgrade/__init__.py +0 -0
  63. pulp-python-3.11.0/pulp_python/tests/upgrade/post/__init__.py +0 -0
  64. pulp-python-3.11.0/pulp_python/tests/upgrade/post/test_publish.py +0 -131
  65. pulp-python-3.11.0/pulp_python/tests/upgrade/pre/__init__.py +0 -0
  66. pulp-python-3.11.0/pulp_python/tests/upgrade/pre/test_publish.py +0 -128
  67. pulp-python-3.11.0/unittest_requirements.txt +0 -2
  68. {pulp-python-3.11.0 → pulp-python-3.12.0}/COMMITMENT +0 -0
  69. {pulp-python-3.11.0 → pulp-python-3.12.0}/COPYRIGHT +0 -0
  70. {pulp-python-3.11.0 → pulp-python-3.12.0}/LICENSE +0 -0
  71. {pulp-python-3.11.0 → pulp-python-3.12.0}/README.md +0 -0
  72. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/__init__.py +0 -0
  73. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0001_initial.py +0 -0
  74. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +0 -0
  75. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0003_new_sync_filters.py +0 -0
  76. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +0 -0
  77. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +0 -0
  78. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +0 -0
  79. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +0 -0
  80. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +0 -0
  81. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +0 -0
  82. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0010_update_json_field.py +0 -0
  83. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +0 -0
  84. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/migrations/__init__.py +0 -0
  85. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/pypi/__init__.py +0 -0
  86. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/tasks/__init__.py +0 -0
  87. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/webserver_snippets/__init__.py +0 -0
  88. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/webserver_snippets/apache.conf +0 -0
  89. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
  90. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/tests/__init__.py +0 -0
  91. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/tests/functional/__init__.py +0 -0
  92. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/tests/functional/api/__init__.py +0 -0
  93. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/tests/unit/__init__.py +0 -0
  94. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python/tests/unit/test_models.py +0 -0
  95. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python.egg-info/dependency_links.txt +0 -0
  96. {pulp-python-3.11.0 → pulp-python-3.12.0}/pulp_python.egg-info/top_level.txt +0 -0
  97. {pulp-python-3.11.0 → pulp-python-3.12.0}/setup.cfg +0 -0
@@ -0,0 +1,465 @@
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.12.0 (2024-06-25) {: #3.12.0 }
12
+
13
+
14
+ #### Features {: #3.12.0-feature }
15
+
16
+ - Added RBAC support.
17
+ [#399](https://github.com/pulp/pulp_python/issues/399)
18
+ - Added Pulp replication support for Python distributions.
19
+ [#648](https://github.com/pulp/pulp_python/issues/648)
20
+ - Added Domain support.
21
+ [#668](https://github.com/pulp/pulp_python/issues/668)
22
+
23
+ #### Bugfixes {: #3.12.0-bugfix }
24
+
25
+ - Fixed tls_validation not being disabled when set to false on the remote.
26
+ [#653](https://github.com/pulp/pulp_python/issues/653)
27
+
28
+ #### Deprecations and Removals {: #3.12.0-removal }
29
+
30
+ - Raised the minimum `pulpcore` bound to `>=3.49` and dropped support for `python 3.8`.
31
+ [#pulpcore](https://github.com/pulp/pulp_python/issues/pulpcore)
32
+
33
+ #### Misc {: #3.12.0-misc }
34
+
35
+ -
36
+
37
+ ---
38
+
39
+ ## 3.11.1 (2024-04-11) {: #3.11.1 }
40
+
41
+ ### Bugfixes
42
+
43
+ - Fixed tls_validation not being disabled when set to false on the remote.
44
+ [#653](https://github.com/pulp/pulp_python/issues/653)
45
+
46
+ ---
47
+
48
+ ## 3.11.0 (2023-11-08) {: #3.11.0 }
49
+
50
+ ### Features
51
+
52
+ - Added pulpcore 3.40 compatibility.
53
+ - Added import export support of python content.
54
+ [#579](https://github.com/pulp/pulp_python/issues/579)
55
+
56
+ ---
57
+
58
+ ## 3.10.0 (2023-05-17) {: #3.10.0 }
59
+
60
+ ### Features
61
+
62
+ - Added compatibility for pulpcore 3.25, pulpcore support is now >=3.25,<3.40.
63
+ [#605](https://github.com/pulp/pulp_python/issues/605)
64
+
65
+ ---
66
+
67
+ ## 3.9.0 (2023-03-17) {: #3.9.0 }
68
+
69
+ ### Features
70
+
71
+ - Added version filter to package list endpoint.
72
+ [#577](https://github.com/pulp/pulp_python/issues/577)
73
+ - Allow duplicate uploads to return existing packages instead of erring.
74
+ [#590](https://github.com/pulp/pulp_python/issues/590)
75
+
76
+ ### Bugfixes
77
+
78
+ - Fixed pull-through caching ignoring remote proxy settings.
79
+ [#553](https://github.com/pulp/pulp_python/issues/553)
80
+ - Changed includes and excludes openapi schema to report as array of strings instead of object.
81
+ [#576](https://github.com/pulp/pulp_python/issues/576)
82
+ - Fixed syncing ignoring remote proxy.
83
+ [#581](https://github.com/pulp/pulp_python/issues/581)
84
+ - Fixed duplicate operationID for generated PyPI simple endpoints schema.
85
+ [#594](https://github.com/pulp/pulp_python/issues/594)
86
+
87
+ ---
88
+
89
+ ## 3.8.0 (2022-12-19) {: #3.8.0 }
90
+
91
+ ### Bugfixes
92
+
93
+ - Fixed syncing failing when using bandersnatch 5.3.0
94
+ [#554](https://github.com/pulp/pulp_python/issues/554)
95
+ - Prevent .netrc file from being read on syncs.
96
+ [#566](https://github.com/pulp/pulp_python/issues/566)
97
+ - Fix 500 error when pip installing using object storage.
98
+ [#572](https://github.com/pulp/pulp_python/issues/572)
99
+
100
+ ### Improved Documentation
101
+
102
+ - Documented `pulp_python` specific settings.
103
+ [#571](https://github.com/pulp/pulp_python/issues/571)
104
+
105
+ ---
106
+
107
+ ## 3.7.3 (2022-10-06) {: #3.7.3 }
108
+
109
+ ### Bugfixes
110
+
111
+ - Prevent .netrc file from being read on syncs.
112
+ [#566](https://github.com/pulp/pulp_python/issues/566)
113
+
114
+ ---
115
+
116
+ ## 3.7.2 (2022-08-04) {: #3.7.2 }
117
+
118
+ ### Bugfixes
119
+
120
+ - Fixed syncing failing when using bandersnatch 5.3.0
121
+ [#554](https://github.com/pulp/pulp_python/issues/554)
122
+
123
+ ---
124
+
125
+ ## 3.7.1 (2022-06-29) {: #3.7.1 }
126
+
127
+ No significant changes.
128
+
129
+ ---
130
+
131
+ ## 3.7.0 (2022-06-22) {: #3.7.0 }
132
+
133
+ ### Features
134
+
135
+ - Added ability to fully sync repositories that don't support the PyPI XMLRPC endpoints. Full Pulp-to-Pulp syncing is now available.
136
+ [#462](https://github.com/pulp/pulp_python/issues/462)
137
+
138
+ ### Bugfixes
139
+
140
+ - Ensured temporary package uploads are written to worker's directory instead of /tmp.
141
+ [#505](https://github.com/pulp/pulp_python/issues/505)
142
+
143
+ ### Misc
144
+
145
+ - [#503](https://github.com/pulp/pulp_python/issues/503)
146
+
147
+ ---
148
+
149
+ ## 3.6.1 (2022-08-19) {: #3.6.1 }
150
+
151
+ ### Bugfixes
152
+
153
+ - Fixed syncing failing when using bandersnatch 5.3.0
154
+ [#554](https://github.com/pulp/pulp_python/issues/554)
155
+
156
+ ---
157
+
158
+ ## 3.6.0 (2021-12-15) {: #3.6.0 }
159
+
160
+ ### Features
161
+
162
+ - `pulp_python` now supports pull-through caching. Add a remote to a distribution to enable this feature.
163
+ [#381](https://github.com/pulp/pulp_python/issues/381)
164
+ - Enable Azure support
165
+ [#458](https://github.com/pulp/pulp_python/issues/458)
166
+
167
+ ### Bugfixes
168
+
169
+ - Fixed proxy url not being passed during sync
170
+ [#433](https://github.com/pulp/pulp_python/issues/433)
171
+ - Changed the use of `dispatch` to match the signature from pulpcore>=3.15.
172
+ [#443](https://github.com/pulp/pulp_python/issues/443)
173
+ - Fixed package name normalization issue preventing installing packages with "." or "_" in their names.
174
+ [#467](https://github.com/pulp/pulp_python/issues/467)
175
+
176
+ ---
177
+
178
+ ## 3.5.2 (2021-10-05) {: #3.5.2 }
179
+
180
+ ### Bugfixes
181
+
182
+ - Fixed proxy url not being passed during sync
183
+ (backported from #445)
184
+ [#436](https://github.com/pulp/pulp_python/issues/436)
185
+ - Changed the use of `dispatch` to match the signature from pulpcore>=3.15.
186
+ (backported from #443)
187
+ [#446](https://github.com/pulp/pulp_python/issues/446)
188
+
189
+ ---
190
+
191
+ ## 3.5.1 (2021-09-10) {: #3.5.1 }
192
+
193
+ ### Bugfixes
194
+
195
+ - Fixed proxy url not being passed during sync
196
+ (backported from #433)
197
+ [#436](https://github.com/pulp/pulp_python/issues/436)
198
+
199
+ ---
200
+
201
+ ## 3.5.0 (2021-08-30) {: #3.5.0 }
202
+
203
+ ### Features
204
+
205
+ - Python package content can now be filtered by their sha256
206
+ [#404](https://github.com/pulp/pulp_python/issues/404)
207
+ - Added new setting `PYPI_API_HOSTNAME` that is used to form a distribution's `base_url`. Defaults to the machine's FQDN.
208
+ [#412](https://github.com/pulp/pulp_python/issues/412)
209
+ - Enabled reclaim disk feature provided by pulpcore 3.15+.
210
+ [#425](https://github.com/pulp/pulp_python/issues/425)
211
+
212
+ ### Bugfixes
213
+
214
+ - Fixed twine upload failing when using remote storage backends
215
+ [#400](https://github.com/pulp/pulp_python/issues/400)
216
+ - Fixed improper metadata serving when using publications with S3 storage
217
+ [#413](https://github.com/pulp/pulp_python/issues/413)
218
+
219
+ ### Deprecations and Removals
220
+
221
+ - Dropped support for Python < 3.8.
222
+ [#402](https://github.com/pulp/pulp_python/issues/402)
223
+
224
+ ### Misc
225
+
226
+ - [#408](https://github.com/pulp/pulp_python/issues/408), [#427](https://github.com/pulp/pulp_python/issues/427)
227
+
228
+ ---
229
+
230
+ ## 3.4.1 (2021-08-24) {: #3.4.1 }
231
+
232
+ ### Features
233
+
234
+ - Python package content can now be filtered by their sha256
235
+ (backported from #404)
236
+ [#419](https://github.com/pulp/pulp_python/issues/419)
237
+
238
+ ### Bugfixes
239
+
240
+ - Fixed improper metadata serving when using publications with S3 storage
241
+ (backported from #413)
242
+ [#418](https://github.com/pulp/pulp_python/issues/418)
243
+ - Fixed twine upload failing when using remote storage backends
244
+ (backported from #400)
245
+ [#420](https://github.com/pulp/pulp_python/issues/420)
246
+
247
+ ---
248
+
249
+ 3.4.0 (2021-06-17)
250
+
251
+ ### Features
252
+
253
+ - Added `twine` (and other similar Python tools) package upload support
254
+ [#342](https://github.com/pulp/pulp_python/issues/342)
255
+ - PyPI endpoints are now available at `/pypi/{base_path}/`
256
+ [#376](https://github.com/pulp/pulp_python/issues/376)
257
+ - Changed the global uniqueness constraint for `PythonPackageContent` to its sha256 digest
258
+ [#380](https://github.com/pulp/pulp_python/issues/380)
259
+
260
+ ### Bugfixes
261
+
262
+ - Added missing fields to PyPI live JSON API to be compliant with core metadata version 2.1
263
+ [#352](https://github.com/pulp/pulp_python/issues/352)
264
+ - Fixed sync to use default concurrency (10) when download_concurrency was not specified
265
+ [#391](https://github.com/pulp/pulp_python/issues/391)
266
+
267
+ ---
268
+
269
+ ## 3.3.0 (2021-05-27) {: #3.3.0 }
270
+
271
+ ### Features
272
+
273
+ - Add support for automatic publishing and distributing.
274
+ [#365](https://github.com/pulp/pulp_python/issues/365)
275
+
276
+ ### Bugfixes
277
+
278
+ - Fixed publications publishing more content than was in the repository
279
+ [#362](https://github.com/pulp/pulp_python/issues/362)
280
+
281
+ ### Improved Documentation
282
+
283
+ - Update syntax in doc for cli repository content add command
284
+ [#368](https://github.com/pulp/pulp_python/issues/368)
285
+
286
+ ### Misc
287
+
288
+ - [#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)
289
+
290
+ ---
291
+
292
+ ## 3.2.0 (2021-04-14) {: #3.2.0 }
293
+
294
+ ### Features
295
+
296
+ - Added new sync filter keep_latest_packages to specify how many latest versions of packages to sync
297
+ [#339](https://github.com/pulp/pulp_python/issues/339)
298
+ - Added new sync filters package_types and exclude_platforms to specify package types to sync
299
+ [#341](https://github.com/pulp/pulp_python/issues/341)
300
+
301
+ ### Misc
302
+
303
+ - [#354](https://github.com/pulp/pulp_python/issues/354)
304
+
305
+ ---
306
+
307
+ ## 3.1.0 (2021-03-12) {: #3.1.0 }
308
+
309
+ ### Features
310
+
311
+ - Python content can now be filtered by requires_python
312
+ [#3629](https://pulp.plan.io/issues/3629)
313
+
314
+ ### Improved Documentation
315
+
316
+ - Updated workflows to use Pulp CLI commands
317
+ [#8364](https://pulp.plan.io/issues/8364)
318
+
319
+ ---
320
+
321
+ ## 3.0.0 (2021-01-12) {: #3.0.0 }
322
+
323
+ ### Bugfixes
324
+
325
+ - Remote proxy settings are now passed to Bandersnatch while syncing
326
+ [#7864](https://pulp.plan.io/issues/7864)
327
+
328
+ ### Improved Documentation
329
+
330
+ - Added bullet list of Python Plugin features and a tech preview page for new experimental features
331
+ [#7628](https://pulp.plan.io/issues/7628)
332
+
333
+ ---
334
+
335
+ ## 3.0.0b12 (2020-11-05)
336
+
337
+ ### Features
338
+
339
+ - Pulp Python can now fully mirror all packages from PyPi
340
+ [#985](https://pulp.plan.io/issues/985)
341
+ - Implemented PyPi's json API at content endpoint '/pypi/{package-name}/json'. Pulp can now perform basic syncing on other Pulp Python instances.
342
+ [#2886](https://pulp.plan.io/issues/2886)
343
+ - Pulp Python now uses Bandersnatch to perform syncing and filtering of package metadata
344
+ [#6930](https://pulp.plan.io/issues/6930)
345
+
346
+ ### Bugfixes
347
+
348
+ - Sync now includes python package's classifiers in the content unit
349
+ [#3627](https://pulp.plan.io/issues/3627)
350
+ - Policy can now be specified when creating a remote from a Bandersnatch config
351
+ [#7331](https://pulp.plan.io/issues/7331)
352
+ - Includes/excludes/prereleases fields are now properly set in a remote from Bandersnatch config
353
+ [#7392](https://pulp.plan.io/issues/7392)
354
+
355
+ ### Improved Documentation
356
+
357
+ - Fixed makemigrations commands in the install docs
358
+ [#5386](https://pulp.plan.io/issues/5386)
359
+
360
+ ### Misc
361
+
362
+ - [#6875](https://pulp.plan.io/issues/6875), [#7401](https://pulp.plan.io/issues/7401)
363
+
364
+ ---
365
+
366
+ ## 3.0.0b11 (2020-08-18)
367
+
368
+ Compatibility update for pulpcore 3.6
369
+
370
+ ---
371
+
372
+ ## 3.0.0b10 (2020-08-05)
373
+
374
+ ### Features
375
+
376
+ - Added a new endpoint to remotes "/from_bandersnatch" that allows for Python remote creation from a Bandersnatch config file.
377
+ [#6929](https://pulp.plan.io/issues/6929)
378
+
379
+ ### Bugfixes
380
+
381
+ - Including requirements.txt on MANIFEST.in
382
+ [#6891](https://pulp.plan.io/issues/6891)
383
+ - Updating API to not return publications that aren't complete.
384
+ [#6987](https://pulp.plan.io/issues/6987)
385
+ - Fixed an issue that prevented 'on_demand' content from being published.
386
+ [#7128](https://pulp.plan.io/issues/7128)
387
+
388
+ ### Improved Documentation
389
+
390
+ - Change the commands for publication and distribution on the publish workflow to use their respective scripts already defined in _scripts.
391
+ [#6877](https://pulp.plan.io/issues/6877)
392
+ - Updated sync.sh, publication.sh and distribution.sh in docs/_scripts to reference wait_until_task_finished function from base.sh
393
+ [#6918](https://pulp.plan.io/issues/6918)
394
+
395
+ ---
396
+
397
+ ## 3.0.0b9 (2020-06-01)
398
+
399
+ ### Features
400
+
401
+ - Add upload functionality to the python contents endpoints.
402
+ [#5464](https://pulp.plan.io/issues/5464)
403
+
404
+ ### Bugfixes
405
+
406
+ - Fixed the 500 error returned by the OpenAPI schema endpoint.
407
+ [#5452](https://pulp.plan.io/issues/5452)
408
+
409
+ ### Improved Documentation
410
+
411
+ - Change the prefix of Pulp services from pulp-* to pulpcore-*
412
+ [#4554](https://pulp.plan.io/issues/4554)
413
+ - Added "python/python/" to fix two commands in repo.sh, fixed export command in sync.sh
414
+ [#6790](https://pulp.plan.io/issues/6790)
415
+ - 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.
416
+ [#6792](https://pulp.plan.io/issues/6792)
417
+ - Updated the workflow documentation for upload.html. Fixed the workflow commands and added more details to the instructions.
418
+ [#6854](https://pulp.plan.io/issues/6854)
419
+
420
+ ### Deprecations and Removals
421
+
422
+ - Change _id, _created, _last_updated, _href to pulp_id, pulp_created, pulp_last_updated, pulp_href
423
+ [#5457](https://pulp.plan.io/issues/5457)
424
+
425
+ - Remove "_" from _versions_href, _latest_version_href
426
+ [#5548](https://pulp.plan.io/issues/5548)
427
+
428
+ - Removing base field: _type .
429
+ [#5550](https://pulp.plan.io/issues/5550)
430
+
431
+ - Sync is no longer available at the {remote_href}/sync/ repository={repo_href} endpoint. Instead, use POST {repo_href}/sync/ remote={remote_href}.
432
+
433
+ 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.
434
+ [#5625](https://pulp.plan.io/issues/5625)
435
+
436
+ ### Misc
437
+
438
+ - [#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)
439
+
440
+ ---
441
+
442
+ ## 3.0.0b8 (2019-09-16)
443
+
444
+ ### Misc
445
+
446
+ - [#4681](https://pulp.plan.io/issues/4681)
447
+
448
+ ---
449
+
450
+ ## 3.0.0b7 (2019-08-01)
451
+
452
+ ### Features
453
+
454
+ - Users can upload a file to create content and optionally add to a repo in one step known as
455
+ one-shot upload
456
+ [#4396](https://pulp.plan.io/issues/4396)
457
+ - Override the Remote's serializer to allow policy='on_demand' and policy='streamed'.
458
+ [#4990](https://pulp.plan.io/issues/4990)
459
+
460
+ ### Improved Documentation
461
+
462
+ - Switch to using [towncrier](https://github.com/hawkowl/towncrier) for better release notes.
463
+ [#4875](https://pulp.plan.io/issues/4875)
464
+
465
+ ---
@@ -1,7 +1,7 @@
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
@@ -1,28 +1,27 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulp-python
3
- Version: 3.11.0
3
+ Version: 3.12.0
4
4
  Summary: pulp-python plugin for the Pulp Project
5
5
  Home-page: https://www.pulpproject.org
6
6
  Author: Pulp Project Developers
7
7
  Author-email: pulp-list@redhat.com
8
8
  License: GPLv2+
9
- Description: # pulp_python
10
-
11
- ![Pulp Nightly CI/CD](https://github.com/pulp/pulp_python/actions/workflows/nightly.yml/badge.svg)
12
-
13
- A Pulp plugin to support hosting your own pip compatible Python packages.
14
-
15
- For more information, please see the [documentation](https://docs.pulpproject.org/pulp_python/) or the
16
- [Pulp project page](https://pulpproject.org).
17
-
18
- Platform: UNKNOWN
19
9
  Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
20
10
  Classifier: Operating System :: POSIX :: Linux
21
11
  Classifier: Development Status :: 5 - Production/Stable
22
12
  Classifier: Framework :: Django
23
13
  Classifier: Programming Language :: Python
24
14
  Classifier: Programming Language :: Python :: 3
25
- Classifier: Programming Language :: Python :: 3.8
26
15
  Classifier: Programming Language :: Python :: 3.9
27
- Requires-Python: >=3.8
16
+ Requires-Python: >=3.9
28
17
  Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+
20
+ # pulp_python
21
+
22
+ ![Pulp Nightly CI/CD](https://github.com/pulp/pulp_python/actions/workflows/nightly.yml/badge.svg)
23
+
24
+ A Pulp plugin to support hosting your own pip compatible Python packages.
25
+
26
+ For more information, please see the [documentation](https://docs.pulpproject.org/pulp_python/) or the
27
+ [Pulp project page](https://pulpproject.org).
@@ -0,0 +1,8 @@
1
+ pytest<8
2
+ lxml
3
+ twine
4
+ pypi-simple
5
+ pytest-custom_exit_code
6
+ pytest-xdist
7
+ proxy.py~=2.4.4
8
+ trustme~=1.1.0
@@ -0,0 +1,66 @@
1
+ from django.db.models.signals import post_migrate
2
+ from pulpcore.plugin import PulpPluginAppConfig
3
+ from gettext import gettext as _
4
+
5
+
6
+ class PulpPythonPluginAppConfig(PulpPluginAppConfig):
7
+ """
8
+ Entry point for pulp_python plugin.
9
+ """
10
+
11
+ name = "pulp_python.app"
12
+ label = "python"
13
+ version = "3.12.0"
14
+ python_package_name = "pulp-python"
15
+ domain_compatible = True
16
+
17
+ def ready(self):
18
+ """Register PyPI access policy hook."""
19
+ super().ready()
20
+ post_migrate.connect(
21
+ _populate_pypi_access_policies,
22
+ sender=self,
23
+ dispatch_uid="populate_pypi_access_policies_identifier",
24
+ )
25
+
26
+
27
+ # TODO: Remove this when https://github.com/pulp/pulpcore/issues/5500 is resolved
28
+ def _populate_pypi_access_policies(sender, apps, verbosity, **kwargs):
29
+ from pulp_python.app.pypi.views import PyPIView, SimpleView, UploadView, MetadataView
30
+
31
+ try:
32
+ AccessPolicy = apps.get_model("core", "AccessPolicy")
33
+ except LookupError:
34
+ if verbosity >= 1:
35
+ print(_("AccessPolicy model does not exist. Skipping initialization."))
36
+ return
37
+
38
+ for viewset in (PyPIView, SimpleView, UploadView, MetadataView):
39
+ access_policy = getattr(viewset, "DEFAULT_ACCESS_POLICY", None)
40
+ if access_policy is not None:
41
+ viewset_name = viewset.urlpattern()
42
+ db_access_policy, created = AccessPolicy.objects.get_or_create(
43
+ viewset_name=viewset_name, defaults=access_policy
44
+ )
45
+ if created:
46
+ if verbosity >= 1:
47
+ print(
48
+ "Access policy for {viewset_name} created.".format(
49
+ viewset_name=viewset_name
50
+ )
51
+ )
52
+ elif not db_access_policy.customized:
53
+ dirty = False
54
+ for key in ["statements", "creation_hooks", "queryset_scoping"]:
55
+ value = access_policy.get(key)
56
+ if getattr(db_access_policy, key, None) != value:
57
+ setattr(db_access_policy, key, value)
58
+ dirty = True
59
+ if dirty:
60
+ db_access_policy.save()
61
+ if verbosity >= 1:
62
+ print(
63
+ "Access policy for {viewset_name} updated.".format(
64
+ viewset_name=viewset_name
65
+ )
66
+ )
@@ -0,0 +1,30 @@
1
+ from django.conf import settings
2
+
3
+
4
+ # Access Condition methods that can be used with PyPI access policies
5
+
6
+
7
+ def index_has_perm(request, view, action, perm="python.view_pythondistribution"):
8
+ """Access Policy condition that checks if the user has the perm on the index(distro)."""
9
+ if request.user.has_perm(perm):
10
+ return True
11
+ if settings.DOMAIN_ENABLED:
12
+ if request.user.has_perm(perm, obj=request.pulp_domain):
13
+ return True
14
+ return request.user.has_perm(perm, obj=view.distribution)
15
+
16
+
17
+ def index_has_repo_perm(request, view, action, perm="python.view_pythonrepository"):
18
+ """
19
+ Access Policy condition that checks if the user has the perm on the index's repository.
20
+
21
+ If index doesn't have a repository, then default return True.
22
+ """
23
+ if request.user.has_perm(perm):
24
+ return True
25
+ if settings.DOMAIN_ENABLED:
26
+ if request.user.has_perm(perm, obj=request.pulp_domain):
27
+ return True
28
+ if repo := view.distribution.repository:
29
+ return request.user.has_perm(perm, obj=repo.cast())
30
+ return True
@@ -0,0 +1,37 @@
1
+ # Generated by Django 4.2.10 on 2024-05-30 17:53
2
+
3
+ from django.db import migrations, models
4
+ import django.db.models.deletion
5
+ import pulpcore.app.util
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ dependencies = [
11
+ ("python", "0011_alter_pythondistribution_distribution_ptr_and_more"),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.AlterUniqueTogether(
16
+ name="pythonpackagecontent",
17
+ unique_together=set(),
18
+ ),
19
+ migrations.AddField(
20
+ model_name="pythonpackagecontent",
21
+ name="_pulp_domain",
22
+ field=models.ForeignKey(
23
+ default=pulpcore.app.util.get_domain_pk,
24
+ on_delete=django.db.models.deletion.PROTECT,
25
+ to="core.domain",
26
+ ),
27
+ ),
28
+ migrations.AlterField(
29
+ model_name="pythonpackagecontent",
30
+ name="sha256",
31
+ field=models.CharField(db_index=True, max_length=64),
32
+ ),
33
+ migrations.AlterUniqueTogether(
34
+ name="pythonpackagecontent",
35
+ unique_together={("sha256", "_pulp_domain")},
36
+ ),
37
+ ]
@@ -0,0 +1,29 @@
1
+ # Generated by Django 4.2.10 on 2024-06-14 01:25
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('python', '0012_add_domain'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterModelOptions(
14
+ name='pythondistribution',
15
+ options={'default_related_name': '%(app_label)s_%(model_name)s', 'permissions': [('manage_roles_pythondistribution', 'Can manage roles on python distributions')]},
16
+ ),
17
+ migrations.AlterModelOptions(
18
+ name='pythonpublication',
19
+ options={'default_related_name': '%(app_label)s_%(model_name)s', 'permissions': [('manage_roles_pythonpublication', 'Can manage roles on python publications')]},
20
+ ),
21
+ migrations.AlterModelOptions(
22
+ name='pythonremote',
23
+ options={'default_related_name': '%(app_label)s_%(model_name)s', 'permissions': [('manage_roles_pythonremote', 'Can manage roles on python remotes')]},
24
+ ),
25
+ migrations.AlterModelOptions(
26
+ name='pythonrepository',
27
+ options={'default_related_name': '%(app_label)s_%(model_name)s', 'permissions': [('sync_pythonrepository', 'Can start a sync task'), ('modify_pythonrepository', 'Can modify content of the repository'), ('manage_roles_pythonrepository', 'Can manage roles on python repositories'), ('repair_pythonrepository', 'Can repair repository versions')]},
28
+ ),
29
+ ]