marshmallow 4.1.0__tar.gz → 4.1.1__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 (92) hide show
  1. {marshmallow-4.1.0 → marshmallow-4.1.1}/CHANGELOG.rst +9 -2
  2. {marshmallow-4.1.0 → marshmallow-4.1.1}/PKG-INFO +1 -1
  3. {marshmallow-4.1.0 → marshmallow-4.1.1}/pyproject.toml +1 -1
  4. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/validate.py +2 -3
  5. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_validate.py +8 -0
  6. {marshmallow-4.1.0 → marshmallow-4.1.1}/CONTRIBUTING.rst +0 -0
  7. {marshmallow-4.1.0 → marshmallow-4.1.1}/LICENSE +0 -0
  8. {marshmallow-4.1.0 → marshmallow-4.1.1}/NOTICE +0 -0
  9. {marshmallow-4.1.0 → marshmallow-4.1.1}/README.rst +0 -0
  10. {marshmallow-4.1.0 → marshmallow-4.1.1}/SECURITY.md +0 -0
  11. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/.gitignore +0 -0
  12. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/_static/apple-touch-icon.png +0 -0
  13. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/_static/custom.css +0 -0
  14. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/_static/favicon.ico +0 -0
  15. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/_static/marshmallow-logo-200.png +0 -0
  16. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/_static/marshmallow-logo-with-title-for-dark-theme.png +0 -0
  17. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/_static/marshmallow-logo-with-title.png +0 -0
  18. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/_static/marshmallow-logo.png +0 -0
  19. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/api_reference.rst +0 -0
  20. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/authors.rst +0 -0
  21. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/changelog.rst +0 -0
  22. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/code_of_conduct.rst +0 -0
  23. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/conf.py +0 -0
  24. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/contributing.rst +0 -0
  25. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/custom_fields.rst +0 -0
  26. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/dashing.json +0 -0
  27. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/donate.rst +0 -0
  28. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/examples/index.rst +0 -0
  29. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/examples/inflection.rst +0 -0
  30. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/examples/quotes_api.rst +0 -0
  31. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/examples/validating_package_json.rst +0 -0
  32. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/extending/custom_error_handling.rst +0 -0
  33. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/extending/custom_error_messages.rst +0 -0
  34. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/extending/custom_options.rst +0 -0
  35. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/extending/index.rst +0 -0
  36. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/extending/overriding_attribute_access.rst +0 -0
  37. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/extending/pre_and_post_processing_methods.rst +0 -0
  38. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/extending/schema_validation.rst +0 -0
  39. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/extending/using_original_input_data.rst +0 -0
  40. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/index.rst +0 -0
  41. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/install.rst +0 -0
  42. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/kudos.rst +0 -0
  43. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/license.rst +0 -0
  44. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.class_registry.rst +0 -0
  45. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.decorators.rst +0 -0
  46. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.error_store.rst +0 -0
  47. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.exceptions.rst +0 -0
  48. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.experimental.context.rst +0 -0
  49. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.fields.rst +0 -0
  50. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.schema.rst +0 -0
  51. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.types.rst +0 -0
  52. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.utils.rst +0 -0
  53. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/marshmallow.validate.rst +0 -0
  54. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/nesting.rst +0 -0
  55. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/quickstart.rst +0 -0
  56. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/top_level.rst +0 -0
  57. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/upgrading.rst +0 -0
  58. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/whos_using.rst +0 -0
  59. {marshmallow-4.1.0 → marshmallow-4.1.1}/docs/why.rst +0 -0
  60. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/__init__.py +0 -0
  61. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/class_registry.py +0 -0
  62. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/constants.py +0 -0
  63. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/decorators.py +0 -0
  64. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/error_store.py +0 -0
  65. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/exceptions.py +0 -0
  66. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/experimental/__init__.py +0 -0
  67. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/experimental/context.py +0 -0
  68. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/fields.py +0 -0
  69. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/orderedset.py +0 -0
  70. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/py.typed +0 -0
  71. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/schema.py +0 -0
  72. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/types.py +0 -0
  73. {marshmallow-4.1.0 → marshmallow-4.1.1}/src/marshmallow/utils.py +0 -0
  74. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/__init__.py +0 -0
  75. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/base.py +0 -0
  76. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/conftest.py +0 -0
  77. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/foo_serializer.py +0 -0
  78. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/mypy_test_cases/test_class_registry.py +0 -0
  79. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/mypy_test_cases/test_schema.py +0 -0
  80. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/mypy_test_cases/test_validation_error.py +0 -0
  81. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_context.py +0 -0
  82. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_decorators.py +0 -0
  83. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_deserialization.py +0 -0
  84. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_error_store.py +0 -0
  85. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_exceptions.py +0 -0
  86. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_fields.py +0 -0
  87. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_options.py +0 -0
  88. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_registry.py +0 -0
  89. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_schema.py +0 -0
  90. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_serialization.py +0 -0
  91. {marshmallow-4.1.0 → marshmallow-4.1.1}/tests/test_utils.py +0 -0
  92. {marshmallow-4.1.0 → marshmallow-4.1.1}/tox.ini +0 -0
@@ -1,6 +1,14 @@
1
1
  Changelog
2
2
  ---------
3
3
 
4
+ 4.1.1 (2025-11-05)
5
+ ++++++++++++++++++
6
+
7
+ Bug fixes:
8
+
9
+ - Ensure ``URL`` validator is case-insensitive when using custom schemes (:pr:`2874`).
10
+ Thanks :user:`T90REAL` for the PR.
11
+
4
12
  4.1.0 (2025-11-01)
5
13
  ++++++++++++++++++
6
14
 
@@ -10,8 +18,7 @@ Other changes:
10
18
  `validate.Length <marshmallow.validate.Length>` (:pr:`2861`).
11
19
  Thanks :user:`agentgodzilla` for the PR.
12
20
  - Drop support for Python 3.9 (:pr:`2363`).
13
- - Test against Python 3.14.
14
-
21
+ - Test against Python 3.14 (:pr:`2864`).
15
22
 
16
23
  4.0.1 (2025-08-28)
17
24
  ++++++++++++++++++
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: marshmallow
3
- Version: 4.1.0
3
+ Version: 4.1.1
4
4
  Summary: A lightweight library for converting complex datatypes to and from native Python datatypes.
5
5
  Author-email: Steven Loria <oss@stevenloria.com>
6
6
  Maintainer-email: Steven Loria <oss@stevenloria.com>, Jérôme Lafréchoux <jerome@jolimont.fr>, Jared Deckard <jared@shademaps.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "marshmallow"
3
- version = "4.1.0"
3
+ version = "4.1.1"
4
4
  description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
5
5
  readme = "README.rst"
6
6
  license = { file = "LICENSE" }
@@ -187,7 +187,7 @@ class URL(Validator):
187
187
  self.relative = relative
188
188
  self.absolute = absolute
189
189
  self.error: str = error or self.default_message
190
- self.schemes = schemes or self.default_schemes
190
+ self.schemes = {s.lower() for s in schemes} if schemes else self.default_schemes
191
191
  self.require_tld = require_tld
192
192
 
193
193
  def _repr_args(self) -> str:
@@ -623,8 +623,7 @@ class OneOf(Validator):
623
623
  :param valuegetter: Can be a callable or a string. In the former case, it must
624
624
  be a one-argument callable which returns the value of a
625
625
  choice. In the latter case, the string specifies the name
626
- of an attribute of the choice objects. Defaults to `str()`
627
- or `str()`.
626
+ of an attribute of the choice objects. Defaults to `str()`.
628
627
  """
629
628
  valuegetter = valuegetter if callable(valuegetter) else attrgetter(valuegetter)
630
629
  pairs = zip_longest(self.choices, self.labels, fillvalue="")
@@ -205,6 +205,14 @@ def test_url_custom_scheme():
205
205
  assert validator(url) == url
206
206
 
207
207
 
208
+ def test_url_custom_scheme_case_insensitive():
209
+ validator = validate.URL(schemes={"HTTP"})
210
+ assert validator("http://example.com") == "http://example.com"
211
+
212
+ validator = validate.URL(schemes={"HtTp"})
213
+ assert validator("hTtP://example.com") == "hTtP://example.com"
214
+
215
+
208
216
  @pytest.mark.parametrize(
209
217
  "valid_url",
210
218
  (
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