devpi-web 4.2.3__tar.gz → 4.3.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 (60) hide show
  1. {devpi-web-4.2.3 → devpi-web-4.3.0}/CHANGELOG +10 -0
  2. {devpi-web-4.2.3 → devpi-web-4.3.0}/PKG-INFO +11 -11
  3. devpi-web-4.3.0/devpi_web/__init__.py +1 -0
  4. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/index.pt +4 -1
  5. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/project.pt +4 -1
  6. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/version.pt +4 -0
  7. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/views.py +4 -2
  8. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web.egg-info/PKG-INFO +11 -11
  9. {devpi-web-4.2.3 → devpi-web-4.3.0}/setup.py +1 -1
  10. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_views.py +16 -7
  11. devpi-web-4.2.3/devpi_web/__init__.py +0 -1
  12. {devpi-web-4.2.3 → devpi-web-4.3.0}/.flake8 +0 -0
  13. {devpi-web-4.2.3 → devpi-web-4.3.0}/AUTHORS +0 -0
  14. {devpi-web-4.2.3 → devpi-web-4.3.0}/LICENSE +0 -0
  15. {devpi-web-4.2.3 → devpi-web-4.3.0}/MANIFEST.in +0 -0
  16. {devpi-web-4.2.3 → devpi-web-4.3.0}/README.rst +0 -0
  17. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/clear_index.py +0 -0
  18. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/compat.py +0 -0
  19. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/config.py +0 -0
  20. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/description.py +0 -0
  21. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/doczip.py +0 -0
  22. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/hookspecs.py +0 -0
  23. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/indexing.py +0 -0
  24. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/main.py +0 -0
  25. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/null_index.py +0 -0
  26. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/static/common.js +0 -0
  27. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/static/docview.js +0 -0
  28. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/static/favicon.ico +0 -0
  29. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/static/jquery-3.6.0.min.js +0 -0
  30. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/static/style.css +0 -0
  31. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/doc.pt +0 -0
  32. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/error.pt +0 -0
  33. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/macros.pt +0 -0
  34. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/notfound.pt +0 -0
  35. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/root.pt +0 -0
  36. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/search.pt +0 -0
  37. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/search_help.pt +0 -0
  38. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/status.pt +0 -0
  39. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/toxresult.pt +0 -0
  40. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/toxresults.pt +0 -0
  41. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/templates/user.pt +0 -0
  42. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web/whoosh_index.py +0 -0
  43. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web.egg-info/SOURCES.txt +0 -0
  44. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web.egg-info/dependency_links.txt +0 -0
  45. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web.egg-info/entry_points.txt +0 -0
  46. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web.egg-info/not-zip-safe +0 -0
  47. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web.egg-info/requires.txt +0 -0
  48. {devpi-web-4.2.3 → devpi-web-4.3.0}/devpi_web.egg-info/top_level.txt +0 -0
  49. {devpi-web-4.2.3 → devpi-web-4.3.0}/pyproject.toml +0 -0
  50. {devpi-web-4.2.3 → devpi-web-4.3.0}/setup.cfg +0 -0
  51. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/conftest.py +0 -0
  52. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_indexing.py +0 -0
  53. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_main.py +0 -0
  54. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_theme.py +0 -0
  55. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_views_docs.py +0 -0
  56. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_views_misc.py +0 -0
  57. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_views_search.py +0 -0
  58. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_views_toxresults.py +0 -0
  59. {devpi-web-4.2.3 → devpi-web-4.3.0}/tests/test_whoosh_index.py +0 -0
  60. {devpi-web-4.2.3 → devpi-web-4.3.0}/tox.ini +0 -0
@@ -2,6 +2,16 @@
2
2
 
3
3
  .. towncrier release notes start
4
4
 
5
+ 4.3.0 (2024-10-16)
6
+ ==================
7
+
8
+ Features
9
+ --------
10
+
11
+ - index.pt, project.pt, version.pt: Fix #1062: Added a link to download the documentation as zip-file to the index, project and version view.
12
+
13
+
14
+
5
15
  4.2.3 (2024-09-19)
6
16
  ==================
7
17
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devpi-web
3
- Version: 4.2.3
3
+ Version: 4.3.0
4
4
  Summary: devpi-web: a web view for devpi-server
5
5
  Home-page: https://devpi.net
6
6
  Maintainer: Florian Schulze
@@ -77,6 +77,16 @@ Changelog
77
77
 
78
78
  .. towncrier release notes start
79
79
 
80
+ 4.3.0 (2024-10-16)
81
+ ==================
82
+
83
+ Features
84
+ --------
85
+
86
+ - index.pt, project.pt, version.pt: Fix #1062: Added a link to download the documentation as zip-file to the index, project and version view.
87
+
88
+
89
+
80
90
  4.2.3 (2024-09-19)
81
91
  ==================
82
92
 
@@ -144,13 +154,3 @@ Bug Fixes
144
154
 
145
155
  - toxresults.pt, version.pt: Fix anchor generation for toxresults URLs.
146
156
 
147
-
148
- 4.1.1 (2022-09-28)
149
- ==================
150
-
151
-
152
- Bug Fixes
153
- ---------
154
-
155
- - Generalize GET redirect from URLs with trailing slash to ones without for consistency.
156
-
@@ -0,0 +1 @@
1
+ __version__ = '4.3.0'
@@ -40,7 +40,10 @@
40
40
  </tal:file>
41
41
  </tal:files>
42
42
  </td>
43
- <td><a tal:condition="package.docs" href="${package.docs.url}">${package.docs.title}</a></td>
43
+ <td>
44
+ <a tal:condition="package.docs" href="${package.docs.url}">${package.docs.title}</a>
45
+ <span tal:condition="package.docs">(<a href="${package.docs.zip_url}">Download</a>)</span>
46
+ </td>
44
47
  </tr>
45
48
  </tbody>
46
49
  </table>
@@ -35,7 +35,10 @@
35
35
  <tr tal:repeat="version versions">
36
36
  <td><a href="${version.index_url}">${version.index_title}</a></td>
37
37
  <td><a href="${version.url}">${version.title}</a></td>
38
- <td><a tal:condition="version.docs" href="${version.docs.url}">${version.docs.title}</a></td>
38
+ <td>
39
+ <a tal:condition="version.docs" href="${version.docs.url}">${version.docs.title}</a>
40
+ <span tal:condition="version.docs">(<a href="${version.docs.zip_url}">Download</a>)</span>
41
+ </td>
39
42
  </tr>
40
43
  </tbody>
41
44
  </table>
@@ -98,6 +98,10 @@
98
98
  </tbody>
99
99
  </table>
100
100
 
101
+ <p tal:condition="docs">
102
+ Download documentation as zip-file: <a href="${docs.zip_url}">${docs.title}</a>
103
+ </p>
104
+
101
105
  <div id="description" tal:content="structure content" />
102
106
  </div>
103
107
  <metal:footer use-macro="request.macros['footer']" />
@@ -474,7 +474,8 @@ def get_docs_info(request, stage, linkstore):
474
474
  title="%s-%s" % (name, ver),
475
475
  url=request.route_url(
476
476
  "docviewroot", user=stage.user.name, index=stage.index,
477
- project=name, version=ver, relpath="index.html"))
477
+ project=name, version=ver, relpath="index.html"),
478
+ zip_url=url_for_entrypath(request, links[0].entrypath))
478
479
 
479
480
 
480
481
  def get_user_info(context, request, user):
@@ -830,7 +831,8 @@ def version_get(context, request):
830
831
  make_toxresult_url=functools.partial(
831
832
  request.route_url, "toxresult",
832
833
  user=context.username, index=context.index,
833
- project=context.project, version=version))
834
+ project=context.project, version=version),
835
+ docs=docs)
834
836
 
835
837
 
836
838
  @view_config(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devpi-web
3
- Version: 4.2.3
3
+ Version: 4.3.0
4
4
  Summary: devpi-web: a web view for devpi-server
5
5
  Home-page: https://devpi.net
6
6
  Maintainer: Florian Schulze
@@ -77,6 +77,16 @@ Changelog
77
77
 
78
78
  .. towncrier release notes start
79
79
 
80
+ 4.3.0 (2024-10-16)
81
+ ==================
82
+
83
+ Features
84
+ --------
85
+
86
+ - index.pt, project.pt, version.pt: Fix #1062: Added a link to download the documentation as zip-file to the index, project and version view.
87
+
88
+
89
+
80
90
  4.2.3 (2024-09-19)
81
91
  ==================
82
92
 
@@ -144,13 +154,3 @@ Bug Fixes
144
154
 
145
155
  - toxresults.pt, version.pt: Fix anchor generation for toxresults URLs.
146
156
 
147
-
148
- 4.1.1 (2022-09-28)
149
- ==================
150
-
151
-
152
- Bug Fixes
153
- ---------
154
-
155
- - Generalize GET redirect from URLs with trailing slash to ones without for consistency.
156
-
@@ -34,7 +34,7 @@ setup(
34
34
  'Documentation': 'https://doc.devpi.net',
35
35
  'Source Code': 'https://github.com/devpi/devpi'
36
36
  },
37
- version='4.2.3',
37
+ version='4.3.0',
38
38
  maintainer="Florian Schulze",
39
39
  maintainer_email="mail@pyfidelity.com",
40
40
  license="MIT",
@@ -142,8 +142,10 @@ def test_index_view_project_docs(keep_docs_packed, mapp, testapp):
142
142
  api = mapp.create_and_use(indexconfig=dict(bases=["root/pypi"]))
143
143
  mapp.set_versiondata({"name": "pkg1", "version": "2.6"})
144
144
  content = zip_dict({"index.html": "<html/>"})
145
- mapp.upload_doc("pkg1.zip", content, "pkg1", "2.6", code=200,
145
+ mapp.upload_doc("pkg1-2.6.doc.zip", content, "pkg1", "2.6", code=200,
146
146
  waithooks=True)
147
+ doc_zip_url = make_file_url("pkg1-2.6.doc.zip", content, stagename=api.stagename)
148
+ doc_zip_url = doc_zip_url.rsplit("#", 1)[0]
147
149
  r = testapp.get(api.index, headers=dict(accept="text/html"))
148
150
  assert r.status_code == 200
149
151
  links = r.html.select('#content a')
@@ -151,6 +153,7 @@ def test_index_view_project_docs(keep_docs_packed, mapp, testapp):
151
153
  ("simple index", "http://localhost/%s/+simple/" % api.stagename),
152
154
  ("pkg1-2.6", "http://localhost/%s/pkg1/2.6" % api.stagename),
153
155
  ("pkg1-2.6", "http://localhost/%s/pkg1/2.6/+d/index.html" % api.stagename),
156
+ ('Download', doc_zip_url),
154
157
  ("root/pypi", "http://localhost/root/pypi"),
155
158
  ("simple", "http://localhost/root/pypi/+simple/")]
156
159
 
@@ -251,8 +254,8 @@ def test_project_view_docs_only(keep_docs_packed, mapp, testapp):
251
254
  "pkg1.zip", content, "pkg1", "2.6", code=200, waithooks=True)
252
255
  r = testapp.xget(200, api.index + '/pkg1', headers=dict(accept="text/html"))
253
256
  (content,) = r.html.select('#content')
254
- assert [x.text for x in content.select('tr td')] == [
255
- "user1/dev", "2.6", "pkg1-2.6"]
257
+ assert [x.text.strip() for x in content.select('tr td')] == [
258
+ "user1/dev", "2.6", "pkg1-2.6\n(Download)"]
256
259
 
257
260
 
258
261
  def test_project_view_root_pypi(mapp, testapp, pypistage):
@@ -316,7 +319,9 @@ def test_project_view_root_and_docs(keep_docs_packed, mapp, testapp, pypistage):
316
319
  content = zip_dict({"index.html": "<html/>"})
317
320
  mapp.set_versiondata({"name": "pkg1", "version": "2.6"})
318
321
  mapp.upload_doc(
319
- "pkg1.zip", content, "pkg1", "2.6", code=200, waithooks=True)
322
+ "pkg1-2.6.doc.zip", content, "pkg1", "2.6", code=200, waithooks=True)
323
+ doc_zip_url = make_file_url("pkg1-2.6.doc.zip", content, stagename=api.stagename)
324
+ doc_zip_url = doc_zip_url.rsplit("#", 1)[0]
320
325
  r = testapp.xget(200, api.index + '/pkg1', headers=dict(accept="text/html"))
321
326
  links = r.html.select('#content a')
322
327
  assert [(l.text, l.attrs['href']) for l in links] == [
@@ -327,7 +332,8 @@ def test_project_view_root_and_docs(keep_docs_packed, mapp, testapp, pypistage):
327
332
  ("2.7", "http://localhost/root/pypi/pkg1/2.7"),
328
333
  ("root/pypi", "http://localhost/root/pypi"),
329
334
  ("2.6", "http://localhost/root/pypi/pkg1/2.6"),
330
- ("pkg1-2.6", "http://localhost/user1/dev/pkg1/2.6/+d/index.html")]
335
+ ("pkg1-2.6", "http://localhost/user1/dev/pkg1/2.6/+d/index.html"),
336
+ ("Download", doc_zip_url)]
331
337
 
332
338
 
333
339
  def test_project_view_inherited_no_versions_on_stage(mapp, testapp):
@@ -361,7 +367,9 @@ def test_version_view(mapp, testapp, monkeypatch):
361
367
  zip = mapp.upload_file_pypi(
362
368
  "pkg1-2.6.zip", b"contentzip", "pkg1", "2.6").file_url
363
369
  content = zip_dict({"index.html": "<html/>"})
364
- mapp.upload_doc("pkg1.zip", content, "pkg1", "2.6", code=200)
370
+ mapp.upload_doc("pkg1-2.6.doc.zip", content, "pkg1", "2.6", code=200)
371
+ doc_zip_url = make_file_url("pkg1-2.6.doc.zip", content, stagename=api.stagename)
372
+ doc_zip_url = doc_zip_url.rsplit("#", 1)[0]
365
373
  classifiers = ["Intended Audience :: Developers",
366
374
  "License :: OSI Approved :: MIT License"]
367
375
  mapp.set_versiondata({
@@ -404,7 +412,8 @@ def test_version_view(mapp, testapp, monkeypatch):
404
412
  ("pkg1-2.6.tar.gz", tar3),
405
413
  ('user1/dev', 'http://localhost/user1/dev'),
406
414
  ("pkg1-2.6.zip", zip),
407
- ('user1/dev', 'http://localhost/user1/dev')]
415
+ ('user1/dev', 'http://localhost/user1/dev'),
416
+ ('pkg1-2.6', doc_zip_url)]
408
417
 
409
418
 
410
419
  @pytest.mark.with_notifier
@@ -1 +0,0 @@
1
- __version__ = '4.2.3'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes