plain 0.30.0__tar.gz → 0.32.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 (152) hide show
  1. {plain-0.30.0 → plain-0.32.0}/PKG-INFO +1 -1
  2. {plain-0.30.0 → plain-0.32.0}/plain/forms/fields.py +0 -11
  3. {plain-0.30.0 → plain-0.32.0}/plain/urls/patterns.py +0 -2
  4. {plain-0.30.0 → plain-0.32.0}/plain/validators.py +0 -15
  5. {plain-0.30.0 → plain-0.32.0}/pyproject.toml +1 -1
  6. {plain-0.30.0 → plain-0.32.0}/.gitignore +0 -0
  7. {plain-0.30.0 → plain-0.32.0}/LICENSE +0 -0
  8. {plain-0.30.0 → plain-0.32.0}/README.md +0 -0
  9. {plain-0.30.0 → plain-0.32.0}/plain/README.md +0 -0
  10. {plain-0.30.0 → plain-0.32.0}/plain/__main__.py +0 -0
  11. {plain-0.30.0 → plain-0.32.0}/plain/assets/README.md +0 -0
  12. {plain-0.30.0 → plain-0.32.0}/plain/assets/__init__.py +0 -0
  13. {plain-0.30.0 → plain-0.32.0}/plain/assets/compile.py +0 -0
  14. {plain-0.30.0 → plain-0.32.0}/plain/assets/finders.py +0 -0
  15. {plain-0.30.0 → plain-0.32.0}/plain/assets/fingerprints.py +0 -0
  16. {plain-0.30.0 → plain-0.32.0}/plain/assets/urls.py +0 -0
  17. {plain-0.30.0 → plain-0.32.0}/plain/assets/views.py +0 -0
  18. {plain-0.30.0 → plain-0.32.0}/plain/cli/README.md +0 -0
  19. {plain-0.30.0 → plain-0.32.0}/plain/cli/__init__.py +0 -0
  20. {plain-0.30.0 → plain-0.32.0}/plain/cli/core.py +0 -0
  21. {plain-0.30.0 → plain-0.32.0}/plain/cli/formatting.py +0 -0
  22. {plain-0.30.0 → plain-0.32.0}/plain/cli/print.py +0 -0
  23. {plain-0.30.0 → plain-0.32.0}/plain/cli/registry.py +0 -0
  24. {plain-0.30.0 → plain-0.32.0}/plain/cli/startup.py +0 -0
  25. {plain-0.30.0 → plain-0.32.0}/plain/csrf/README.md +0 -0
  26. {plain-0.30.0 → plain-0.32.0}/plain/csrf/middleware.py +0 -0
  27. {plain-0.30.0 → plain-0.32.0}/plain/csrf/views.py +0 -0
  28. {plain-0.30.0 → plain-0.32.0}/plain/debug.py +0 -0
  29. {plain-0.30.0 → plain-0.32.0}/plain/exceptions.py +0 -0
  30. {plain-0.30.0 → plain-0.32.0}/plain/forms/README.md +0 -0
  31. {plain-0.30.0 → plain-0.32.0}/plain/forms/__init__.py +0 -0
  32. {plain-0.30.0 → plain-0.32.0}/plain/forms/boundfield.py +0 -0
  33. {plain-0.30.0 → plain-0.32.0}/plain/forms/exceptions.py +0 -0
  34. {plain-0.30.0 → plain-0.32.0}/plain/forms/forms.py +0 -0
  35. {plain-0.30.0 → plain-0.32.0}/plain/http/README.md +0 -0
  36. {plain-0.30.0 → plain-0.32.0}/plain/http/__init__.py +0 -0
  37. {plain-0.30.0 → plain-0.32.0}/plain/http/cookie.py +0 -0
  38. {plain-0.30.0 → plain-0.32.0}/plain/http/multipartparser.py +0 -0
  39. {plain-0.30.0 → plain-0.32.0}/plain/http/request.py +0 -0
  40. {plain-0.30.0 → plain-0.32.0}/plain/http/response.py +0 -0
  41. {plain-0.30.0 → plain-0.32.0}/plain/internal/__init__.py +0 -0
  42. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/README.md +0 -0
  43. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/__init__.py +0 -0
  44. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/base.py +0 -0
  45. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/locks.py +0 -0
  46. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/move.py +0 -0
  47. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/temp.py +0 -0
  48. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/uploadedfile.py +0 -0
  49. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/uploadhandler.py +0 -0
  50. {plain-0.30.0 → plain-0.32.0}/plain/internal/files/utils.py +0 -0
  51. {plain-0.30.0 → plain-0.32.0}/plain/internal/handlers/__init__.py +0 -0
  52. {plain-0.30.0 → plain-0.32.0}/plain/internal/handlers/base.py +0 -0
  53. {plain-0.30.0 → plain-0.32.0}/plain/internal/handlers/exception.py +0 -0
  54. {plain-0.30.0 → plain-0.32.0}/plain/internal/handlers/wsgi.py +0 -0
  55. {plain-0.30.0 → plain-0.32.0}/plain/internal/middleware/__init__.py +0 -0
  56. {plain-0.30.0 → plain-0.32.0}/plain/internal/middleware/headers.py +0 -0
  57. {plain-0.30.0 → plain-0.32.0}/plain/internal/middleware/https.py +0 -0
  58. {plain-0.30.0 → plain-0.32.0}/plain/internal/middleware/slash.py +0 -0
  59. {plain-0.30.0 → plain-0.32.0}/plain/json.py +0 -0
  60. {plain-0.30.0 → plain-0.32.0}/plain/logs/README.md +0 -0
  61. {plain-0.30.0 → plain-0.32.0}/plain/logs/__init__.py +0 -0
  62. {plain-0.30.0 → plain-0.32.0}/plain/logs/configure.py +0 -0
  63. {plain-0.30.0 → plain-0.32.0}/plain/logs/loggers.py +0 -0
  64. {plain-0.30.0 → plain-0.32.0}/plain/logs/utils.py +0 -0
  65. {plain-0.30.0 → plain-0.32.0}/plain/packages/README.md +0 -0
  66. {plain-0.30.0 → plain-0.32.0}/plain/packages/__init__.py +0 -0
  67. {plain-0.30.0 → plain-0.32.0}/plain/packages/config.py +0 -0
  68. {plain-0.30.0 → plain-0.32.0}/plain/packages/registry.py +0 -0
  69. {plain-0.30.0 → plain-0.32.0}/plain/paginator.py +0 -0
  70. {plain-0.30.0 → plain-0.32.0}/plain/preflight/README.md +0 -0
  71. {plain-0.30.0 → plain-0.32.0}/plain/preflight/__init__.py +0 -0
  72. {plain-0.30.0 → plain-0.32.0}/plain/preflight/files.py +0 -0
  73. {plain-0.30.0 → plain-0.32.0}/plain/preflight/messages.py +0 -0
  74. {plain-0.30.0 → plain-0.32.0}/plain/preflight/registry.py +0 -0
  75. {plain-0.30.0 → plain-0.32.0}/plain/preflight/security.py +0 -0
  76. {plain-0.30.0 → plain-0.32.0}/plain/preflight/urls.py +0 -0
  77. {plain-0.30.0 → plain-0.32.0}/plain/runtime/README.md +0 -0
  78. {plain-0.30.0 → plain-0.32.0}/plain/runtime/__init__.py +0 -0
  79. {plain-0.30.0 → plain-0.32.0}/plain/runtime/global_settings.py +0 -0
  80. {plain-0.30.0 → plain-0.32.0}/plain/runtime/user_settings.py +0 -0
  81. {plain-0.30.0 → plain-0.32.0}/plain/signals/README.md +0 -0
  82. {plain-0.30.0 → plain-0.32.0}/plain/signals/__init__.py +0 -0
  83. {plain-0.30.0 → plain-0.32.0}/plain/signals/dispatch/__init__.py +0 -0
  84. {plain-0.30.0 → plain-0.32.0}/plain/signals/dispatch/dispatcher.py +0 -0
  85. {plain-0.30.0 → plain-0.32.0}/plain/signals/dispatch/license.txt +0 -0
  86. {plain-0.30.0 → plain-0.32.0}/plain/signing.py +0 -0
  87. {plain-0.30.0 → plain-0.32.0}/plain/templates/README.md +0 -0
  88. {plain-0.30.0 → plain-0.32.0}/plain/templates/__init__.py +0 -0
  89. {plain-0.30.0 → plain-0.32.0}/plain/templates/core.py +0 -0
  90. {plain-0.30.0 → plain-0.32.0}/plain/templates/jinja/README.md +0 -0
  91. {plain-0.30.0 → plain-0.32.0}/plain/templates/jinja/__init__.py +0 -0
  92. {plain-0.30.0 → plain-0.32.0}/plain/templates/jinja/environments.py +0 -0
  93. {plain-0.30.0 → plain-0.32.0}/plain/templates/jinja/extensions.py +0 -0
  94. {plain-0.30.0 → plain-0.32.0}/plain/templates/jinja/filters.py +0 -0
  95. {plain-0.30.0 → plain-0.32.0}/plain/templates/jinja/globals.py +0 -0
  96. {plain-0.30.0 → plain-0.32.0}/plain/test/README.md +0 -0
  97. {plain-0.30.0 → plain-0.32.0}/plain/test/__init__.py +0 -0
  98. {plain-0.30.0 → plain-0.32.0}/plain/test/client.py +0 -0
  99. {plain-0.30.0 → plain-0.32.0}/plain/urls/README.md +0 -0
  100. {plain-0.30.0 → plain-0.32.0}/plain/urls/__init__.py +0 -0
  101. {plain-0.30.0 → plain-0.32.0}/plain/urls/converters.py +0 -0
  102. {plain-0.30.0 → plain-0.32.0}/plain/urls/exceptions.py +0 -0
  103. {plain-0.30.0 → plain-0.32.0}/plain/urls/resolvers.py +0 -0
  104. {plain-0.30.0 → plain-0.32.0}/plain/urls/routers.py +0 -0
  105. {plain-0.30.0 → plain-0.32.0}/plain/urls/utils.py +0 -0
  106. {plain-0.30.0 → plain-0.32.0}/plain/utils/README.md +0 -0
  107. {plain-0.30.0 → plain-0.32.0}/plain/utils/__init__.py +0 -0
  108. {plain-0.30.0 → plain-0.32.0}/plain/utils/cache.py +0 -0
  109. {plain-0.30.0 → plain-0.32.0}/plain/utils/connection.py +0 -0
  110. {plain-0.30.0 → plain-0.32.0}/plain/utils/crypto.py +0 -0
  111. {plain-0.30.0 → plain-0.32.0}/plain/utils/datastructures.py +0 -0
  112. {plain-0.30.0 → plain-0.32.0}/plain/utils/dateparse.py +0 -0
  113. {plain-0.30.0 → plain-0.32.0}/plain/utils/deconstruct.py +0 -0
  114. {plain-0.30.0 → plain-0.32.0}/plain/utils/decorators.py +0 -0
  115. {plain-0.30.0 → plain-0.32.0}/plain/utils/duration.py +0 -0
  116. {plain-0.30.0 → plain-0.32.0}/plain/utils/encoding.py +0 -0
  117. {plain-0.30.0 → plain-0.32.0}/plain/utils/functional.py +0 -0
  118. {plain-0.30.0 → plain-0.32.0}/plain/utils/hashable.py +0 -0
  119. {plain-0.30.0 → plain-0.32.0}/plain/utils/html.py +0 -0
  120. {plain-0.30.0 → plain-0.32.0}/plain/utils/http.py +0 -0
  121. {plain-0.30.0 → plain-0.32.0}/plain/utils/inspect.py +0 -0
  122. {plain-0.30.0 → plain-0.32.0}/plain/utils/ipv6.py +0 -0
  123. {plain-0.30.0 → plain-0.32.0}/plain/utils/itercompat.py +0 -0
  124. {plain-0.30.0 → plain-0.32.0}/plain/utils/module_loading.py +0 -0
  125. {plain-0.30.0 → plain-0.32.0}/plain/utils/regex_helper.py +0 -0
  126. {plain-0.30.0 → plain-0.32.0}/plain/utils/safestring.py +0 -0
  127. {plain-0.30.0 → plain-0.32.0}/plain/utils/text.py +0 -0
  128. {plain-0.30.0 → plain-0.32.0}/plain/utils/timesince.py +0 -0
  129. {plain-0.30.0 → plain-0.32.0}/plain/utils/timezone.py +0 -0
  130. {plain-0.30.0 → plain-0.32.0}/plain/utils/tree.py +0 -0
  131. {plain-0.30.0 → plain-0.32.0}/plain/views/README.md +0 -0
  132. {plain-0.30.0 → plain-0.32.0}/plain/views/__init__.py +0 -0
  133. {plain-0.30.0 → plain-0.32.0}/plain/views/base.py +0 -0
  134. {plain-0.30.0 → plain-0.32.0}/plain/views/csrf.py +0 -0
  135. {plain-0.30.0 → plain-0.32.0}/plain/views/errors.py +0 -0
  136. {plain-0.30.0 → plain-0.32.0}/plain/views/exceptions.py +0 -0
  137. {plain-0.30.0 → plain-0.32.0}/plain/views/forms.py +0 -0
  138. {plain-0.30.0 → plain-0.32.0}/plain/views/objects.py +0 -0
  139. {plain-0.30.0 → plain-0.32.0}/plain/views/redirect.py +0 -0
  140. {plain-0.30.0 → plain-0.32.0}/plain/views/templates.py +0 -0
  141. {plain-0.30.0 → plain-0.32.0}/plain/wsgi.py +0 -0
  142. {plain-0.30.0 → plain-0.32.0}/tests/.bolt/assets_collected/assets.json +0 -0
  143. {plain-0.30.0 → plain-0.32.0}/tests/.gitignore +0 -0
  144. {plain-0.30.0 → plain-0.32.0}/tests/app/.gitignore +0 -0
  145. {plain-0.30.0 → plain-0.32.0}/tests/app/settings.py +0 -0
  146. {plain-0.30.0 → plain-0.32.0}/tests/app/test/__init__.py +0 -0
  147. {plain-0.30.0 → plain-0.32.0}/tests/app/test/default_settings.py +0 -0
  148. {plain-0.30.0 → plain-0.32.0}/tests/app/urls.py +0 -0
  149. {plain-0.30.0 → plain-0.32.0}/tests/conftest.py +0 -0
  150. {plain-0.30.0 → plain-0.32.0}/tests/test_cli.py +0 -0
  151. {plain-0.30.0 → plain-0.32.0}/tests/test_runtime.py +0 -0
  152. {plain-0.30.0 → plain-0.32.0}/tests/test_wsgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plain
3
- Version: 0.30.0
3
+ Version: 0.32.0
4
4
  Summary: A web framework for building products with Python.
5
5
  Author-email: Dave Gaeddert <dave.gaeddert@dropseed.dev>
6
6
  License-File: LICENSE
@@ -43,7 +43,6 @@ __all__ = (
43
43
  "FloatField",
44
44
  "DecimalField",
45
45
  "JSONField",
46
- "SlugField",
47
46
  "TypedChoiceField",
48
47
  "UUIDField",
49
48
  )
@@ -900,16 +899,6 @@ class MultipleChoiceField(ChoiceField):
900
899
  return data.getlist(html_name)
901
900
 
902
901
 
903
- class SlugField(CharField):
904
- default_validators = [validators.validate_slug]
905
-
906
- def __init__(self, *, allow_unicode=False, **kwargs):
907
- self.allow_unicode = allow_unicode
908
- if self.allow_unicode:
909
- self.default_validators = [validators.validate_unicode_slug]
910
- super().__init__(**kwargs)
911
-
912
-
913
902
  class UUIDField(CharField):
914
903
  default_error_messages = {
915
904
  "invalid": "Enter a valid UUID.",
@@ -48,7 +48,6 @@ class CheckURLMixin:
48
48
  class RegexPattern(CheckURLMixin):
49
49
  def __init__(self, regex, name=None, is_endpoint=False):
50
50
  self._regex = regex
51
- self._regex_dict = {}
52
51
  self._is_endpoint = is_endpoint
53
52
  self.name = name
54
53
  self.converters = {}
@@ -157,7 +156,6 @@ def _route_to_regex(route, is_endpoint=False):
157
156
  class RoutePattern(CheckURLMixin):
158
157
  def __init__(self, route, name=None, is_endpoint=False):
159
158
  self._route = route
160
- self._regex_dict = {}
161
159
  self._is_endpoint = is_endpoint
162
160
  self.name = name
163
161
  self.converters = _route_to_regex(str(route), is_endpoint)[1]
@@ -237,21 +237,6 @@ class EmailValidator:
237
237
 
238
238
  validate_email = EmailValidator()
239
239
 
240
- slug_re = _lazy_re_compile(r"^[-a-zA-Z0-9_]+\Z")
241
- validate_slug = RegexValidator(
242
- slug_re,
243
- # Translators: "letters" means latin letters: a-z and A-Z.
244
- "Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
245
- "invalid",
246
- )
247
-
248
- slug_unicode_re = _lazy_re_compile(r"^[-\w]+\Z")
249
- validate_unicode_slug = RegexValidator(
250
- slug_unicode_re,
251
- "Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or hyphens."
252
- "invalid",
253
- )
254
-
255
240
 
256
241
  def validate_ipv4_address(value):
257
242
  try:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plain"
3
- version = "0.30.0"
3
+ version = "0.32.0"
4
4
  description = "A web framework for building products with Python."
5
5
  authors = [{name = "Dave Gaeddert", email = "dave.gaeddert@dropseed.dev"}]
6
6
  readme = "README.md"
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
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
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
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
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
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
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