Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-xmlschema for
openSUSE:Factory checked in at 2023-05-24 20:21:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-xmlschema (Old)
and /work/SRC/openSUSE:Factory/.python-xmlschema.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-xmlschema"
Wed May 24 20:21:40 2023 rev:23 rq:1088468 version:2.3.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-xmlschema/python-xmlschema.changes
2023-04-22 21:58:50.064633165 +0200
+++
/work/SRC/openSUSE:Factory/.python-xmlschema.new.1533/python-xmlschema.changes
2023-05-24 20:21:48.907983745 +0200
@@ -1,0 +2,7 @@
+Mon May 22 21:24:38 UTC 2023 - Dirk Müller <[email protected]>
+
+- update to 2.3.0:
+ * Improve sequence/all restriction checks for XSD 1.1
+ * Add *schema* argument to `Wsdl11Document`
+
+-------------------------------------------------------------------
Old:
----
xmlschema-2.2.3.tar.gz
New:
----
xmlschema-2.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-xmlschema.spec ++++++
--- /var/tmp/diff_new_pack.Pw5PnK/_old 2023-05-24 20:21:49.507987323 +0200
+++ /var/tmp/diff_new_pack.Pw5PnK/_new 2023-05-24 20:21:49.515987371 +0200
@@ -16,11 +16,9 @@
#
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%define skip_python2 1
%{?sle15_python_module_pythons}
Name: python-xmlschema
-Version: 2.2.3
+Version: 2.3.0
Release: 0
Summary: An XML Schema validator and decoder
License: MIT
++++++ xmlschema-2.2.3.tar.gz -> xmlschema-2.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/CHANGELOG.rst
new/xmlschema-2.3.0/CHANGELOG.rst
--- old/xmlschema-2.2.3/CHANGELOG.rst 2023-04-14 15:49:05.000000000 +0200
+++ new/xmlschema-2.3.0/CHANGELOG.rst 2023-05-18 22:18:16.000000000 +0200
@@ -2,6 +2,11 @@
CHANGELOG
*********
+`v2.3.0`_ (2023-05-18)
+======================
+* Improve sequence/all restriction checks for XSD 1.1
+* Add *schema* argument to `Wsdl11Document`
+
`v2.2.3`_ (2023-04-14)
======================
* Add support for Python 3.12
@@ -616,3 +621,4 @@
.. _v2.2.1: https://github.com/brunato/xmlschema/compare/v2.2.0...v2.2.1
.. _v2.2.2: https://github.com/brunato/xmlschema/compare/v2.2.1...v2.2.2
.. _v2.2.3: https://github.com/brunato/xmlschema/compare/v2.2.2...v2.2.3
+.. _v2.3.0: https://github.com/brunato/xmlschema/compare/v2.2.3...v2.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/PKG-INFO new/xmlschema-2.3.0/PKG-INFO
--- old/xmlschema-2.2.3/PKG-INFO 2023-04-14 15:52:42.466140500 +0200
+++ new/xmlschema-2.3.0/PKG-INFO 2023-05-18 22:19:54.688786300 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: xmlschema
-Version: 2.2.3
+Version: 2.3.0
Summary: An XML Schema validator and decoder
Home-page: https://github.com/sissaschool/xmlschema
Author: Davide Brunato
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/doc/conf.py
new/xmlschema-2.3.0/doc/conf.py
--- old/xmlschema-2.2.3/doc/conf.py 2023-04-14 15:49:05.000000000 +0200
+++ new/xmlschema-2.3.0/doc/conf.py 2023-05-18 22:18:16.000000000 +0200
@@ -79,9 +79,9 @@
# built documents.
#
# The short X.Y version.
-version = '2.2'
+version = '2.3'
# The full version, including alpha/beta/rc tags.
-release = '2.2.3'
+release = '2.3.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/requirements-dev.txt
new/xmlschema-2.3.0/requirements-dev.txt
--- old/xmlschema-2.2.3/requirements-dev.txt 2023-02-06 07:20:42.000000000
+0100
+++ new/xmlschema-2.3.0/requirements-dev.txt 2023-05-18 22:18:16.000000000
+0200
@@ -2,7 +2,7 @@
setuptools
tox>=4.0
coverage
-elementpath>=4.0.0, <5.0.0
+elementpath>=4.1.2, <5.0.0
lxml
jinja2
memory_profiler
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/setup.py new/xmlschema-2.3.0/setup.py
--- old/xmlschema-2.2.3/setup.py 2023-04-14 15:49:05.000000000 +0200
+++ new/xmlschema-2.3.0/setup.py 2023-05-18 22:18:16.000000000 +0200
@@ -18,7 +18,7 @@
setup(
name='xmlschema',
- version='2.2.3',
+ version='2.3.0',
packages=find_packages(include=['xmlschema*']),
package_data={
'xmlschema': ['py.typed', 'locale/**/*.mo', 'locale/**/*.po',
'schemas/*/*.xsd'],
@@ -32,13 +32,13 @@
]
},
python_requires='>=3.7',
- install_requires=['elementpath>=4.0.0, <5.0.0'],
+ install_requires=['elementpath>=4.1.2, <5.0.0'],
extras_require={
- 'codegen': ['elementpath>=4.0.0, <5.0.0', 'jinja2'],
- 'dev': ['tox', 'coverage', 'lxml', 'elementpath>=4.0.0, <5.0.0',
+ 'codegen': ['elementpath>=4.1.2, <5.0.0', 'jinja2'],
+ 'dev': ['tox', 'coverage', 'lxml', 'elementpath>=4.1.2, <5.0.0',
'memory_profiler', 'Sphinx', 'sphinx_rtd_theme', 'jinja2',
'flake8', 'mypy', 'lxml-stubs'],
- 'docs': ['elementpath>=4.0.0, <5.0.0', 'Sphinx', 'sphinx_rtd_theme',
'jinja2']
+ 'docs': ['elementpath>=4.1.2, <5.0.0', 'Sphinx', 'sphinx_rtd_theme',
'jinja2']
},
author='Davide Brunato',
author_email='[email protected]',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/derivations/complex11-restrictions.xsd
new/xmlschema-2.3.0/tests/test_cases/features/derivations/complex11-restrictions.xsd
---
old/xmlschema-2.2.3/tests/test_cases/features/derivations/complex11-restrictions.xsd
1970-01-01 01:00:00.000000000 +0100
+++
new/xmlschema-2.3.0/tests/test_cases/features/derivations/complex11-restrictions.xsd
2023-05-18 22:18:16.000000000 +0200
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Schema test for invalid models: occurrence violation. -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="baseType1">
+ <xs:sequence>
+ <xs:element name="elem1" minOccurs="0"/>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="elem2" type="xs:string" />
+ <xs:element name="elem3" type="xs:string" />
+ </xs:sequence>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="restrictedType1">
+ <xs:complexContent>
+ <xs:restriction base="baseType1">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="elem2" type="xs:string" />
+ <xs:element name="elem3" type="xs:string" />
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="baseType2">
+ <xs:sequence>
+ <xs:element name="elem1" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="elem2" type="xs:string" />
+ <xs:element name="elem3" type="xs:string" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="restrictedType2">
+ <xs:complexContent>
+ <xs:restriction base="baseType2">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="elem2" type="xs:string" />
+ <xs:element name="elem3" type="xs:string" />
+ </xs:choice>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="baseType3">
+ <xs:sequence>
+ <xs:element name="elem1" minOccurs="0"/>
+ <xs:choice maxOccurs="5">
+ <xs:element name="elem2" type="xs:string" maxOccurs="2"/>
+ <xs:element name="elem3" type="xs:string" maxOccurs="2"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="restrictedType3">
+ <xs:complexContent>
+ <xs:restriction base="baseType3">
+ <xs:choice maxOccurs="10">
+ <xs:element name="elem3" type="xs:string" />
+ </xs:choice>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="baseType4">
+ <xs:sequence>
+ <xs:element name="elem1" minOccurs="0"/>
+ <xs:choice maxOccurs="5">
+ <xs:element name="elem2" type="xs:string" maxOccurs="3"/>
+ <xs:element name="elem3" type="xs:string" maxOccurs="4"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="restrictedType4">
+ <xs:complexContent>
+ <xs:restriction base="baseType4">
+ <xs:choice maxOccurs="10">
+ <xs:element name="elem3" type="xs:string" maxOccurs="2"/>
+ </xs:choice>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="baseType5">
+ <xs:sequence>
+ <xs:element name="elem1" minOccurs="0"/>
+ <xs:choice minOccurs="5" maxOccurs="unbounded">
+ <xs:element name="elem2" type="xs:string" maxOccurs="3"/>
+ <xs:element name="elem3" type="xs:string" maxOccurs="4"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="restrictedType5">
+ <xs:complexContent>
+ <xs:restriction base="baseType5">
+ <xs:choice minOccurs="10" maxOccurs="unbounded">
+ <xs:element name="elem3" type="xs:string" maxOccurs="2"/>
+ </xs:choice>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+</xs:schema>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid-enumeration-restriction.xsd
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid-enumeration-restriction.xsd
---
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid-enumeration-restriction.xsd
1970-01-01 01:00:00.000000000 +0100
+++
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid-enumeration-restriction.xsd
2023-05-18 22:18:16.000000000 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Invalid enumeration restriction related to issue #202 -->
+ <xs:simpleType name="LocalEnergyProductType">
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="8716867000016" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="LocalRestrictedEnergyProductType">
+ <xs:restriction base="LocalEnergyProductType">
+ <xs:enumeration value="A01"/> <!-- not a valid value
for base type -->
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid-restrictions1.xsd
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid-restrictions1.xsd
---
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid-restrictions1.xsd
1970-01-01 01:00:00.000000000 +0100
+++
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid-restrictions1.xsd
2023-05-18 22:18:16.000000000 +0200
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Schema test for invalid restricted models: UPA violation restricting a
substitution group head. -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element type="xs:string" name="elem1"/>
+ <xs:element type="xs:string" name="elem2" substitutionGroup="elem1" />
+
+ <xs:complexType name="basicType1">
+ <xs:sequence>
+ <xs:element ref="elem1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <!-- UPA violation minOccurs < maxOccurs -->
+ <xs:complexType name="restrictedType1">
+ <xs:complexContent>
+ <xs:restriction base="basicType1">
+ <xs:sequence>
+ <xs:element ref="elem2" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- No UPA violation if the restricted element is empty but elem2 is not
a restriction -->
+ <xs:complexType name="restrictedType2">
+ <xs:complexContent>
+ <xs:restriction base="basicType1">
+ <xs:sequence>
+ <xs:element ref="elem2" minOccurs="0" maxOccurs="0"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element type="xs:string" name="elem3" abstract="true"/>
+ <xs:element type="xs:string" name="elem4" substitutionGroup="elem3" />
+
+ <xs:complexType name="basicType3">
+ <xs:sequence>
+ <xs:element ref="elem3" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <!-- No UPA violation if the head element is abstract (it cannot be used
in an instance). -->
+ <xs:complexType name="restrictedType3">
+ <xs:complexContent>
+ <xs:restriction base="basicType3">
+ <xs:sequence>
+ <xs:element ref="elem4" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+</xs:schema>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid-restrictions2.xsd
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid-restrictions2.xsd
---
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid-restrictions2.xsd
1970-01-01 01:00:00.000000000 +0100
+++
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid-restrictions2.xsd
2023-05-18 22:18:16.000000000 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Schema test for invalid model restriction (issue 344):
+occurrence violation for XSD 1.0, not emptiable particle for XSD 1.1. -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="baseType1">
+ <xs:sequence>
+ <xs:element name="elem1" />
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="elem2" type="xs:string" />
+ <xs:element name="elem3" type="xs:string" />
+ </xs:sequence>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="restrictedType1">
+ <xs:complexContent>
+ <xs:restriction base="baseType1">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="elem2" type="xs:string" />
+ <xs:element name="elem3" type="xs:string" />
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+</xs:schema>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid_enumeration_restriction.xsd
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid_enumeration_restriction.xsd
---
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid_enumeration_restriction.xsd
2020-09-13 21:12:09.000000000 +0200
+++
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid_enumeration_restriction.xsd
1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <!-- Invalid enumeration restriction related to issue #202 -->
- <xs:simpleType name="LocalEnergyProductType">
- <xs:restriction base="xs:NMTOKEN">
- <xs:enumeration value="8716867000016" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="LocalRestrictedEnergyProductType">
- <xs:restriction base="LocalEnergyProductType">
- <xs:enumeration value="A01"/> <!-- not a valid value
for base type -->
- </xs:restriction>
- </xs:simpleType>
-
-</xs:schema>
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid_restrictions1.xsd
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid_restrictions1.xsd
---
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid_restrictions1.xsd
2020-08-14 21:07:25.000000000 +0200
+++
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid_restrictions1.xsd
1970-01-01 01:00:00.000000000 +0100
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Schema test for invalid restricted models: UPA violation restricting a
substitution group head. -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:element type="xs:string" name="elem1"/>
- <xs:element type="xs:string" name="elem2" substitutionGroup="elem1" />
-
- <xs:complexType name="basicType1">
- <xs:sequence>
- <xs:element ref="elem1" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <!-- UPA violation minOccurs < maxOccurs -->
- <xs:complexType name="restrictedType1">
- <xs:complexContent>
- <xs:restriction base="basicType1">
- <xs:sequence>
- <xs:element ref="elem2" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:restriction>
- </xs:complexContent>
- </xs:complexType>
-
- <!-- No UPA violation if the restricted element is empty but elem2 is not
a restriction -->
- <xs:complexType name="restrictedType2">
- <xs:complexContent>
- <xs:restriction base="basicType1">
- <xs:sequence>
- <xs:element ref="elem2" minOccurs="0" maxOccurs="0"/>
- </xs:sequence>
- </xs:restriction>
- </xs:complexContent>
- </xs:complexType>
-
- <xs:element type="xs:string" name="elem3" abstract="true"/>
- <xs:element type="xs:string" name="elem4" substitutionGroup="elem3" />
-
- <xs:complexType name="basicType3">
- <xs:sequence>
- <xs:element ref="elem3" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <!-- No UPA violation if the head element is abstract (it cannot be used
in an instance). -->
- <xs:complexType name="restrictedType3">
- <xs:complexContent>
- <xs:restriction base="basicType3">
- <xs:sequence>
- <xs:element ref="elem4" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:restriction>
- </xs:complexContent>
- </xs:complexType>
-
-</xs:schema>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid_restrictions2.xsd
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid_restrictions2.xsd
---
old/xmlschema-2.2.3/tests/test_cases/features/derivations/invalid_restrictions2.xsd
2020-01-23 21:05:17.000000000 +0100
+++
new/xmlschema-2.3.0/tests/test_cases/features/derivations/invalid_restrictions2.xsd
1970-01-01 01:00:00.000000000 +0100
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Schema test for invalid models: UPA violation restricting a substitution
group head. -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:complexType name="baseType1">
- <xs:sequence>
- <xs:element name="elem1" />
- <xs:element minOccurs="0" name="elem2" />
- <xs:choice>
- <xs:element name="elem3" type="xs:string" />
- <xs:element name="elem4" type="xs:string" />
- </xs:choice>
- <xs:element minOccurs="0" name="elem5" />
- <xs:element minOccurs="0" name="elem6" type="xs:string" />
- <xs:element minOccurs="0" name="elem7" />
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="restrictedType1">
- <xs:complexContent>
- <xs:restriction base="baseType1">
- <xs:sequence>
- <xs:sequence>
- <xs:element name="elem1" />
- <xs:element minOccurs="0" name="elem2" />
- <xs:choice>
- <xs:element name="elem3" type="xs:token" />
- <xs:element name="elem4" type="xs:string" />
- </xs:choice>
- <xs:sequence>
- <xs:element minOccurs="0" name="elem6"
type="xs:string" />
- </xs:sequence>
- </xs:sequence>
- <xs:sequence>
- <xs:element minOccurs="0" name="elem7" />
- </xs:sequence>
- </xs:sequence>
- </xs:restriction>
- </xs:complexContent>
- </xs:complexType>
-
-</xs:schema>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/wsdl/wsdl11_example3.wsdl
new/xmlschema-2.3.0/tests/test_cases/features/wsdl/wsdl11_example3.wsdl
--- old/xmlschema-2.2.3/tests/test_cases/features/wsdl/wsdl11_example3.wsdl
2020-11-08 23:15:33.000000000 +0100
+++ new/xmlschema-2.3.0/tests/test_cases/features/wsdl/wsdl11_example3.wsdl
2023-05-18 22:18:16.000000000 +0200
@@ -3,7 +3,7 @@
Original example #3 from WSDL 1.1 definition with SOAP 1.1 bindings:
href: https://www.w3.org/TR/2001/NOTE-wsdl-20010315#_soap-e
-Thi version contains a typo in <binding> definition
+This case contains a typo in <binding> definition
-->
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/wsdl/wsdl11_example3_no_types.wsdl
new/xmlschema-2.3.0/tests/test_cases/features/wsdl/wsdl11_example3_no_types.wsdl
---
old/xmlschema-2.2.3/tests/test_cases/features/wsdl/wsdl11_example3_no_types.wsdl
1970-01-01 01:00:00.000000000 +0100
+++
new/xmlschema-2.3.0/tests/test_cases/features/wsdl/wsdl11_example3_no_types.wsdl
2023-05-18 22:18:16.000000000 +0200
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+Example #3 from WSDL 1.1 definition with SOAP 1.1 bindings:
+ href: https://www.w3.org/TR/2001/NOTE-wsdl-20010315#_soap-e
+-->
+<definitions name="StockQuote"
+ targetNamespace="http://example.com/stockquote.wsdl"
+ xmlns:tns="http://example.com/stockquote.wsdl"
+ xmlns:xsd1="http://example.com/stockquote.xsd"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
+
+ <message name="SubscribeToQuotes">
+ <part name="body" element="xsd1:SubscribeToQuotes"/>
+ <part name="subscribeheader" element="xsd1:SubscriptionHeader"/>
+ </message>
+
+ <portType name="StockQuotePortType">
+ <operation name="SubscribeToQuotes">
+ <input message="tns:SubscribeToQuotes"/>
+ </operation>
+ </portType>
+
+ <binding name="StockQuoteSoap" type="tns:StockQuotePortType">
+ <soap:binding style="document" transport="http://example.com/smtp"/>
+ <operation name="SubscribeToQuotes">
+ <input>
+ <soap:body parts="body" use="literal"/>
+ <soap:header message="tns:SubscribeToQuotes"
part="subscribeheader" use="literal"/>
+ </input>
+ </operation>
+ </binding>
+
+ <service name="StockQuoteService">
+ <port name="StockQuotePort" binding="tns:StockQuoteSoap">
+ <soap:address location="mailto:[email protected]"/>
+ </port>
+ </service>
+</definitions>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xmlschema-2.2.3/tests/test_cases/features/wsdl/wsdl11_example3_types.xsd
new/xmlschema-2.3.0/tests/test_cases/features/wsdl/wsdl11_example3_types.xsd
---
old/xmlschema-2.2.3/tests/test_cases/features/wsdl/wsdl11_example3_types.xsd
1970-01-01 01:00:00.000000000 +0100
+++
new/xmlschema-2.3.0/tests/test_cases/features/wsdl/wsdl11_example3_types.xsd
2023-05-18 22:18:16.000000000 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<schema targetNamespace="http://example.com/stockquote.xsd"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+ <element name="SubscribeToQuotes">
+ <complexType>
+ <all>
+ <element name="tickerSymbol" type="string"/>
+ </all>
+ </complexType>
+ </element>
+ <element name="SubscriptionHeader" type="anyURI"/>
+</schema>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/tests/test_cases/testfiles
new/xmlschema-2.3.0/tests/test_cases/testfiles
--- old/xmlschema-2.2.3/tests/test_cases/testfiles 2022-07-18
16:19:15.000000000 +0200
+++ new/xmlschema-2.3.0/tests/test_cases/testfiles 2023-05-18
22:18:16.000000000 +0200
@@ -39,11 +39,15 @@
features/decoder/data4-mixed.xml
features/derivations/complex-extensions.xsd --errors=1
+features/derivations/complex11-restrictions.xsd --version=1.1
features/derivations/complex-with-simple-content-restriction.xsd
features/derivations/list_types.xsd --errors=1
features/derivations/list_types.xml --errors=2
-features/derivations/invalid_enumeration_restriction.xsd --errors=1
-features/derivations/invalid_restrictions1.xsd --errors=2
+features/derivations/invalid-enumeration-restriction.xsd --errors=1
+features/derivations/invalid-restrictions1.xsd --errors=2
+features/derivations/invalid-restrictions1.xsd --version=1.1 --errors=1
+features/derivations/invalid-restrictions2.xsd --errors=1
+features/derivations/invalid-restrictions2.xsd --version=1.1 --errors=1
features/elements/type_alternatives.xsd --errors=3
features/elements/type_alternatives.xsd --version=1.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/tests/test_typing.py
new/xmlschema-2.3.0/tests/test_typing.py
--- old/xmlschema-2.2.3/tests/test_typing.py 2022-05-20 18:16:20.000000000
+0200
+++ new/xmlschema-2.3.0/tests/test_typing.py 2023-05-18 22:18:16.000000000
+0200
@@ -11,53 +11,54 @@
"""Tests about static typing of xmlschema objects."""
import unittest
-import subprocess
-import re
+import importlib
from pathlib import Path
try:
- import mypy
+ from mypy import api as mypy_api
except ImportError:
- mypy = None
+ mypy_api = None
+try:
+ lxml_stubs_module = importlib.import_module('lxml-stubs')
+except ImportError:
+ lxml_stubs_module = None
[email protected](mypy is None, "mypy is not installed")
+
[email protected](mypy_api is None, "mypy is not installed")
[email protected](lxml_stubs_module is None, "lxml-stubs is not installed")
class TestTyping(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.cases_dir = Path(__file__).parent.joinpath('test_cases/mypy')
cls.config_file = Path(__file__).parent.parent.joinpath('mypy.ini')
- cls.error_pattern = re.compile(r'Found \d+ error', re.IGNORECASE)
-
- def check_mypy_output(self, testfile, *options):
- cmd = ['mypy', '--config-file', str(self.config_file), testfile]
- if options:
- cmd.extend(str(opt) for opt in options)
- process = subprocess.run(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
-
- self.assertEqual(process.stderr, b'')
- output = process.stdout.decode('utf-8').strip()
- output_lines = output.split('\n')
-
- self.assertGreater(len(output_lines), 0, msg=output)
- self.assertNotRegex(output_lines[-1], self.error_pattern, msg=output)
- return output_lines
def test_schema_source(self):
- case_path = self.cases_dir.joinpath('schema_source.py')
- output_lines = self.check_mypy_output(case_path, '--strict',
'--no-warn-unused-ignores')
- self.assertTrue(output_lines[0].startswith('Success:'),
msg='\n'.join(output_lines))
+ result = mypy_api.run([
+ '--strict',
+ '--no-warn-unused-ignores',
+ '--config-file', str(self.config_file),
+ str(self.cases_dir.joinpath('schema_source.py'))
+ ])
+ self.assertEqual(result[2], 0, msg=result[1] or result[0])
def test_simple_types(self):
- case_path = self.cases_dir.joinpath('simple_types.py')
- output_lines = self.check_mypy_output(case_path, '--strict',
'--no-warn-unused-ignores')
- self.assertTrue(output_lines[0].startswith('Success:'),
msg='\n'.join(output_lines))
+ result = mypy_api.run([
+ '--strict',
+ '--no-warn-unused-ignores',
+ '--config-file', str(self.config_file),
+ str(self.cases_dir.joinpath('simple_types.py'))
+ ])
+ self.assertEqual(result[2], 0, msg=result[1] or result[0])
def test_extra_validator__issue_291(self):
- case_path = self.cases_dir.joinpath('extra_validator.py')
- output_lines = self.check_mypy_output(case_path, '--strict')
- self.assertTrue(output_lines[0].startswith('Success:'),
msg='\n'.join(output_lines))
+ result = mypy_api.run([
+ '--strict',
+ '--config-file', str(self.config_file),
+ str(self.cases_dir.joinpath('extra_validator.py'))
+ ])
+ self.assertEqual(result[2], 0, msg=result[1] or result[0])
if __name__ == '__main__':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/tests/test_wsdl.py
new/xmlschema-2.3.0/tests/test_wsdl.py
--- old/xmlschema-2.2.3/tests/test_wsdl.py 2022-07-18 16:19:15.000000000
+0200
+++ new/xmlschema-2.3.0/tests/test_wsdl.py 2023-05-18 22:18:16.000000000
+0200
@@ -258,6 +258,19 @@
port = wsdl_document.services[service_name].ports['StockQuotePort']
self.assertEqual(port.soap_location, 'mailto:[email protected]')
+ def test_example3_without_types__issue_347(self):
+ no_types_file = casepath('features/wsdl/wsdl11_example3_no_types.wsdl')
+ with self.assertRaises(WsdlParseError):
+ Wsdl11Document(no_types_file)
+
+ schema_file = casepath('features/wsdl/wsdl11_example3_types.xsd')
+ wsdl_document = Wsdl11Document(no_types_file, schema=schema_file)
+
+ self.assertIn('{http://example.com/stockquote.xsd}SubscribeToQuotes',
+ wsdl_document.schema.maps.elements)
+ self.assertIn('{http://example.com/stockquote.xsd}SubscriptionHeader',
+ wsdl_document.schema.maps.elements)
+
def test_example4(self):
original_example4_file = casepath('features/wsdl/wsdl11_example4.wsdl')
with self.assertRaises(XMLSchemaValidationError):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/tests/validators/test_groups.py
new/xmlschema-2.3.0/tests/validators/test_groups.py
--- old/xmlschema-2.2.3/tests/validators/test_groups.py 2021-10-20
16:14:48.000000000 +0200
+++ new/xmlschema-2.3.0/tests/validators/test_groups.py 2023-05-18
22:18:16.000000000 +0200
@@ -30,6 +30,10 @@
def __repr__(self) -> str:
return '%s(model=%r, occurs=%r)' % (self.__class__.__name__,
self.model, self.occurs)
+ @property
+ def xsd_version(self) -> str:
+ return '1.0'
+
append: Any
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/tox.ini new/xmlschema-2.3.0/tox.ini
--- old/xmlschema-2.2.3/tox.ini 2023-04-14 15:49:05.000000000 +0200
+++ new/xmlschema-2.3.0/tox.ini 2023-05-18 22:18:16.000000000 +0200
@@ -1,12 +1,12 @@
[tox]
-envlist = py{37,38,39,310,311,312,py3}, ep{40}, docs,
+envlist = py{37,38,39,310,311,312,py3}, docs,
flake8, mypy-py{37,38,39,310,311,312,py3}, coverage, pytest
skip_missing_interpreters = true
work_dir = {tox_root}/../.tox/xmlschema
[testenv]
deps =
- elementpath>=4.0.0, <5.0.0
+ elementpath>=4.1.2, <5.0.0
lxml
jinja2
py{310,311}: memory_profiler
@@ -18,15 +18,10 @@
[testenv:py312]
deps =
- elementpath>=4.0.0, <5.0.0
+ elementpath>=4.1.2, <5.0.0
# lxml: skip for now
jinja2
-[testenv:ep40]
-deps =
- elementpath~=4.0.0
- lxml
-
[testenv:docs]
commands =
make -C doc html SPHINXOPTS="-W -n"
@@ -47,8 +42,8 @@
[testenv:mypy-py37]
deps =
- mypy==1.2.0
- elementpath==4.1.1
+ mypy==1.3.0
+ elementpath==4.1.2
lxml-stubs
jinja2
commands =
@@ -56,8 +51,8 @@
[testenv:mypy-py{38,39,310,311,312,py3}]
deps =
- mypy==1.2.0
- elementpath==4.1.1
+ mypy==1.3.0
+ elementpath==4.1.2
lxml-stubs
jinja2
commands =
@@ -74,10 +69,10 @@
deps =
pytest
pytest-randomly
- elementpath>=4.0.0, <5.0.0
+ elementpath>=4.1.2, <5.0.0
lxml
jinja2
- mypy==1.2.0
+ mypy==1.3.0
lxml-stubs
commands =
pytest tests -ra
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/__init__.py
new/xmlschema-2.3.0/xmlschema/__init__.py
--- old/xmlschema-2.2.3/xmlschema/__init__.py 2023-04-14 15:49:05.000000000
+0200
+++ new/xmlschema-2.3.0/xmlschema/__init__.py 2023-05-18 22:18:16.000000000
+0200
@@ -31,7 +31,7 @@
XsdComponent, XsdType, XsdElement, XsdAttribute
)
-__version__ = '2.2.3'
+__version__ = '2.3.0'
__author__ = "Davide Brunato"
__contact__ = "[email protected]"
__copyright__ = "Copyright 2016-2023, SISSA"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/cli.py
new/xmlschema-2.3.0/xmlschema/cli.py
--- old/xmlschema-2.2.3/xmlschema/cli.py 2022-07-18 16:19:15.000000000
+0200
+++ new/xmlschema-2.3.0/xmlschema/cli.py 2023-05-18 22:18:16.000000000
+0200
@@ -6,7 +6,7 @@
#
# @author Davide Brunato <[email protected]>
#
-# type: ignore
+# mypy: ignore-errors
"""Command Line Interface"""
import sys
import os
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/documents.py
new/xmlschema-2.3.0/xmlschema/documents.py
--- old/xmlschema-2.2.3/xmlschema/documents.py 2023-02-06 07:20:42.000000000
+0100
+++ new/xmlschema-2.3.0/xmlschema/documents.py 2023-05-18 22:18:16.000000000
+0200
@@ -543,6 +543,9 @@
:param defuse: the defuse mode for base :class:`xmlschema.XMLResource`
initialization.
:param timeout: the timeout for base :class:`xmlschema.XMLResource`
initialization.
:param lazy: the lazy mode for base :class:`xmlschema.XMLResource`
initialization.
+ :param use_location_hints: for default, in case a schema instance has \
+ to be built, uses also schema locations hints provided within XML data. \
+ Set this option to `False` to ignore these schema location hints.
"""
schema: Optional[XMLSchemaBase] = None
_fallback_schema: Optional[XMLSchemaBase] = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/extras/codegen.py
new/xmlschema-2.3.0/xmlschema/extras/codegen.py
--- old/xmlschema-2.2.3/xmlschema/extras/codegen.py 2023-02-11
10:04:58.000000000 +0100
+++ new/xmlschema-2.3.0/xmlschema/extras/codegen.py 2023-05-18
22:18:16.000000000 +0200
@@ -7,7 +7,7 @@
#
# @author Davide Brunato <[email protected]>
#
-# type: ignore
+# mypy: ignore-errors
"""
This module contains abstact base class and helper
functions for building XSD based code generators.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/extras/wsdl.py
new/xmlschema-2.3.0/xmlschema/extras/wsdl.py
--- old/xmlschema-2.2.3/xmlschema/extras/wsdl.py 2022-06-24
16:13:22.000000000 +0200
+++ new/xmlschema-2.3.0/xmlschema/extras/wsdl.py 2023-05-18
22:18:16.000000000 +0200
@@ -7,7 +7,7 @@
#
# @author Davide Brunato <[email protected]>
#
-# type: ignore
+# mypy: ignore-errors
import os
from ..exceptions import XMLSchemaException, XMLSchemaValueError
@@ -17,7 +17,7 @@
from ..namespaces import NamespaceResourcesMap
from ..resources import fetch_resource
from ..documents import XmlDocument
-from ..validators import XMLSchema10
+from ..validators import XMLSchemaBase, XMLSchema10
# WSDL 1.1 global declarations
@@ -463,6 +463,9 @@
:param source: a string containing XML data or a file path or an URL or a \
file like object or an ElementTree or an Element.
+ :param schema: additional schema for providing XSD types and elements to
the \
+ WSDL document. Can be a :class:`xmlschema.XMLSchema` instance or a
file-like \
+ object or a file path or a URL of a resource or a string containing the
XSD schema.
:param cls: class to use for building the schema instance (for default \
:class:`xmlschema.XMLSchema10` is used).
:param validation: the XSD validation mode to use for validating the XML
document, \
@@ -479,17 +482,30 @@
target_namespace = ''
soap_binding = False
- def __init__(self, source, cls=None, validation='strict', namespaces=None,
maps=None,
- locations=None, base_url=None, allow='all', defuse='remote',
timeout=300):
+ def __init__(self, source, schema=None, cls=None, validation='strict',
+ namespaces=None, maps=None, locations=None, base_url=None,
+ allow='all', defuse='remote', timeout=300):
- if maps is None:
+ if maps is not None:
+ self.maps = maps
+ self.schema = maps.wsdl_document.schema
+ else:
if cls is None:
cls = XMLSchema10
- self.schema = cls(source=os.path.join(SCHEMAS_DIR,
'WSDL/wsdl.xsd'))
+
+ if isinstance(schema, XMLSchemaBase):
+ cls = schema.__class__
+ global_maps = schema.maps
+ elif schema is not None:
+ global_maps = cls(schema).maps
+ else:
+ global_maps = None
+
+ self.schema = cls(
+ source=os.path.join(SCHEMAS_DIR, 'WSDL/wsdl.xsd'),
+ global_maps=global_maps,
+ )
self.maps = Wsdl11Maps(self)
- else:
- self.schema = maps.wsdl_document.schema
- self.maps = maps
if locations:
self.locations = NamespaceResourcesMap(locations)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/testing/__init__.py
new/xmlschema-2.3.0/xmlschema/testing/__init__.py
--- old/xmlschema-2.2.3/xmlschema/testing/__init__.py 2022-03-07
14:26:41.000000000 +0100
+++ new/xmlschema-2.3.0/xmlschema/testing/__init__.py 2023-05-18
22:18:16.000000000 +0200
@@ -7,7 +7,7 @@
#
# @author Davide Brunato <[email protected]>
#
-# type: ignore
+# mypy: ignore-errors
"""
Subpackage with unittest extensions for xmlschema.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/testing/_builders.py
new/xmlschema-2.3.0/xmlschema/testing/_builders.py
--- old/xmlschema-2.2.3/xmlschema/testing/_builders.py 2022-07-18
16:19:15.000000000 +0200
+++ new/xmlschema-2.3.0/xmlschema/testing/_builders.py 2023-05-18
22:18:16.000000000 +0200
@@ -7,7 +7,7 @@
#
# @author Davide Brunato <[email protected]>
#
-# type: ignore
+# mypy: ignore-errors
import pdb
import os
import ast
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/testing/_case_class.py
new/xmlschema-2.3.0/xmlschema/testing/_case_class.py
--- old/xmlschema-2.2.3/xmlschema/testing/_case_class.py 2022-07-18
16:19:15.000000000 +0200
+++ new/xmlschema-2.3.0/xmlschema/testing/_case_class.py 2023-05-18
22:18:16.000000000 +0200
@@ -7,7 +7,7 @@
#
# @author Davide Brunato <[email protected]>
#
-# type: ignore
+# mypy: ignore-errors
"""
Tests subpackage module: common definitions for unittest scripts of the
'xmlschema' package.
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/testing/_factory.py
new/xmlschema-2.3.0/xmlschema/testing/_factory.py
--- old/xmlschema-2.2.3/xmlschema/testing/_factory.py 2022-03-07
14:26:41.000000000 +0100
+++ new/xmlschema-2.3.0/xmlschema/testing/_factory.py 2023-05-18
22:18:16.000000000 +0200
@@ -7,7 +7,7 @@
#
# @author Davide Brunato <[email protected]>
#
-# type: ignore
+# mypy: ignore-errors
"""
Test factory for creating test cases from lists of paths to XSD or XML files.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/testing/_observers.py
new/xmlschema-2.3.0/xmlschema/testing/_observers.py
--- old/xmlschema-2.2.3/xmlschema/testing/_observers.py 2022-03-07
14:26:41.000000000 +0100
+++ new/xmlschema-2.3.0/xmlschema/testing/_observers.py 2023-05-18
22:18:16.000000000 +0200
@@ -7,7 +7,7 @@
#
# @author Davide Brunato <[email protected]>
#
-# type: ignore
+# mypy: ignore-errors
"""
Observers for testing XMLSchema classes.
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/validators/groups.py
new/xmlschema-2.3.0/xmlschema/validators/groups.py
--- old/xmlschema-2.2.3/xmlschema/validators/groups.py 2023-04-14
15:49:05.000000000 +0200
+++ new/xmlschema-2.3.0/xmlschema/validators/groups.py 2023-05-18
22:18:16.000000000 +0200
@@ -13,8 +13,8 @@
import warnings
from collections.abc import MutableMapping
from copy import copy as _copy
-from typing import TYPE_CHECKING, overload, Any, Iterable, Iterator, List, \
- MutableSequence, Optional, Tuple, Union
+from typing import TYPE_CHECKING, cast, overload, Any, Iterable, Iterator, \
+ List, MutableSequence, Optional, Tuple, Union
from xml.etree import ElementTree
from .. import limits
@@ -196,13 +196,27 @@
def effective_min_occurs(self) -> int:
if not self.min_occurs or not self:
return 0
+
+ effective_items: List[Any]
+ min_occurs: int
+ effective_items = [e for e in self.iter_model() if
e.effective_max_occurs != 0]
+ if not effective_items:
+ return 0
elif self.model == 'choice':
- if any(not e.effective_min_occurs for e in self.iter_model()):
- return 0
- else:
- if all(not e.effective_min_occurs for e in self.iter_model()):
- return 0
- return self.min_occurs
+ min_occurs = min(e.effective_min_occurs for e in effective_items)
+ return self.min_occurs * min_occurs
+ elif self.model == 'all':
+ min_occurs = max(e.effective_min_occurs for e in effective_items)
+ return min_occurs
+
+ not_emptiable_items = [e for e in effective_items if
e.effective_min_occurs]
+ if not not_emptiable_items:
+ return 0
+ elif len(not_emptiable_items) > 1:
+ return self.min_occurs
+
+ min_occurs = not_emptiable_items[0].effective_min_occurs
+ return self.min_occurs * min_occurs
@property
def effective_max_occurs(self) -> Optional[int]:
@@ -210,35 +224,41 @@
return 0
effective_items: List[Any]
- value: int
+ max_occurs: int
- effective_items = [e for e in self.iter_model() if
e.effective_max_occurs != 0]
+ model_items = [(e, e.effective_max_occurs) for e in self.iter_model()]
+ effective_items = [x for x in model_items if x[1] != 0]
if not effective_items:
return 0
elif self.max_occurs is None:
return None
elif self.model == 'choice':
- try:
- value = max(e.effective_max_occurs for e in effective_items)
- except TypeError:
+ if any(x[1] is None for x in effective_items):
return None
else:
- return self.max_occurs * value
+ max_occurs = max(x[1] for x in effective_items)
+ return self.max_occurs * max_occurs
- not_emptiable_items = [e for e in effective_items if
e.effective_min_occurs]
+ not_emptiable_items = [x for x in effective_items if
x[0].effective_min_occurs]
if not not_emptiable_items:
- try:
- value = max(e.effective_max_occurs for e in effective_items)
- except TypeError:
+ if any(x[1] is None for x in effective_items):
return None
else:
- return self.max_occurs * value
+ max_occurs = max(x[1] for x in effective_items)
+ return self.max_occurs * max_occurs
elif len(not_emptiable_items) > 1:
- return self.max_occurs
-
- value = not_emptiable_items[0].effective_max_occurs
- return None if value is None else self.max_occurs * value
+ if self.model == 'sequence':
+ return self.max_occurs
+ elif all(x[1] is None for x in not_emptiable_items):
+ return None
+ else:
+ max_occurs = min(x[1] for x in not_emptiable_items if x[1] is
not None)
+ return max_occurs
+ elif not_emptiable_items[0][1] is None:
+ return None
+ else:
+ return self.max_occurs * cast(int, not_emptiable_items[0][1])
def has_occurs_restriction(
self, other: Union[ModelParticleType, ParticleMixin,
'OccursCalculator']) -> bool:
@@ -1280,6 +1300,26 @@
else: # other.model == 'choice':
return self.is_choice_restriction(other)
+ def has_occurs_restriction(
+ self, other: Union[ModelParticleType, ParticleMixin,
'OccursCalculator']) -> bool:
+ if not isinstance(other, XsdGroup):
+ return super().has_occurs_restriction(other)
+ elif not self:
+ return True
+ elif self.effective_min_occurs < other.effective_min_occurs:
+ return False
+
+ effective_max_occurs = self.effective_max_occurs
+ if effective_max_occurs == 0:
+ return True
+ elif effective_max_occurs is None:
+ return other.effective_max_occurs is None
+
+ try:
+ return effective_max_occurs <= other.effective_max_occurs # type:
ignore[operator]
+ except TypeError:
+ return True
+
def is_sequence_restriction(self, other: XsdGroup) -> bool:
if not self.has_occurs_restriction(other):
return False
@@ -1306,12 +1346,22 @@
if item is not None and item.is_restriction(other_item,
check_occurs):
item = next(item_iterator, None)
elif not other_item.is_emptiable():
+ break
+ else:
+ if item is None:
+ return True
+
+ # Restriction check failed again: try checking other items against self
+ other_items = other.iter_model()
+ for other_item in other_items:
+ if self.is_restriction(other_item, check_occurs):
+ return all(x.is_emptiable() for x in other_items)
+ elif not other_item.is_emptiable():
return False
- return item is None
+ else:
+ return False
def is_all_restriction(self, other: XsdGroup) -> bool:
- if not self.has_occurs_restriction(other):
- return False
restriction_items = [x for x in self.iter_model()]
base_items = [x for x in other.iter_model()]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema/validators/particles.py
new/xmlschema-2.3.0/xmlschema/validators/particles.py
--- old/xmlschema-2.2.3/xmlschema/validators/particles.py 2022-09-08
12:16:11.000000000 +0200
+++ new/xmlschema-2.3.0/xmlschema/validators/particles.py 2023-05-18
22:18:16.000000000 +0200
@@ -44,7 +44,8 @@
"""
A property calculated from minOccurs, that is equal to minOccurs
for elements and may vary for content model groups, in dependance
- of group model and structure.
+ of group model and structure. Used for checking restrictions of
+ model groups in XSD 1.1.
"""
return self.min_occurs
@@ -54,7 +55,7 @@
A property calculated from maxOccurs, that is equal to maxOccurs
for elements and may vary for content model groups, in dependance
of group model and structure. Used for checking restrictions of
- xs:choice model groups in XSD 1.1.
+ model groups in XSD 1.1.
"""
return self.max_occurs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema.egg-info/PKG-INFO
new/xmlschema-2.3.0/xmlschema.egg-info/PKG-INFO
--- old/xmlschema-2.2.3/xmlschema.egg-info/PKG-INFO 2023-04-14
15:52:42.000000000 +0200
+++ new/xmlschema-2.3.0/xmlschema.egg-info/PKG-INFO 2023-05-18
22:19:54.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: xmlschema
-Version: 2.2.3
+Version: 2.3.0
Summary: An XML Schema validator and decoder
Home-page: https://github.com/sissaschool/xmlschema
Author: Davide Brunato
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema.egg-info/SOURCES.txt
new/xmlschema-2.3.0/xmlschema.egg-info/SOURCES.txt
--- old/xmlschema-2.2.3/xmlschema.egg-info/SOURCES.txt 2023-04-14
15:52:42.000000000 +0200
+++ new/xmlschema-2.3.0/xmlschema.egg-info/SOURCES.txt 2023-05-18
22:19:54.000000000 +0200
@@ -95,9 +95,10 @@
tests/test_cases/features/decoder/simple-types.xsd
tests/test_cases/features/derivations/complex-extensions.xsd
tests/test_cases/features/derivations/complex-with-simple-content-restriction.xsd
-tests/test_cases/features/derivations/invalid_enumeration_restriction.xsd
-tests/test_cases/features/derivations/invalid_restrictions1.xsd
-tests/test_cases/features/derivations/invalid_restrictions2.xsd
+tests/test_cases/features/derivations/complex11-restrictions.xsd
+tests/test_cases/features/derivations/invalid-enumeration-restriction.xsd
+tests/test_cases/features/derivations/invalid-restrictions1.xsd
+tests/test_cases/features/derivations/invalid-restrictions2.xsd
tests/test_cases/features/derivations/list_types.xml
tests/test_cases/features/derivations/list_types.xsd
tests/test_cases/features/elements/test_alternatives-1.xml
@@ -146,6 +147,8 @@
tests/test_cases/features/patterns/patterns.xml
tests/test_cases/features/patterns/patterns.xsd
tests/test_cases/features/wsdl/wsdl11_example3.wsdl
+tests/test_cases/features/wsdl/wsdl11_example3_no_types.wsdl
+tests/test_cases/features/wsdl/wsdl11_example3_types.xsd
tests/test_cases/features/wsdl/wsdl11_example3_valid.wsdl
tests/test_cases/features/wsdl/wsdl11_example4.wsdl
tests/test_cases/features/wsdl/wsdl11_example4_valid.wsdl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xmlschema-2.2.3/xmlschema.egg-info/requires.txt
new/xmlschema-2.3.0/xmlschema.egg-info/requires.txt
--- old/xmlschema-2.2.3/xmlschema.egg-info/requires.txt 2023-04-14
15:52:42.000000000 +0200
+++ new/xmlschema-2.3.0/xmlschema.egg-info/requires.txt 2023-05-18
22:19:54.000000000 +0200
@@ -1,14 +1,14 @@
-elementpath<5.0.0,>=4.0.0
+elementpath<5.0.0,>=4.1.2
[codegen]
-elementpath<5.0.0,>=4.0.0
+elementpath<5.0.0,>=4.1.2
jinja2
[dev]
tox
coverage
lxml
-elementpath<5.0.0,>=4.0.0
+elementpath<5.0.0,>=4.1.2
memory_profiler
Sphinx
sphinx_rtd_theme
@@ -18,7 +18,7 @@
lxml-stubs
[docs]
-elementpath<5.0.0,>=4.0.0
+elementpath<5.0.0,>=4.1.2
Sphinx
sphinx_rtd_theme
jinja2