msgspec-xml 0.1.0__tar.gz → 0.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 (27) hide show
  1. msgspec_xml-0.1.1/.pre-commit-config.yaml +94 -0
  2. msgspec_xml-0.1.1/PKG-INFO +93 -0
  3. msgspec_xml-0.1.1/README.md +66 -0
  4. msgspec_xml-0.1.1/msgspec_xml/__init__.py +6 -0
  5. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/msgspec_xml/decoder.py +2 -2
  6. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/pylock.toml +1 -14
  7. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/pyproject.toml +2 -2
  8. msgspec_xml-0.1.1/tests/resources/test-03.xml +7 -0
  9. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/tests/test_roundtrip.py +2 -3
  10. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/uv.lock +1 -14
  11. msgspec_xml-0.1.0/PKG-INFO +0 -27
  12. msgspec_xml-0.1.0/README.md +0 -1
  13. msgspec_xml-0.1.0/msgspec_xml/__init__.py +0 -5
  14. msgspec_xml-0.1.0/prek.toml +0 -52
  15. msgspec_xml-0.1.0/tests/resources/test-03.xml +0 -7
  16. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/.gitattributes +0 -0
  17. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/.gitignore +0 -0
  18. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/LICENSE +0 -0
  19. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/msgspec_xml/encoder.py +0 -0
  20. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/msgspec_xml/introspection.py +0 -0
  21. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/msgspec_xml/metadata.py +0 -0
  22. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/pdm.toml +0 -0
  23. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/renovate.json +0 -0
  24. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/tests/__init__.py +0 -0
  25. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/tests/resources/test-01.xml +0 -0
  26. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/tests/resources/test-02.xml +0 -0
  27. {msgspec_xml-0.1.0 → msgspec_xml-0.1.1}/tests/test_metadata.py +0 -0
@@ -0,0 +1,94 @@
1
+ repos:
2
+ - repo: local
3
+ hooks:
4
+ - id: toml-sort
5
+ args:
6
+ - "--in-place"
7
+ entry: toml-sort
8
+ exclude: "uv.lock|pylock.toml"
9
+ language: system
10
+ name: toml sort
11
+ types:
12
+ - toml
13
+ - id: mdformat
14
+ args:
15
+ - "--number"
16
+ - "--wrap=keep"
17
+ entry: mdformat
18
+ language: system
19
+ name: mdformat
20
+ types:
21
+ - markdown
22
+ - id: ruff-check
23
+ entry: ruff check .
24
+ language: system
25
+ name: ruff check
26
+ pass_filenames: false
27
+ types:
28
+ - python
29
+ - id: ruff-format
30
+ entry: ruff format .
31
+ language: system
32
+ name: ruff format
33
+ pass_filenames: false
34
+ types:
35
+ - python
36
+ - id: ty
37
+ entry: ty check .
38
+ language: system
39
+ name: ruff check
40
+ pass_filenames: false
41
+ types:
42
+ - python
43
+ - repo: "https://github.com/pre-commit/pre-commit-hooks"
44
+ rev: v6.0.0
45
+ hooks:
46
+ - id: check-ast
47
+ - id: check-builtin-literals
48
+ - id: check-docstring-first
49
+ - id: debug-statements
50
+ - id: forbid-submodules
51
+ - repo: builtin
52
+ hooks:
53
+ - id: check-added-large-files
54
+ args:
55
+ - "--enforce-all"
56
+ - id: check-case-conflict
57
+ # - id: check-executables-have-shebangs
58
+ # - id: check-illegal-windows-names
59
+ - id: check-json
60
+ # - id: check-json5
61
+ - id: check-merge-conflict
62
+ args:
63
+ - "--assume-in-merge"
64
+ - id: check-shebang-scripts-are-executable
65
+ # - id: check-symlinks
66
+ - id: check-toml
67
+ - id: check-vcs-permalinks
68
+ - id: check-xml
69
+ - id: check-yaml
70
+ args:
71
+ - "--allow-multiple-documents"
72
+ - id: destroyed-symlinks
73
+ - id: detect-private-key
74
+ - id: end-of-file-fixer
75
+ exclude_types:
76
+ - json
77
+ - svg
78
+ - xml
79
+ - id: fix-byte-order-marker
80
+ - id: mixed-line-ending
81
+ args:
82
+ - "--fix=auto"
83
+ - id: pretty-format-json
84
+ args:
85
+ - "--autofix"
86
+ - "--indent=2"
87
+ - "--no-ensure-ascii"
88
+ - id: trailing-whitespace
89
+ args:
90
+ - "--markdown-linebreak-ext=md"
91
+ - repo: meta
92
+ hooks:
93
+ - id: check-hooks-apply
94
+ - id: check-useless-excludes
@@ -0,0 +1,93 @@
1
+ Metadata-Version: 2.4
2
+ Name: msgspec-xml
3
+ Version: 0.1.1
4
+ Summary: XML Serialization/Deserialization using msgspec
5
+ Project-URL: Homepage, https://pypi.org/project/msgspec-xml
6
+ Project-URL: Issues, https://codefloe.com/buriedincode/msgspec-xml/issues
7
+ Project-URL: Source, https://codefloe.com/buriedincode/msgspec-xml
8
+ Author-email: BuriedInCode <buriedincode@duckpond.nz>
9
+ Maintainer-email: BuriedInCode <buriedincode@duckpond.nz>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Natural Language :: English
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.10
25
+ Requires-Dist: msgspec>=0.21.0
26
+ Description-Content-Type: text/markdown
27
+
28
+ # msgspec-xml
29
+
30
+ [![PyPI - Python](https://img.shields.io/pypi/pyversions/msgspec-xml.svg?logo=Python&label=Python&style=flat-square)](https://pypi.org/p/msgspec-xml/)
31
+ [![PyPI - Status](https://img.shields.io/pypi/status/msgspec-xml.svg?logo=Python&label=Status&style=flat-square)](https://pypi.org/p/msgspec-xml/)
32
+ [![PyPI - Version](https://img.shields.io/pypi/v/msgspec-xml.svg?logo=Python&label=Version&style=flat-square)](https://pypi.org/p/msgspec-xml/)
33
+ [![PyPI - License](https://img.shields.io/pypi/l/msgspec-xml.svg?logo=Python&label=License&style=flat-square)](https://opensource.org/licenses/MIT)
34
+
35
+ [![prek](https://img.shields.io/badge/prek-enabled-informational?logo=prek&style=flat-square)](https://github.com/j178/prek)
36
+ [![Ruff](https://img.shields.io/badge/Ruff-enabled-informational?logo=ruff&style=flat-square)](https://github.com/astral-sh/ruff)
37
+ [![ty](https://img.shields.io/badge/ty-enabled-informational?logo=ruff&style=flat-square)](https://github.com/astral-sh/ty)
38
+
39
+ [![status-badge](https://ci.codefloe.com/api/v1/badges/1329/status.svg)](https://ci.codefloe.com/repos/1329)
40
+
41
+ XML Serialization/Deserialization using [msgspec](https://github.com/msgspec/msgspec).
42
+
43
+ ## Installation
44
+
45
+ ```sh
46
+ pdm add msgspec-xml
47
+ ```
48
+
49
+ ## Usage
50
+
51
+ ```python
52
+ from decimal import Decimal
53
+ from typing import Annotated
54
+
55
+ from msgspec import Struct
56
+ from msgspec_xml import XML, decode, encode
57
+
58
+
59
+ class Price(Struct):
60
+ currency: Annotated[str, XML(attr=True)]
61
+ cost: Annotated[Decimal, XML(text=True)]
62
+
63
+
64
+ class Book(Struct, rename="pascal"):
65
+ title: str
66
+ prices: Annotated[list[Price], XML(wrapper="Prices", tag="Price")]
67
+
68
+
69
+ book = Book(
70
+ title="Example Book",
71
+ prices=[
72
+ Price(currency="USD", cost=Decimal("3.99")),
73
+ Price(currency="GBP", cost=Decimal("1.51")),
74
+ ],
75
+ )
76
+
77
+ xml = encode(book)
78
+ # <Book>
79
+ # <Title>Example Book</Title>
80
+ # <Prices>
81
+ # <Price currency="USD">3.99</Price>
82
+ # <Price currency="GBP">1.51</Price>
83
+ # </Prices>
84
+ # </Book>
85
+
86
+ decoded = decode(xml, type_=Book)
87
+
88
+ assert decoded == book
89
+ ```
90
+
91
+ ## Socials
92
+
93
+ [![Social - Matrix](https://img.shields.io/matrix/The-Dev-Environment:matrix.org?label=The-Dev-Environment&logo=matrix&style=for-the-badge)](https://matrix.to/#/#The-Dev-Environment:matrix.org)
@@ -0,0 +1,66 @@
1
+ # msgspec-xml
2
+
3
+ [![PyPI - Python](https://img.shields.io/pypi/pyversions/msgspec-xml.svg?logo=Python&label=Python&style=flat-square)](https://pypi.org/p/msgspec-xml/)
4
+ [![PyPI - Status](https://img.shields.io/pypi/status/msgspec-xml.svg?logo=Python&label=Status&style=flat-square)](https://pypi.org/p/msgspec-xml/)
5
+ [![PyPI - Version](https://img.shields.io/pypi/v/msgspec-xml.svg?logo=Python&label=Version&style=flat-square)](https://pypi.org/p/msgspec-xml/)
6
+ [![PyPI - License](https://img.shields.io/pypi/l/msgspec-xml.svg?logo=Python&label=License&style=flat-square)](https://opensource.org/licenses/MIT)
7
+
8
+ [![prek](https://img.shields.io/badge/prek-enabled-informational?logo=prek&style=flat-square)](https://github.com/j178/prek)
9
+ [![Ruff](https://img.shields.io/badge/Ruff-enabled-informational?logo=ruff&style=flat-square)](https://github.com/astral-sh/ruff)
10
+ [![ty](https://img.shields.io/badge/ty-enabled-informational?logo=ruff&style=flat-square)](https://github.com/astral-sh/ty)
11
+
12
+ [![status-badge](https://ci.codefloe.com/api/v1/badges/1329/status.svg)](https://ci.codefloe.com/repos/1329)
13
+
14
+ XML Serialization/Deserialization using [msgspec](https://github.com/msgspec/msgspec).
15
+
16
+ ## Installation
17
+
18
+ ```sh
19
+ pdm add msgspec-xml
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ ```python
25
+ from decimal import Decimal
26
+ from typing import Annotated
27
+
28
+ from msgspec import Struct
29
+ from msgspec_xml import XML, decode, encode
30
+
31
+
32
+ class Price(Struct):
33
+ currency: Annotated[str, XML(attr=True)]
34
+ cost: Annotated[Decimal, XML(text=True)]
35
+
36
+
37
+ class Book(Struct, rename="pascal"):
38
+ title: str
39
+ prices: Annotated[list[Price], XML(wrapper="Prices", tag="Price")]
40
+
41
+
42
+ book = Book(
43
+ title="Example Book",
44
+ prices=[
45
+ Price(currency="USD", cost=Decimal("3.99")),
46
+ Price(currency="GBP", cost=Decimal("1.51")),
47
+ ],
48
+ )
49
+
50
+ xml = encode(book)
51
+ # <Book>
52
+ # <Title>Example Book</Title>
53
+ # <Prices>
54
+ # <Price currency="USD">3.99</Price>
55
+ # <Price currency="GBP">1.51</Price>
56
+ # </Prices>
57
+ # </Book>
58
+
59
+ decoded = decode(xml, type_=Book)
60
+
61
+ assert decoded == book
62
+ ```
63
+
64
+ ## Socials
65
+
66
+ [![Social - Matrix](https://img.shields.io/matrix/The-Dev-Environment:matrix.org?label=The-Dev-Environment&logo=matrix&style=for-the-badge)](https://matrix.to/#/#The-Dev-Environment:matrix.org)
@@ -0,0 +1,6 @@
1
+ __all__ = ["XML", "Decoder", "Encoder", "decode", "encode"]
2
+ __version__ = "0.1.1"
3
+
4
+ from msgspec_xml.decoder import Decoder, decode
5
+ from msgspec_xml.encoder import Encoder, encode
6
+ from msgspec_xml.metadata import XML
@@ -1,9 +1,9 @@
1
1
  __all__ = ["Decoder", "decode"]
2
2
 
3
3
  from typing import Any, Generic, TypeVar
4
+ from xml.etree import ElementTree as ET
4
5
  from xml.etree.ElementTree import Element
5
6
 
6
- from defusedxml import ElementTree
7
7
  from msgspec import Struct, convert
8
8
  from msgspec.structs import FieldInfo, fields
9
9
 
@@ -24,7 +24,7 @@ class Decoder(Generic[T]):
24
24
  self._type = type_
25
25
 
26
26
  def decode(self, xml: str | bytes) -> T:
27
- root = ElementTree.fromstring(xml)
27
+ root = ET.fromstring(xml) # noqa: S314
28
28
  data = _decode_struct(element=root, cls=self._type)
29
29
  return convert(data, type=self._type, strict=False)
30
30
 
@@ -10,19 +10,6 @@ dependency-groups = ["default", "dev", "tests"]
10
10
  default-groups = ["default"]
11
11
  created-by = "pdm"
12
12
 
13
- [[packages]]
14
- name = "defusedxml"
15
- version = "0.7.1"
16
- requires-python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
17
- sdist = {name = "defusedxml-0.7.1.tar.gz", url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hashes = {sha256 = "1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}}
18
- wheels = [
19
- {name = "defusedxml-0.7.1-py2.py3-none-any.whl",url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl",hashes = {sha256 = "a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}},
20
- ]
21
- marker = "\"default\" in dependency_groups"
22
-
23
- [packages.tool.pdm]
24
- dependencies = []
25
-
26
13
  [[packages]]
27
14
  name = "mdformat"
28
15
  version = "1.0.0"
@@ -799,7 +786,7 @@ marker = "\"dev\" in dependency_groups"
799
786
  dependencies = []
800
787
 
801
788
  [tool.pdm]
802
- hashes = {sha256 = "4bf52325aa1c16a0f4755091ffe79d7f649b241ba9c748cf9c080d6776a5a63a"}
789
+ hashes = {sha256 = "815d89e2e3aa5f1282e8527c240a525ef5cfaef0561f0cca42fbf87c721620a0"}
803
790
  strategy = ["inherit_metadata", "static_urls"]
804
791
 
805
792
  [[tool.pdm.targets]]
@@ -38,10 +38,9 @@ classifiers = [
38
38
  "Typing :: Typed",
39
39
  ]
40
40
  dependencies = [
41
- "defusedxml >= 0.7.0",
42
41
  "msgspec >= 0.21.0",
43
42
  ]
44
- description = ""
43
+ description = "XML Serialization/Deserialization using msgspec"
45
44
  dynamic = ["version"]
46
45
  keywords = []
47
46
  license = "MIT"
@@ -54,6 +53,7 @@ readme = "README.md"
54
53
  requires-python = ">= 3.10"
55
54
 
56
55
  [project.urls]
56
+ Homepage = "https://pypi.org/project/msgspec-xml"
57
57
  Issues = "https://codefloe.com/buriedincode/msgspec-xml/issues"
58
58
  Source = "https://codefloe.com/buriedincode/msgspec-xml"
59
59
 
@@ -0,0 +1,7 @@
1
+ <Product>
2
+ <Name>Book</Name>
3
+ <Prices>
4
+ <Price currency="USD">3.99</Price>
5
+ <Price currency="GBP">1.51</Price>
6
+ </Prices>
7
+ </Product>
@@ -5,8 +5,7 @@ from typing import Annotated
5
5
  import pytest
6
6
  from msgspec import Struct
7
7
 
8
- from msgspec_xml import Decoder, Encoder, decode, encode
9
- from msgspec_xml.metadata import XML
8
+ from msgspec_xml import XML, Decoder, Encoder, decode, encode
10
9
 
11
10
  RESOURCE_DIR = Path(__file__).parent / "resources"
12
11
 
@@ -21,7 +20,7 @@ class Greetings(Struct):
21
20
 
22
21
 
23
22
  class Price(Struct):
24
- country: Annotated[str, XML(attr=True)]
23
+ currency: Annotated[str, XML(attr=True)]
25
24
  cost: Annotated[Decimal, XML(text=True)]
26
25
 
27
26
 
@@ -123,15 +123,6 @@ toml = [
123
123
  { name = "tomli", marker = "python_full_version <= '3.11'" },
124
124
  ]
125
125
 
126
- [[package]]
127
- name = "defusedxml"
128
- version = "0.7.1"
129
- source = { registry = "https://pypi.org/simple" }
130
- sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" }
131
- wheels = [
132
- { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" },
133
- ]
134
-
135
126
  [[package]]
136
127
  name = "distlib"
137
128
  version = "0.4.3"
@@ -304,7 +295,6 @@ wheels = [
304
295
  name = "msgspec-xml"
305
296
  source = { editable = "." }
306
297
  dependencies = [
307
- { name = "defusedxml" },
308
298
  { name = "msgspec" },
309
299
  ]
310
300
 
@@ -326,10 +316,7 @@ tests = [
326
316
  ]
327
317
 
328
318
  [package.metadata]
329
- requires-dist = [
330
- { name = "defusedxml", specifier = ">=0.7.0" },
331
- { name = "msgspec", specifier = ">=0.21.0" },
332
- ]
319
+ requires-dist = [{ name = "msgspec", specifier = ">=0.21.0" }]
333
320
 
334
321
  [package.metadata.requires-dev]
335
322
  dev = [
@@ -1,27 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: msgspec-xml
3
- Version: 0.1.0
4
- Project-URL: Issues, https://codefloe.com/buriedincode/msgspec-xml/issues
5
- Project-URL: Source, https://codefloe.com/buriedincode/msgspec-xml
6
- Author-email: BuriedInCode <buriedincode@duckpond.nz>
7
- Maintainer-email: BuriedInCode <buriedincode@duckpond.nz>
8
- License-Expression: MIT
9
- License-File: LICENSE
10
- Classifier: Development Status :: 4 - Beta
11
- Classifier: Environment :: Console
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Natural Language :: English
14
- Classifier: Operating System :: OS Independent
15
- Classifier: Programming Language :: Python
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3.12
19
- Classifier: Programming Language :: Python :: 3.13
20
- Classifier: Programming Language :: Python :: 3.14
21
- Classifier: Typing :: Typed
22
- Requires-Python: >=3.10
23
- Requires-Dist: defusedxml>=0.7.0
24
- Requires-Dist: msgspec>=0.21.0
25
- Description-Content-Type: text/markdown
26
-
27
- # msgspec-xml
@@ -1 +0,0 @@
1
- # msgspec-xml
@@ -1,5 +0,0 @@
1
- __all__ = ["Decoder", "Encoder", "decode", "encode"]
2
- __version__ = "0.1.0"
3
-
4
- from msgspec_xml.decoder import Decoder, decode
5
- from msgspec_xml.encoder import Encoder, encode
@@ -1,52 +0,0 @@
1
- [[repos]]
2
- hooks = [
3
- {args = ["--all", "--ignore-case", "--in-place", "--trailing-comma-inline-array"], entry = "toml-sort", exclude = ".*.lock|pylock.toml", id = "toml-sort", language = "system", name = "toml sort", types = ["toml"]},
4
- {args = ["--number", "--wrap=keep"], entry = "mdformat", id = "mdformat", language = "system", name = "mdformat", types = ["markdown"]},
5
- {entry = "ruff check .", id = "ruff-check", language = "system", name = "ruff check", pass_filenames = false, types = ["python"]},
6
- {entry = "ruff format .", id = "ruff-format", language = "system", name = "ruff format", pass_filenames = false, types = ["python"]},
7
- {entry = "ty check .", id = "ty", language = "system", name = "ty", pass_filenames = false, types = ["python"]},
8
- ]
9
- repo = "local"
10
-
11
- [[repos]]
12
- hooks = [
13
- {id = "check-ast"},
14
- {id = "check-builtin-literals"},
15
- {id = "check-docstring-first"},
16
- {id = "debug-statements"},
17
- {id = "forbid-submodules"},
18
- ]
19
- repo = "https://github.com/pre-commit/pre-commit-hooks"
20
- rev = "v6.0.0"
21
-
22
- [[repos]]
23
- hooks = [
24
- {args = ["--allow-multiple-documents"], id = "check-yaml"},
25
- {args = ["--assume-in-merge"], id = "check-merge-conflict"},
26
- {args = ["--autofix", "--indent=2", "--no-ensure-ascii"], id = "pretty-format-json"},
27
- {args = ["--markdown-linebreak-ext=md"], id = "trailing-whitespace"},
28
- {exclude_types = ["json", "svg", "xml"], id = "end-of-file-fixer"},
29
- {id = "check-added-large-files"},
30
- {id = "check-case-conflict"},
31
- # {id = "check-executables-have-shebangs"},
32
- # {id = "check-illegal-windows-names"},
33
- {id = "check-json"},
34
- # {id = "check-json5"},
35
- {id = "check-shebang-scripts-are-executable"},
36
- # {id = "check-symlinks"},
37
- {id = "check-toml"},
38
- {id = "check-vcs-permalinks"},
39
- {id = "check-xml"},
40
- {id = "destroyed-symlinks"},
41
- {id = "detect-private-key"},
42
- {id = "fix-byte-order-marker"},
43
- {id = "mixed-line-ending"},
44
- ]
45
- repo = "builtin"
46
-
47
- [[repos]]
48
- hooks = [
49
- {id = "check-hooks-apply"},
50
- {id = "check-useless-excludes"},
51
- ]
52
- repo = "meta"
@@ -1,7 +0,0 @@
1
- <Product>
2
- <Name>Book</Name>
3
- <Prices>
4
- <Price country="US">3.99</Price>
5
- <Price country="GB">1.51</Price>
6
- </Prices>
7
- </Product>
File without changes
File without changes
File without changes
File without changes
File without changes