zope.mimetype 3.1__tar.gz → 4.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 (94) hide show
  1. zope_mimetype-4.0/.pre-commit-config.yaml +28 -0
  2. {zope.mimetype-3.1 → zope_mimetype-4.0}/CHANGES.rst +14 -0
  3. {zope.mimetype-3.1 → zope_mimetype-4.0}/CONTRIBUTING.md +1 -1
  4. {zope.mimetype-3.1 → zope_mimetype-4.0}/MANIFEST.in +1 -0
  5. {zope.mimetype-3.1 → zope_mimetype-4.0}/PKG-INFO +32 -7
  6. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/conf.py +12 -9
  7. zope_mimetype-4.0/pyproject.toml +33 -0
  8. {zope.mimetype-3.1 → zope_mimetype-4.0}/setup.cfg +0 -3
  9. {zope.mimetype-3.1 → zope_mimetype-4.0}/setup.py +5 -10
  10. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/configure.rst +1 -1
  11. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/interfaces.py +1 -1
  12. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/source.py +2 -2
  13. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/tests/test_doctests.py +1 -1
  14. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/tests/test_source.py +1 -1
  15. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/typegetter.py +1 -1
  16. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/zcml.py +1 -1
  17. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope.mimetype.egg-info/PKG-INFO +32 -7
  18. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope.mimetype.egg-info/SOURCES.txt +2 -2
  19. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope.mimetype.egg-info/requires.txt +1 -1
  20. {zope.mimetype-3.1 → zope_mimetype-4.0}/tox.ini +16 -38
  21. zope.mimetype-3.1/src/zope/__init__.py +0 -1
  22. zope.mimetype-3.1/src/zope.mimetype.egg-info/namespace_packages.txt +0 -1
  23. {zope.mimetype-3.1 → zope_mimetype-4.0}/.readthedocs.yaml +0 -0
  24. {zope.mimetype-3.1 → zope_mimetype-4.0}/COPYRIGHT.txt +0 -0
  25. {zope.mimetype-3.1 → zope_mimetype-4.0}/LICENSE.txt +0 -0
  26. {zope.mimetype-3.1 → zope_mimetype-4.0}/README.rst +0 -0
  27. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/api/index.rst +0 -0
  28. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/changelog.rst +0 -0
  29. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/codec.rst +0 -0
  30. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/constraints.rst +0 -0
  31. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/contentinfo.rst +0 -0
  32. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/event.rst +0 -0
  33. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/index.rst +0 -0
  34. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/intro.rst +0 -0
  35. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/requirements.txt +0 -0
  36. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/retrieving_mime_types.rst +0 -0
  37. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/source.rst +0 -0
  38. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/typegetter.rst +0 -0
  39. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/utils.rst +0 -0
  40. {zope.mimetype-3.1 → zope_mimetype-4.0}/docs/widget.rst +0 -0
  41. {zope.mimetype-3.1 → zope_mimetype-4.0}/rtd-requirements.txt +0 -0
  42. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/README.rst +0 -0
  43. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/TODO.rst +0 -0
  44. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/__init__.py +0 -0
  45. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/character-sets.txt +0 -0
  46. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/codec.py +0 -0
  47. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/codec.rst +0 -0
  48. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/configure.zcml +0 -0
  49. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/constraints.rst +0 -0
  50. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/contentinfo.py +0 -0
  51. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/contentinfo.rst +0 -0
  52. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/event.py +0 -0
  53. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/event.rst +0 -0
  54. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/i18n.py +0 -0
  55. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/archive.png +0 -0
  56. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/audio.gif +0 -0
  57. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/binary.gif +0 -0
  58. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/css.gif +0 -0
  59. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/document.gif +0 -0
  60. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/html.gif +0 -0
  61. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/image.gif +0 -0
  62. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/javascript.gif +0 -0
  63. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/ms-excel.gif +0 -0
  64. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/ms-powerpoint.gif +0 -0
  65. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/ms-project.gif +0 -0
  66. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/ms-word.gif +0 -0
  67. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/octet-stream.gif +0 -0
  68. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/oo-calc.png +0 -0
  69. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/oo-impress.png +0 -0
  70. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/oo-writer.png +0 -0
  71. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/pdf.gif +0 -0
  72. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/python.gif +0 -0
  73. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/video.png +0 -0
  74. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/wordperfect.gif +0 -0
  75. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/xml.gif +0 -0
  76. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/icons/xsl.gif +0 -0
  77. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/meta.zcml +0 -0
  78. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/mtypes.py +0 -0
  79. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/retrieving_mime_types.rst +0 -0
  80. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/source.rst +0 -0
  81. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/tests/__init__.py +0 -0
  82. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/tests/test_codec.py +0 -0
  83. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/tests/test_contentinfo.py +0 -0
  84. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/tests/test_typegetter.py +0 -0
  85. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/tests/test_zcml.py +0 -0
  86. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/typegetter.rst +0 -0
  87. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/types.csv +0 -0
  88. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/utils.py +0 -0
  89. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/utils.rst +0 -0
  90. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/widget.py +0 -0
  91. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope/mimetype/widget.rst +0 -0
  92. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope.mimetype.egg-info/dependency_links.txt +0 -0
  93. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope.mimetype.egg-info/not-zip-safe +0 -0
  94. {zope.mimetype-3.1 → zope_mimetype-4.0}/src/zope.mimetype.egg-info/top_level.txt +0 -0
@@ -0,0 +1,28 @@
1
+ # Generated from:
2
+ # https://github.com/zopefoundation/meta/tree/master/config/pure-python
3
+ minimum_pre_commit_version: '3.6'
4
+ repos:
5
+ - repo: https://github.com/pycqa/isort
6
+ rev: "6.0.1"
7
+ hooks:
8
+ - id: isort
9
+ - repo: https://github.com/hhatto/autopep8
10
+ rev: "v2.3.2"
11
+ hooks:
12
+ - id: autopep8
13
+ args: [--in-place, --aggressive, --aggressive]
14
+ - repo: https://github.com/asottile/pyupgrade
15
+ rev: v3.20.0
16
+ hooks:
17
+ - id: pyupgrade
18
+ args: [--py39-plus]
19
+ - repo: https://github.com/isidentical/teyit
20
+ rev: 0.4.3
21
+ hooks:
22
+ - id: teyit
23
+ - repo: https://github.com/PyCQA/flake8
24
+ rev: "7.3.0"
25
+ hooks:
26
+ - id: flake8
27
+ additional_dependencies:
28
+ - flake8-debugger == 4.1.2
@@ -2,6 +2,20 @@
2
2
  Changes
3
3
  =========
4
4
 
5
+ 4.0 (2025-09-12)
6
+ ================
7
+
8
+ - Replace ``pkg_resources`` namespace with PEP 420 native namespace.
9
+
10
+
11
+ 3.2 (2025-07-03)
12
+ ================
13
+
14
+ - Add support for Python 3.13.
15
+
16
+ - Drop support for Python 3.7, 3.8.
17
+
18
+
5
19
  3.1 (2024-02-08)
6
20
  ================
7
21
 
@@ -1,7 +1,7 @@
1
1
  <!--
2
2
  Generated from:
3
3
  https://github.com/zopefoundation/meta/tree/master/config/pure-python
4
- -->
4
+ -->
5
5
  # Contributing to zopefoundation projects
6
6
 
7
7
  The projects under the zopefoundation GitHub organization are open source and
@@ -5,6 +5,7 @@ include *.rst
5
5
  include *.txt
6
6
  include buildout.cfg
7
7
  include tox.ini
8
+ include .pre-commit-config.yaml
8
9
 
9
10
  recursive-include docs *.py
10
11
  recursive-include docs *.rst
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: zope.mimetype
3
- Version: 3.1
3
+ Version: 4.0
4
4
  Summary: A simple package for working with MIME content types
5
5
  Home-page: https://github.com/zopefoundation/zope.mimetype
6
6
  Author: Zope Foundation and Contributors
7
7
  Author-email: zope-dev@zope.dev
8
- License: ZPL 2.1
8
+ License: ZPL-2.1
9
9
  Keywords: file content mimetype
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Web Environment
@@ -13,19 +13,18 @@ Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: Zope Public License
14
14
  Classifier: Programming Language :: Python
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.7
17
- Classifier: Programming Language :: Python :: 3.8
18
16
  Classifier: Programming Language :: Python :: 3.9
19
17
  Classifier: Programming Language :: Python :: 3.10
20
18
  Classifier: Programming Language :: Python :: 3.11
21
19
  Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
22
21
  Classifier: Programming Language :: Python :: Implementation :: CPython
23
22
  Classifier: Programming Language :: Python :: Implementation :: PyPy
24
23
  Classifier: Natural Language :: English
25
24
  Classifier: Operating System :: OS Independent
26
25
  Classifier: Topic :: Internet :: WWW/HTTP
27
26
  Classifier: Framework :: Zope :: 3
28
- Requires-Python: >=3.7
27
+ Requires-Python: >=3.9
29
28
  License-File: LICENSE.txt
30
29
  Requires-Dist: setuptools
31
30
  Requires-Dist: zope.component
@@ -43,7 +42,7 @@ Requires-Dist: zope.browserresource; extra == "test"
43
42
  Requires-Dist: zope.formlib>=4.0; extra == "test"
44
43
  Requires-Dist: zope.publisher; extra == "test"
45
44
  Requires-Dist: zope.testing; extra == "test"
46
- Requires-Dist: zope.testrunner; extra == "test"
45
+ Requires-Dist: zope.testrunner>=6.4; extra == "test"
47
46
  Provides-Extra: browser
48
47
  Requires-Dist: zope.browser; extra == "browser"
49
48
  Requires-Dist: zope.browserresource; extra == "browser"
@@ -57,6 +56,18 @@ Requires-Dist: zope.browser; extra == "docs"
57
56
  Requires-Dist: zope.browserresource; extra == "docs"
58
57
  Requires-Dist: zope.formlib>=4.0; extra == "docs"
59
58
  Requires-Dist: zope.publisher; extra == "docs"
59
+ Dynamic: author
60
+ Dynamic: author-email
61
+ Dynamic: classifier
62
+ Dynamic: description
63
+ Dynamic: home-page
64
+ Dynamic: keywords
65
+ Dynamic: license
66
+ Dynamic: license-file
67
+ Dynamic: provides-extra
68
+ Dynamic: requires-dist
69
+ Dynamic: requires-python
70
+ Dynamic: summary
60
71
 
61
72
  zope.mimetype
62
73
  =============
@@ -90,6 +101,20 @@ See complete documentation at https://zopemimetype.readthedocs.io/en/latest/
90
101
  Changes
91
102
  =========
92
103
 
104
+ 4.0 (2025-09-12)
105
+ ================
106
+
107
+ - Replace ``pkg_resources`` namespace with PEP 420 native namespace.
108
+
109
+
110
+ 3.2 (2025-07-03)
111
+ ================
112
+
113
+ - Add support for Python 3.13.
114
+
115
+ - Drop support for Python 3.7, 3.8.
116
+
117
+
93
118
  3.1 (2024-02-08)
94
119
  ================
95
120
 
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  #
3
2
  # zope.mimetype documentation build configuration file, created by
4
3
  # sphinx-quickstart on Thu Jun 8 07:02:25 2017.
@@ -21,7 +20,10 @@
21
20
  # sys.path.insert(0, os.path.abspath('.'))
22
21
  import os
23
22
  import sys
23
+
24
24
  import pkg_resources
25
+
26
+
25
27
  # Use the python versions instead of the cython compiled versions
26
28
  # for better documentation extraction and ease of tweaking docs.
27
29
  os.environ['PURE_PYTHON'] = '1'
@@ -58,9 +60,9 @@ source_suffix = '.rst'
58
60
  master_doc = 'index'
59
61
 
60
62
  # General information about the project.
61
- project = u'zope.mimetype'
62
- copyright = u'2017, Zope Foundation contributors'
63
- author = u'Zope Foundation contributors'
63
+ project = 'zope.mimetype'
64
+ copyright = '2017, Zope Foundation contributors'
65
+ author = 'Zope Foundation contributors'
64
66
 
65
67
  # The version info for the project you're documenting, acts as replacement for
66
68
  # |version| and |release|, also used in various other places throughout the
@@ -83,7 +85,8 @@ language = 'en'
83
85
  # This patterns also effect to html_static_path and html_extra_path
84
86
  exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
85
87
 
86
- # The reST default role (used for this markup: `text`) to use for all documents.
88
+ # The reST default role (used for this markup: `text`) to use for all
89
+ # documents.
87
90
  default_role = 'obj'
88
91
 
89
92
  # If true, '()' will be appended to :func: etc. cross-reference text.
@@ -149,8 +152,8 @@ latex_elements = {
149
152
  # (source start file, target name, title,
150
153
  # author, documentclass [howto, manual, or own class]).
151
154
  latex_documents = [
152
- (master_doc, 'zopemimetype.tex', u'zope.mimetype Documentation',
153
- u'NextThought', 'manual'),
155
+ (master_doc, 'zopemimetype.tex', 'zope.mimetype Documentation',
156
+ 'NextThought', 'manual'),
154
157
  ]
155
158
 
156
159
 
@@ -159,7 +162,7 @@ latex_documents = [
159
162
  # One entry per manual page. List of tuples
160
163
  # (source start file, name, description, authors, manual section).
161
164
  man_pages = [
162
- (master_doc, 'zopemimetype', u'zope.mimetype Documentation',
165
+ (master_doc, 'zopemimetype', 'zope.mimetype Documentation',
163
166
  [author], 1)
164
167
  ]
165
168
 
@@ -170,7 +173,7 @@ man_pages = [
170
173
  # (source start file, target name, title, author,
171
174
  # dir menu entry, description, category)
172
175
  texinfo_documents = [
173
- (master_doc, 'zopemimetype', u'zope.mimetype Documentation',
176
+ (master_doc, 'zopemimetype', 'zope.mimetype Documentation',
174
177
  author, 'zopemimetype', 'One line description of project.',
175
178
  'Miscellaneous'),
176
179
  ]
@@ -0,0 +1,33 @@
1
+ #
2
+ # Generated from:
3
+ # https://github.com/zopefoundation/meta/tree/master/config/pure-python
4
+
5
+ [build-system]
6
+ requires = [
7
+ "setuptools == 78.1.1",
8
+ "wheel",
9
+ ]
10
+ build-backend = "setuptools.build_meta"
11
+
12
+ [tool.coverage.run]
13
+ branch = true
14
+ source = ["zope.mimetype"]
15
+
16
+ [tool.coverage.report]
17
+ fail_under = 99
18
+ precision = 2
19
+ ignore_errors = true
20
+ show_missing = true
21
+ exclude_lines = [
22
+ "pragma: no cover",
23
+ "pragma: nocover",
24
+ "except ImportError:",
25
+ "raise NotImplementedError",
26
+ "if __name__ == '__main__':",
27
+ "self.fail",
28
+ "raise AssertionError",
29
+ "raise unittest.Skip",
30
+ ]
31
+
32
+ [tool.coverage.html]
33
+ directory = "parts/htmlcov"
@@ -1,6 +1,3 @@
1
- [bdist_wheel]
2
- universal = 0
3
-
4
1
  [flake8]
5
2
  doctests = 1
6
3
 
@@ -20,7 +20,6 @@
20
20
  """
21
21
  import os
22
22
 
23
- from setuptools import find_packages
24
23
  from setuptools import setup
25
24
 
26
25
 
@@ -38,11 +37,11 @@ BROWSER_REQUIRES = [
38
37
 
39
38
  TEST_REQUIRES = BROWSER_REQUIRES + [
40
39
  'zope.testing',
41
- 'zope.testrunner',
40
+ 'zope.testrunner >= 6.4',
42
41
  ]
43
42
 
44
43
  setup(name='zope.mimetype',
45
- version='3.1',
44
+ version='4.0',
46
45
  author='Zope Foundation and Contributors',
47
46
  author_email='zope-dev@zope.dev',
48
47
  description="A simple package for working with MIME content types",
@@ -59,12 +58,11 @@ setup(name='zope.mimetype',
59
58
  'License :: OSI Approved :: Zope Public License',
60
59
  'Programming Language :: Python',
61
60
  'Programming Language :: Python :: 3',
62
- 'Programming Language :: Python :: 3.7',
63
- 'Programming Language :: Python :: 3.8',
64
61
  'Programming Language :: Python :: 3.9',
65
62
  'Programming Language :: Python :: 3.10',
66
63
  'Programming Language :: Python :: 3.11',
67
64
  'Programming Language :: Python :: 3.12',
65
+ 'Programming Language :: Python :: 3.13',
68
66
  'Programming Language :: Python :: Implementation :: CPython',
69
67
  'Programming Language :: Python :: Implementation :: PyPy',
70
68
  'Natural Language :: English',
@@ -73,11 +71,8 @@ setup(name='zope.mimetype',
73
71
  'Framework :: Zope :: 3',
74
72
  ],
75
73
  url='https://github.com/zopefoundation/zope.mimetype',
76
- license='ZPL 2.1',
77
- packages=find_packages('src'),
78
- package_dir={'': 'src'},
79
- namespace_packages=['zope'],
80
- python_requires='>=3.7',
74
+ license='ZPL-2.1',
75
+ python_requires='>=3.9',
81
76
  extras_require={
82
77
  'test': TEST_REQUIRES,
83
78
  'browser': BROWSER_REQUIRES,
@@ -21,7 +21,7 @@ is available:
21
21
 
22
22
  >>> try:
23
23
  ... import zope.browserresource
24
- ... except ImportError:
24
+ ... except ModuleNotFoundError:
25
25
  ... expected = 1
26
26
  ... else:
27
27
  ... expected = 107
@@ -39,7 +39,7 @@ from zope.mimetype.i18n import _
39
39
  # http://www.faqs.org/rfcs/rfc2045.html
40
40
  _token_re = r"[!#$%&'*+\-.\d^_`a-z{|}~]+"
41
41
  _token_rx = re.compile("%s$" % _token_re)
42
- _mime_type_rx = re.compile("{}/{}$".format(_token_re, _token_re))
42
+ _mime_type_rx = re.compile(f"{_token_re}/{_token_re}$")
43
43
 
44
44
 
45
45
  # These helpers are used to define constraints for specific schema
@@ -94,7 +94,7 @@ class ContentTypeTerms(Terms):
94
94
  if module not in sys.modules:
95
95
  try:
96
96
  __import__(module)
97
- except ImportError:
97
+ except ModuleNotFoundError:
98
98
  raise LookupError("could not import module for token")
99
99
  interface = getattr(sys.modules[module], name)
100
100
  if interface in self.context:
@@ -113,7 +113,7 @@ class ContentTypeTerm:
113
113
 
114
114
  @property
115
115
  def token(self):
116
- return "{}.{}".format(self.value.__module__, self.value.__name__)
116
+ return f"{self.value.__module__}.{self.value.__name__}"
117
117
 
118
118
  @property
119
119
  def title(self):
@@ -25,7 +25,7 @@ def optional_test_suite_setUp(required_module):
25
25
  import importlib
26
26
  try:
27
27
  importlib.import_module(required_module)
28
- except ImportError: # pragma: no cover
28
+ except ModuleNotFoundError: # pragma: no cover
29
29
  raise unittest.SkipTest(
30
30
  "Required module %r missing" %
31
31
  (required_module,))
@@ -32,7 +32,7 @@ class TestCodecTerms(cleanup.CleanUp,
32
32
  try:
33
33
  from zope.mimetype.source import CodecTerms
34
34
  from zope.mimetype.source import codecSource
35
- except ImportError: # pragma: no cover
35
+ except ModuleNotFoundError: # pragma: no cover
36
36
  raise unittest.SkipTest("Missing browser extra")
37
37
 
38
38
  return CodecTerms(source if source is not None else codecSource,
@@ -35,7 +35,7 @@ def mimeTypeGetter(name=None, data=None, content_type=None):
35
35
  except ValueError:
36
36
  pass
37
37
  else:
38
- return "{}/{}".format(major, minor)
38
+ return f"{major}/{minor}"
39
39
 
40
40
  return None
41
41
 
@@ -25,7 +25,7 @@ from zope.mimetype.i18n import _
25
25
 
26
26
  try:
27
27
  from zope.browserresource.metaconfigure import icon
28
- except ImportError: # pragma: no cover
28
+ except ModuleNotFoundError: # pragma: no cover
29
29
  def icon(*args):
30
30
  import warnings
31
31
  warnings.warn("No icon support: zope.browserresource is not installed")
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: zope.mimetype
3
- Version: 3.1
3
+ Version: 4.0
4
4
  Summary: A simple package for working with MIME content types
5
5
  Home-page: https://github.com/zopefoundation/zope.mimetype
6
6
  Author: Zope Foundation and Contributors
7
7
  Author-email: zope-dev@zope.dev
8
- License: ZPL 2.1
8
+ License: ZPL-2.1
9
9
  Keywords: file content mimetype
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Web Environment
@@ -13,19 +13,18 @@ Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: Zope Public License
14
14
  Classifier: Programming Language :: Python
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.7
17
- Classifier: Programming Language :: Python :: 3.8
18
16
  Classifier: Programming Language :: Python :: 3.9
19
17
  Classifier: Programming Language :: Python :: 3.10
20
18
  Classifier: Programming Language :: Python :: 3.11
21
19
  Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
22
21
  Classifier: Programming Language :: Python :: Implementation :: CPython
23
22
  Classifier: Programming Language :: Python :: Implementation :: PyPy
24
23
  Classifier: Natural Language :: English
25
24
  Classifier: Operating System :: OS Independent
26
25
  Classifier: Topic :: Internet :: WWW/HTTP
27
26
  Classifier: Framework :: Zope :: 3
28
- Requires-Python: >=3.7
27
+ Requires-Python: >=3.9
29
28
  License-File: LICENSE.txt
30
29
  Requires-Dist: setuptools
31
30
  Requires-Dist: zope.component
@@ -43,7 +42,7 @@ Requires-Dist: zope.browserresource; extra == "test"
43
42
  Requires-Dist: zope.formlib>=4.0; extra == "test"
44
43
  Requires-Dist: zope.publisher; extra == "test"
45
44
  Requires-Dist: zope.testing; extra == "test"
46
- Requires-Dist: zope.testrunner; extra == "test"
45
+ Requires-Dist: zope.testrunner>=6.4; extra == "test"
47
46
  Provides-Extra: browser
48
47
  Requires-Dist: zope.browser; extra == "browser"
49
48
  Requires-Dist: zope.browserresource; extra == "browser"
@@ -57,6 +56,18 @@ Requires-Dist: zope.browser; extra == "docs"
57
56
  Requires-Dist: zope.browserresource; extra == "docs"
58
57
  Requires-Dist: zope.formlib>=4.0; extra == "docs"
59
58
  Requires-Dist: zope.publisher; extra == "docs"
59
+ Dynamic: author
60
+ Dynamic: author-email
61
+ Dynamic: classifier
62
+ Dynamic: description
63
+ Dynamic: home-page
64
+ Dynamic: keywords
65
+ Dynamic: license
66
+ Dynamic: license-file
67
+ Dynamic: provides-extra
68
+ Dynamic: requires-dist
69
+ Dynamic: requires-python
70
+ Dynamic: summary
60
71
 
61
72
  zope.mimetype
62
73
  =============
@@ -90,6 +101,20 @@ See complete documentation at https://zopemimetype.readthedocs.io/en/latest/
90
101
  Changes
91
102
  =========
92
103
 
104
+ 4.0 (2025-09-12)
105
+ ================
106
+
107
+ - Replace ``pkg_resources`` namespace with PEP 420 native namespace.
108
+
109
+
110
+ 3.2 (2025-07-03)
111
+ ================
112
+
113
+ - Add support for Python 3.13.
114
+
115
+ - Drop support for Python 3.7, 3.8.
116
+
117
+
93
118
  3.1 (2024-02-08)
94
119
  ================
95
120
 
@@ -1,3 +1,4 @@
1
+ .pre-commit-config.yaml
1
2
  .readthedocs.yaml
2
3
  CHANGES.rst
3
4
  CONTRIBUTING.md
@@ -5,6 +6,7 @@ COPYRIGHT.txt
5
6
  LICENSE.txt
6
7
  MANIFEST.in
7
8
  README.rst
9
+ pyproject.toml
8
10
  rtd-requirements.txt
9
11
  setup.cfg
10
12
  setup.py
@@ -24,11 +26,9 @@ docs/typegetter.rst
24
26
  docs/utils.rst
25
27
  docs/widget.rst
26
28
  docs/api/index.rst
27
- src/zope/__init__.py
28
29
  src/zope.mimetype.egg-info/PKG-INFO
29
30
  src/zope.mimetype.egg-info/SOURCES.txt
30
31
  src/zope.mimetype.egg-info/dependency_links.txt
31
- src/zope.mimetype.egg-info/namespace_packages.txt
32
32
  src/zope.mimetype.egg-info/not-zip-safe
33
33
  src/zope.mimetype.egg-info/requires.txt
34
34
  src/zope.mimetype.egg-info/top_level.txt
@@ -30,4 +30,4 @@ zope.browserresource
30
30
  zope.formlib>=4.0
31
31
  zope.publisher
32
32
  zope.testing
33
- zope.testrunner
33
+ zope.testrunner>=6.4
@@ -5,12 +5,11 @@ minversion = 3.18
5
5
  envlist =
6
6
  release-check
7
7
  lint
8
- py37
9
- py38
10
8
  py39
11
9
  py310
12
10
  py311
13
11
  py312
12
+ py313
14
13
  pypy3
15
14
  docs
16
15
  coverage
@@ -20,18 +19,24 @@ usedevelop = true
20
19
  package = wheel
21
20
  wheel_build_env = .pkg
22
21
  deps =
23
- setenv =
24
- py312: VIRTUALENV_PIP=23.1.2
25
- py312: PIP_REQUIRE_VIRTUALENV=0
22
+ setuptools == 78.1.1
26
23
  commands =
27
24
  zope-testrunner --test-path=src {posargs:-vc}
28
25
  extras =
29
26
  test
27
+
28
+ [testenv:setuptools-latest]
29
+ basepython = python3
30
+ deps =
31
+ git+https://github.com/pypa/setuptools.git\#egg=setuptools
32
+
30
33
  [testenv:release-check]
31
34
  description = ensure that the distribution is ready to release
32
35
  basepython = python3
33
36
  skip_install = true
34
37
  deps =
38
+ setuptools == 78.1.1
39
+ wheel
35
40
  twine
36
41
  build
37
42
  check-manifest
@@ -45,23 +50,14 @@ commands =
45
50
  twine check dist/*
46
51
 
47
52
  [testenv:lint]
53
+ description = This env runs all linters configured in .pre-commit-config.yaml
48
54
  basepython = python3
49
55
  skip_install = true
50
56
  deps =
51
- isort
52
- flake8
53
- commands =
54
- isort --check-only --diff {toxinidir}/src {toxinidir}/setup.py
55
- flake8 src setup.py
56
-
57
- [testenv:isort-apply]
58
- basepython = python3
59
- skip_install = true
57
+ pre-commit
60
58
  commands_pre =
61
- deps =
62
- isort
63
59
  commands =
64
- isort {toxinidir}/src {toxinidir}/setup.py []
60
+ pre-commit run --all-files --show-diff-on-failure
65
61
 
66
62
  [testenv:docs]
67
63
  basepython = python3
@@ -77,27 +73,9 @@ basepython = python3
77
73
  allowlist_externals =
78
74
  mkdir
79
75
  deps =
80
- coverage
76
+ coverage[toml]
81
77
  commands =
82
78
  mkdir -p {toxinidir}/parts/htmlcov
83
79
  coverage run -m zope.testrunner --test-path=src {posargs:-vc}
84
- coverage html --ignore-errors
85
- coverage report --ignore-errors --show-missing --fail-under=99
86
-
87
- [coverage:run]
88
- branch = True
89
- source = zope.mimetype
90
-
91
- [coverage:report]
92
- precision = 2
93
- exclude_lines =
94
- pragma: no cover
95
- pragma: nocover
96
- except ImportError:
97
- raise NotImplementedError
98
- if __name__ == '__main__':
99
- self.fail
100
- raise AssertionError
101
-
102
- [coverage:html]
103
- directory = parts/htmlcov
80
+ coverage html
81
+ coverage report
@@ -1 +0,0 @@
1
- __import__('pkg_resources').declare_namespace(__name__) # pragma: no cover
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