pulp-python 3.17.1__tar.gz → 3.18.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 (86) hide show
  1. {pulp_python-3.17.1 → pulp_python-3.18.0}/CHANGES.md +47 -0
  2. {pulp_python-3.17.1 → pulp_python-3.18.0}/PKG-INFO +5 -6
  3. pulp_python-3.18.0/pulp_python/__init__.py +1 -0
  4. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/__init__.py +1 -1
  5. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/management/commands/repair-python-metadata.py +2 -2
  6. pulp_python-3.18.0/pulp_python/app/migrations/0001_initial.py +173 -0
  7. pulp_python-3.18.0/pulp_python/app/migrations/0001_squashed_0010_update_json_field.py +261 -0
  8. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +4 -4
  9. pulp_python-3.18.0/pulp_python/app/migrations/0003_new_sync_filters.py +53 -0
  10. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +28 -16
  11. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +21 -9
  12. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +3 -3
  13. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +6 -6
  14. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +7 -7
  15. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +3 -3
  16. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0010_update_json_field.py +17 -17
  17. pulp_python-3.18.0/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +75 -0
  18. pulp_python-3.18.0/pulp_python/app/migrations/0013_add_rbac_permissions.py +52 -0
  19. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0014_pythonpackagecontent_dynamic_and_more.py +10 -10
  20. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/models.py +2 -3
  21. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/pypi/serializers.py +7 -7
  22. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/pypi/views.py +38 -27
  23. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/serializers.py +207 -121
  24. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/settings.py +1 -1
  25. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/tasks/publish.py +22 -22
  26. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/tasks/repair.py +4 -6
  27. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/tasks/sync.py +5 -17
  28. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/tasks/upload.py +3 -5
  29. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/urls.py +4 -4
  30. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/utils.py +51 -45
  31. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/viewsets.py +43 -46
  32. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/pytest_plugin.py +8 -0
  33. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_crud_content_unit.py +5 -3
  34. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_crud_publications.py +4 -2
  35. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_domains.py +3 -1
  36. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_export_import.py +3 -1
  37. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_pypi_apis.py +4 -7
  38. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_rbac.py +1 -1
  39. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_repair.py +6 -16
  40. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_sync.py +17 -8
  41. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/constants.py +15 -32
  42. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/utils.py +13 -4
  43. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python.egg-info/PKG-INFO +5 -6
  44. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python.egg-info/SOURCES.txt +1 -0
  45. pulp_python-3.18.0/pulp_python.egg-info/requires.txt +4 -0
  46. {pulp_python-3.17.1 → pulp_python-3.18.0}/pyproject.toml +8 -7
  47. pulp_python-3.17.1/pulp_python/__init__.py +0 -1
  48. pulp_python-3.17.1/pulp_python/app/migrations/0001_initial.py +0 -96
  49. pulp_python-3.17.1/pulp_python/app/migrations/0003_new_sync_filters.py +0 -29
  50. pulp_python-3.17.1/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +0 -40
  51. pulp_python-3.17.1/pulp_python/app/migrations/0013_add_rbac_permissions.py +0 -29
  52. pulp_python-3.17.1/pulp_python.egg-info/requires.txt +0 -4
  53. {pulp_python-3.17.1 → pulp_python-3.18.0}/COMMITMENT +0 -0
  54. {pulp_python-3.17.1 → pulp_python-3.18.0}/COPYRIGHT +0 -0
  55. {pulp_python-3.17.1 → pulp_python-3.18.0}/LICENSE +0 -0
  56. {pulp_python-3.17.1 → pulp_python-3.18.0}/MANIFEST.in +0 -0
  57. {pulp_python-3.17.1 → pulp_python-3.18.0}/README.md +0 -0
  58. {pulp_python-3.17.1 → pulp_python-3.18.0}/functest_requirements.txt +0 -0
  59. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/global_access_conditions.py +0 -0
  60. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/management/__init__.py +0 -0
  61. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/management/commands/__init__.py +0 -0
  62. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/0012_add_domain.py +0 -0
  63. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/migrations/__init__.py +0 -0
  64. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/modelresource.py +0 -0
  65. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/pypi/__init__.py +0 -0
  66. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/replica.py +0 -0
  67. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/tasks/__init__.py +0 -0
  68. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/webserver_snippets/__init__.py +0 -0
  69. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/webserver_snippets/apache.conf +0 -0
  70. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
  71. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/__init__.py +0 -0
  72. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/__init__.py +0 -0
  73. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/__init__.py +0 -0
  74. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_auto_publish.py +0 -0
  75. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_consume_content.py +0 -0
  76. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_crud_remotes.py +0 -0
  77. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_download_content.py +0 -0
  78. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/functional/api/test_full_mirror.py +0 -0
  79. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/unit/__init__.py +0 -0
  80. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python/tests/unit/test_models.py +0 -0
  81. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python.egg-info/dependency_links.txt +0 -0
  82. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python.egg-info/entry_points.txt +0 -0
  83. {pulp_python-3.17.1 → pulp_python-3.18.0}/pulp_python.egg-info/top_level.txt +0 -0
  84. {pulp_python-3.17.1 → pulp_python-3.18.0}/setup.cfg +0 -0
  85. {pulp_python-3.17.1 → pulp_python-3.18.0}/test_requirements.txt +0 -0
  86. {pulp_python-3.17.1 → pulp_python-3.18.0}/unittest_requirements.txt +0 -0
@@ -8,6 +8,24 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.18.0 (2025-08-13) {: #3.18.0 }
12
+
13
+ #### Features {: #3.18.0-feature }
14
+
15
+ - Bump pulpcore upperbound to <3.100. pulp_python is now a Python >=3.11 project.
16
+
17
+ #### Bugfixes {: #3.18.0-bugfix }
18
+
19
+ - Fixed PYTHON_GROUP_UPLOADS failing when domains are turned on.
20
+ [#929](https://github.com/pulp/pulp_python/issues/929)
21
+
22
+ #### Improved Documentation {: #3.18.0-doc }
23
+
24
+ - Updated docs for adding/removing repository content to handle duplicate filenames.
25
+ [#927](https://github.com/pulp/pulp_python/issues/927)
26
+
27
+ ---
28
+
11
29
  ## 3.17.1 (2025-08-12) {: #3.17.1 }
12
30
 
13
31
  #### Bugfixes {: #3.17.1-bugfix }
@@ -144,6 +162,12 @@ No significant changes.
144
162
 
145
163
  ---
146
164
 
165
+ ## 3.12.7 (2025-07-23) {: #3.12.7 }
166
+
167
+ No significant changes.
168
+
169
+ ---
170
+
147
171
  ## 3.12.6 (2025-02-26) {: #3.12.6 }
148
172
 
149
173
  #### Misc {: #3.12.6-misc }
@@ -224,6 +248,12 @@ No significant changes.
224
248
 
225
249
  ---
226
250
 
251
+ ## 3.11.6 (2025-07-23) {: #3.11.6 }
252
+
253
+ No significant changes.
254
+
255
+ ---
256
+
227
257
  ## 3.11.5 (2025-04-15) {: #3.11.5 }
228
258
 
229
259
  No significant changes.
@@ -282,6 +312,23 @@ No significant changes.
282
312
 
283
313
  ---
284
314
 
315
+ ## 3.10.1 (2025-07-23) {: #3.10.1 }
316
+
317
+ ### Bugfixes
318
+
319
+ - Fixed tls_validation not being disabled when set to false on the remote.
320
+ [#653](https://github.com/pulp/pulp_python/issues/653)
321
+ - Fixed uploads not supporting packages using metadata spec 2.3
322
+ [#682](https://github.com/pulp/pulp_python/issues/682)
323
+ - Fixed the `package_types` filter breaking other remote filters.
324
+ [#691](https://github.com/pulp/pulp_python/issues/691)
325
+ - Fixed package name normalization issue preventing syncing packages with "." or "_" in their names.
326
+ [#716](https://github.com/pulp/pulp_python/issues/716)
327
+ - Fixed the JSONField specification so it doesn't break ruby bindings.
328
+ See context [here](https://github.com/pulp/pulp_rpm/issues/3639).
329
+
330
+ ---
331
+
285
332
  ## 3.10.0 (2023-05-17) {: #3.10.0 }
286
333
 
287
334
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-python
3
- Version: 3.17.1
3
+ Version: 3.18.0
4
4
  Summary: pulp-python plugin for the Pulp Project
5
5
  Author-email: Pulp Team <pulp-list@redhat.com>
6
6
  Project-URL: Homepage, https://pulpproject.org
@@ -14,16 +14,15 @@ Classifier: Development Status :: 5 - Production/Stable
14
14
  Classifier: Framework :: Django
15
15
  Classifier: Programming Language :: Python
16
16
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.9
18
- Classifier: Programming Language :: Python :: 3.10
19
17
  Classifier: Programming Language :: Python :: 3.11
20
18
  Classifier: Programming Language :: Python :: 3.12
21
- Requires-Python: >=3.9
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.11
22
21
  Description-Content-Type: text/markdown
23
22
  License-File: LICENSE
24
- Requires-Dist: pulpcore<3.85,>=3.49.0
23
+ Requires-Dist: pulpcore<3.100,>=3.49.0
25
24
  Requires-Dist: pkginfo<1.13.0,>=1.12.0
26
- Requires-Dist: bandersnatch<6.4,>=6.3.0
25
+ Requires-Dist: bandersnatch<6.6,>=6.3.0
27
26
  Requires-Dist: pypi-simple<2.0,>=1.5.0
28
27
  Dynamic: license-file
29
28
 
@@ -0,0 +1 @@
1
+ default_app_config = "pulp_python.app.PulpPythonPluginAppConfig"
@@ -10,7 +10,7 @@ class PulpPythonPluginAppConfig(PulpPluginAppConfig):
10
10
 
11
11
  name = "pulp_python.app"
12
12
  label = "python"
13
- version = "3.17.1"
13
+ version = "3.18.0"
14
14
  python_package_name = "pulp-python"
15
15
  domain_compatible = True
16
16
 
@@ -23,7 +23,7 @@ def repair_metadata(content):
23
23
  batch = []
24
24
  set_of_update_fields = set()
25
25
  total_repaired = 0
26
- for package in immediate_content.prefetch_related('_artifacts').iterator(chunk_size=1000):
26
+ for package in immediate_content.prefetch_related("_artifacts").iterator(chunk_size=1000):
27
27
  new_data = artifact_to_python_content_data(
28
28
  package.filename, package._artifacts.get(), package.pulp_domain
29
29
  )
@@ -55,7 +55,7 @@ def href_prn_list_handler(value):
55
55
  (?:{settings.API_ROOT}(?:[-_a-zA-Z0-9]+/)?api/v3/repositories/python/python/[-a-f0-9]+/)
56
56
  |(?:prn:python\.pythonrepository:[-a-f0-9]+)
57
57
  """,
58
- re.VERBOSE
58
+ re.VERBOSE,
59
59
  )
60
60
  values = []
61
61
  for v in value.split(","):
@@ -0,0 +1,173 @@
1
+ # Generated by Django 4.2.16 on 2024-12-11 16:42
2
+
3
+ import django.contrib.postgres.fields.jsonb
4
+ from django.db import migrations, models
5
+ import django.db.models.deletion
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ initial = True
11
+
12
+ dependencies = [
13
+ ("core", "0091_systemid"),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.CreateModel(
18
+ name="PythonPublication",
19
+ fields=[
20
+ (
21
+ "publication_ptr",
22
+ models.OneToOneField(
23
+ auto_created=True,
24
+ on_delete=django.db.models.deletion.CASCADE,
25
+ parent_link=True,
26
+ primary_key=True,
27
+ related_name="python_pythonpublication",
28
+ serialize=False,
29
+ to="core.publication",
30
+ ),
31
+ ),
32
+ ],
33
+ options={
34
+ "default_related_name": "%(app_label)s_%(model_name)s",
35
+ },
36
+ bases=("core.publication",),
37
+ ),
38
+ migrations.CreateModel(
39
+ name="PythonRemote",
40
+ fields=[
41
+ (
42
+ "remote_ptr",
43
+ models.OneToOneField(
44
+ auto_created=True,
45
+ on_delete=django.db.models.deletion.CASCADE,
46
+ parent_link=True,
47
+ primary_key=True,
48
+ related_name="python_pythonremote",
49
+ serialize=False,
50
+ to="core.remote",
51
+ ),
52
+ ),
53
+ ("prereleases", models.BooleanField(default=False)),
54
+ ("includes", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
55
+ ("excludes", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
56
+ ],
57
+ options={
58
+ "default_related_name": "%(app_label)s_%(model_name)s",
59
+ },
60
+ bases=("core.remote",),
61
+ ),
62
+ migrations.CreateModel(
63
+ name="PythonRepository",
64
+ fields=[
65
+ (
66
+ "repository_ptr",
67
+ models.OneToOneField(
68
+ auto_created=True,
69
+ on_delete=django.db.models.deletion.CASCADE,
70
+ parent_link=True,
71
+ primary_key=True,
72
+ related_name="python_pythonrepository",
73
+ serialize=False,
74
+ to="core.repository",
75
+ ),
76
+ ),
77
+ ],
78
+ options={
79
+ "default_related_name": "%(app_label)s_%(model_name)s",
80
+ },
81
+ bases=("core.repository",),
82
+ ),
83
+ migrations.CreateModel(
84
+ name="PythonPackageContent",
85
+ fields=[
86
+ (
87
+ "content_ptr",
88
+ models.OneToOneField(
89
+ auto_created=True,
90
+ on_delete=django.db.models.deletion.CASCADE,
91
+ parent_link=True,
92
+ primary_key=True,
93
+ related_name="python_pythonpackagecontent",
94
+ serialize=False,
95
+ to="core.content",
96
+ ),
97
+ ),
98
+ ("filename", models.TextField(db_index=True, unique=True)),
99
+ (
100
+ "packagetype",
101
+ models.TextField(
102
+ choices=[
103
+ ("bdist_dmg", "bdist_dmg"),
104
+ ("bdist_dumb", "bdist_dumb"),
105
+ ("bdist_egg", "bdist_egg"),
106
+ ("bdist_msi", "bdist_msi"),
107
+ ("bdist_rpm", "bdist_rpm"),
108
+ ("bdist_wheel", "bdist_wheel"),
109
+ ("bdist_wininst", "bdist_wininst"),
110
+ ("sdist", "sdist"),
111
+ ]
112
+ ),
113
+ ),
114
+ ("name", models.TextField()),
115
+ ("version", models.TextField()),
116
+ ("metadata_version", models.TextField()),
117
+ ("summary", models.TextField()),
118
+ ("description", models.TextField()),
119
+ ("keywords", models.TextField()),
120
+ ("home_page", models.TextField()),
121
+ ("download_url", models.TextField()),
122
+ ("author", models.TextField()),
123
+ ("author_email", models.TextField()),
124
+ ("maintainer", models.TextField()),
125
+ ("maintainer_email", models.TextField()),
126
+ ("license", models.TextField()),
127
+ ("requires_python", models.TextField()),
128
+ ("project_url", models.TextField()),
129
+ ("platform", models.TextField()),
130
+ ("supported_platform", models.TextField()),
131
+ ("requires_dist", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
132
+ ("provides_dist", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
133
+ ("obsoletes_dist", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
134
+ ("requires_external", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
135
+ ("classifiers", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
136
+ ],
137
+ options={
138
+ "default_related_name": "%(app_label)s_%(model_name)s",
139
+ "unique_together": {("filename",)},
140
+ },
141
+ bases=("core.content",),
142
+ ),
143
+ migrations.CreateModel(
144
+ name="PythonDistribution",
145
+ fields=[
146
+ (
147
+ "basedistribution_ptr",
148
+ models.OneToOneField(
149
+ auto_created=True,
150
+ on_delete=django.db.models.deletion.CASCADE,
151
+ parent_link=True,
152
+ primary_key=True,
153
+ related_name="python_pythondistribution",
154
+ serialize=False,
155
+ to="core.basedistribution",
156
+ ),
157
+ ),
158
+ (
159
+ "publication",
160
+ models.ForeignKey(
161
+ null=True,
162
+ on_delete=django.db.models.deletion.SET_NULL,
163
+ related_name="python_pythondistribution",
164
+ to="core.publication",
165
+ ),
166
+ ),
167
+ ],
168
+ options={
169
+ "default_related_name": "%(app_label)s_%(model_name)s",
170
+ },
171
+ bases=("core.basedistribution",),
172
+ ),
173
+ ]
@@ -0,0 +1,261 @@
1
+ # Generated by Django 4.2.23 on 2025-08-12 18:24
2
+
3
+ import django.contrib.postgres.fields
4
+ import django.contrib.postgres.fields.jsonb
5
+ from django.db import migrations, models
6
+ import django.db.models.deletion
7
+
8
+
9
+ class Migration(migrations.Migration):
10
+
11
+ replaces = [
12
+ ("python", "0001_initial"),
13
+ ("python", "0002_pythonpackagecontent_python_version"),
14
+ ("python", "0003_new_sync_filters"),
15
+ ("python", "0004_DATA_swap_distribution_model"),
16
+ ("python", "0005_pythonpackagecontent_sha256"),
17
+ ("python", "0006_pythonrepository_autopublish"),
18
+ ("python", "0007_pythonpackagecontent_mv-2-1"),
19
+ ("python", "0008_pythonpackagecontent_unique_sha256"),
20
+ ("python", "0009_pythondistribution_allow_uploads"),
21
+ ("python", "0010_update_json_field"),
22
+ ]
23
+
24
+ initial = True
25
+
26
+ dependencies = [
27
+ ("core", "0091_systemid"),
28
+ ]
29
+
30
+ operations = [
31
+ migrations.CreateModel(
32
+ name="PythonRemote",
33
+ fields=[
34
+ (
35
+ "remote_ptr",
36
+ models.OneToOneField(
37
+ auto_created=True,
38
+ on_delete=django.db.models.deletion.CASCADE,
39
+ parent_link=True,
40
+ primary_key=True,
41
+ related_name="python_pythonremote",
42
+ serialize=False,
43
+ to="core.remote",
44
+ ),
45
+ ),
46
+ ("prereleases", models.BooleanField(default=False)),
47
+ ("includes", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
48
+ ("excludes", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
49
+ (
50
+ "exclude_platforms",
51
+ django.contrib.postgres.fields.ArrayField(
52
+ base_field=models.CharField(blank=True, max_length=10),
53
+ choices=[
54
+ ("windows", "windows"),
55
+ ("macos", "macos"),
56
+ ("freebsd", "freebsd"),
57
+ ("linux", "linux"),
58
+ ],
59
+ default=list,
60
+ size=None,
61
+ ),
62
+ ),
63
+ ("keep_latest_packages", models.IntegerField(default=0)),
64
+ (
65
+ "package_types",
66
+ django.contrib.postgres.fields.ArrayField(
67
+ base_field=models.CharField(blank=True, max_length=15),
68
+ choices=[
69
+ ("bdist_dmg", "bdist_dmg"),
70
+ ("bdist_dumb", "bdist_dumb"),
71
+ ("bdist_egg", "bdist_egg"),
72
+ ("bdist_msi", "bdist_msi"),
73
+ ("bdist_rpm", "bdist_rpm"),
74
+ ("bdist_wheel", "bdist_wheel"),
75
+ ("bdist_wininst", "bdist_wininst"),
76
+ ("sdist", "sdist"),
77
+ ],
78
+ default=list,
79
+ size=None,
80
+ ),
81
+ ),
82
+ ],
83
+ options={
84
+ "default_related_name": "%(app_label)s_%(model_name)s",
85
+ },
86
+ bases=("core.remote",),
87
+ ),
88
+ migrations.CreateModel(
89
+ name="PythonPublication",
90
+ fields=[
91
+ (
92
+ "publication_ptr",
93
+ models.OneToOneField(
94
+ auto_created=True,
95
+ on_delete=django.db.models.deletion.CASCADE,
96
+ parent_link=True,
97
+ primary_key=True,
98
+ related_name="python_pythonpublication",
99
+ serialize=False,
100
+ to="core.publication",
101
+ ),
102
+ ),
103
+ ],
104
+ options={
105
+ "default_related_name": "%(app_label)s_%(model_name)s",
106
+ },
107
+ bases=("core.publication",),
108
+ ),
109
+ migrations.CreateModel(
110
+ name="PythonDistribution",
111
+ fields=[
112
+ (
113
+ "distribution_ptr",
114
+ models.OneToOneField(
115
+ auto_created=True,
116
+ on_delete=django.db.models.deletion.CASCADE,
117
+ parent_link=True,
118
+ primary_key=True,
119
+ related_name="python_pythondistribution",
120
+ serialize=False,
121
+ to="core.distribution",
122
+ ),
123
+ ),
124
+ ],
125
+ options={
126
+ "default_related_name": "%(app_label)s_%(model_name)s",
127
+ },
128
+ bases=("core.distribution",),
129
+ ),
130
+ migrations.CreateModel(
131
+ name="PythonRepository",
132
+ fields=[
133
+ (
134
+ "repository_ptr",
135
+ models.OneToOneField(
136
+ auto_created=True,
137
+ on_delete=django.db.models.deletion.CASCADE,
138
+ parent_link=True,
139
+ primary_key=True,
140
+ related_name="python_pythonrepository",
141
+ serialize=False,
142
+ to="core.repository",
143
+ ),
144
+ ),
145
+ ("autopublish", models.BooleanField(default=False)),
146
+ ],
147
+ options={
148
+ "default_related_name": "%(app_label)s_%(model_name)s",
149
+ },
150
+ bases=("core.repository",),
151
+ ),
152
+ migrations.CreateModel(
153
+ name="PythonPackageContent",
154
+ fields=[
155
+ (
156
+ "content_ptr",
157
+ models.OneToOneField(
158
+ auto_created=True,
159
+ on_delete=django.db.models.deletion.CASCADE,
160
+ parent_link=True,
161
+ primary_key=True,
162
+ related_name="python_pythonpackagecontent",
163
+ serialize=False,
164
+ to="core.content",
165
+ ),
166
+ ),
167
+ ("filename", models.TextField(db_index=True)),
168
+ (
169
+ "packagetype",
170
+ models.TextField(
171
+ choices=[
172
+ ("bdist_dmg", "bdist_dmg"),
173
+ ("bdist_dumb", "bdist_dumb"),
174
+ ("bdist_egg", "bdist_egg"),
175
+ ("bdist_msi", "bdist_msi"),
176
+ ("bdist_rpm", "bdist_rpm"),
177
+ ("bdist_wheel", "bdist_wheel"),
178
+ ("bdist_wininst", "bdist_wininst"),
179
+ ("sdist", "sdist"),
180
+ ]
181
+ ),
182
+ ),
183
+ ("name", models.TextField()),
184
+ ("version", models.TextField()),
185
+ ("metadata_version", models.TextField()),
186
+ ("summary", models.TextField()),
187
+ ("description", models.TextField()),
188
+ ("keywords", models.TextField()),
189
+ ("home_page", models.TextField()),
190
+ ("download_url", models.TextField()),
191
+ ("author", models.TextField()),
192
+ ("author_email", models.TextField()),
193
+ ("maintainer", models.TextField()),
194
+ ("maintainer_email", models.TextField()),
195
+ ("license", models.TextField()),
196
+ ("requires_python", models.TextField()),
197
+ ("project_url", models.TextField()),
198
+ ("platform", models.TextField()),
199
+ ("supported_platform", models.TextField()),
200
+ ("requires_dist", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
201
+ ("provides_dist", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
202
+ ("obsoletes_dist", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
203
+ ("requires_external", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
204
+ ("classifiers", django.contrib.postgres.fields.jsonb.JSONField(default=list)),
205
+ ("python_version", models.TextField()),
206
+ ("sha256", models.CharField(db_index=True, max_length=64, unique=True)),
207
+ ("description_content_type", models.TextField()),
208
+ ("project_urls", django.contrib.postgres.fields.jsonb.JSONField(default=dict)),
209
+ ],
210
+ options={
211
+ "default_related_name": "%(app_label)s_%(model_name)s",
212
+ "unique_together": {("sha256",)},
213
+ },
214
+ bases=("core.content",),
215
+ ),
216
+ migrations.AddField(
217
+ model_name="pythondistribution",
218
+ name="allow_uploads",
219
+ field=models.BooleanField(default=True),
220
+ ),
221
+ migrations.AlterField(
222
+ model_name="pythonpackagecontent",
223
+ name="classifiers",
224
+ field=models.JSONField(default=list),
225
+ ),
226
+ migrations.AlterField(
227
+ model_name="pythonpackagecontent",
228
+ name="obsoletes_dist",
229
+ field=models.JSONField(default=list),
230
+ ),
231
+ migrations.AlterField(
232
+ model_name="pythonpackagecontent",
233
+ name="project_urls",
234
+ field=models.JSONField(default=dict),
235
+ ),
236
+ migrations.AlterField(
237
+ model_name="pythonpackagecontent",
238
+ name="provides_dist",
239
+ field=models.JSONField(default=list),
240
+ ),
241
+ migrations.AlterField(
242
+ model_name="pythonpackagecontent",
243
+ name="requires_dist",
244
+ field=models.JSONField(default=list),
245
+ ),
246
+ migrations.AlterField(
247
+ model_name="pythonpackagecontent",
248
+ name="requires_external",
249
+ field=models.JSONField(default=list),
250
+ ),
251
+ migrations.AlterField(
252
+ model_name="pythonremote",
253
+ name="excludes",
254
+ field=models.JSONField(default=list),
255
+ ),
256
+ migrations.AlterField(
257
+ model_name="pythonremote",
258
+ name="includes",
259
+ field=models.JSONField(default=list),
260
+ ),
261
+ ]
@@ -6,14 +6,14 @@ from django.db import migrations, models
6
6
  class Migration(migrations.Migration):
7
7
 
8
8
  dependencies = [
9
- ('python', '0001_initial'),
9
+ ("python", "0001_initial"),
10
10
  ]
11
11
 
12
12
  operations = [
13
13
  migrations.AddField(
14
- model_name='pythonpackagecontent',
15
- name='python_version',
16
- field=models.TextField(default=''),
14
+ model_name="pythonpackagecontent",
15
+ name="python_version",
16
+ field=models.TextField(default=""),
17
17
  preserve_default=False,
18
18
  ),
19
19
  ]
@@ -0,0 +1,53 @@
1
+ # Generated by Django 2.2.19 on 2021-03-26 13:31
2
+
3
+ import django.contrib.postgres.fields
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("python", "0002_pythonpackagecontent_python_version"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AddField(
15
+ model_name="pythonremote",
16
+ name="exclude_platforms",
17
+ field=django.contrib.postgres.fields.ArrayField(
18
+ base_field=models.CharField(blank=True, max_length=10),
19
+ choices=[
20
+ ("windows", "windows"),
21
+ ("macos", "macos"),
22
+ ("freebsd", "freebsd"),
23
+ ("linux", "linux"),
24
+ ],
25
+ default=list,
26
+ size=None,
27
+ ),
28
+ ),
29
+ migrations.AddField(
30
+ model_name="pythonremote",
31
+ name="keep_latest_packages",
32
+ field=models.IntegerField(default=0),
33
+ ),
34
+ migrations.AddField(
35
+ model_name="pythonremote",
36
+ name="package_types",
37
+ field=django.contrib.postgres.fields.ArrayField(
38
+ base_field=models.CharField(blank=True, max_length=15),
39
+ choices=[
40
+ ("bdist_dmg", "bdist_dmg"),
41
+ ("bdist_dumb", "bdist_dumb"),
42
+ ("bdist_egg", "bdist_egg"),
43
+ ("bdist_msi", "bdist_msi"),
44
+ ("bdist_rpm", "bdist_rpm"),
45
+ ("bdist_wheel", "bdist_wheel"),
46
+ ("bdist_wininst", "bdist_wininst"),
47
+ ("sdist", "sdist"),
48
+ ],
49
+ default=list,
50
+ size=None,
51
+ ),
52
+ ),
53
+ ]