Skip to content

Commit 7b01a78

Browse files
Uri + OSDU json serialization
* bugfix for date * exception will not be raise for a notFound CRS during mesh reading. * An error is now printed for UnknownProperty exception during xml parsing (case of xsi:type filled without namespace specified) * epc improvement, bugfix in mesh reading * new tests * adding uri class * json serialization/deserialization for OSDU official version * using logging
1 parent f66a0e1 commit 7b01a78

29 files changed

Lines changed: 3767 additions & 963 deletions

energyml-utils/docs/src/energyml/utils/manager.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ <h1 class="title">Module <code>src.energyml.utils.manager</code></h1>
3434
import re
3535
from typing import List, Union, Any
3636

37-
REGEX_ENERGYML_MODULE_NAME = r&#34;energyml\.(?P&lt;pkg&gt;.*)\.v(?P&lt;version&gt;(?P&lt;versionNumber&gt;\d+(_\d+)*)(_dev(?P&lt;versionDev&gt;.*))?)\..*&#34;
38-
REGEX_PROJECT_VERSION = r&#34;(?P&lt;n0&gt;[\d]+)(.(?P&lt;n1&gt;[\d]+)(.(?P&lt;n2&gt;[\d]+))?)?&#34;
37+
RGX_ENERGYML_MODULE_NAME = r&#34;energyml\.(?P&lt;pkg&gt;.*)\.v(?P&lt;version&gt;(?P&lt;versionNumber&gt;\d+(_\d+)*)(_dev(?P&lt;versionDev&gt;.*))?)\..*&#34;
38+
RGX_PROJECT_VERSION = r&#34;(?P&lt;n0&gt;[\d]+)(.(?P&lt;n1&gt;[\d]+)(.(?P&lt;n2&gt;[\d]+))?)?&#34;
3939

4040
ENERGYML_MODULES_NAMES = [&#34;eml&#34;, &#34;prodml&#34;, &#34;witsml&#34;, &#34;resqml&#34;]
4141

@@ -196,7 +196,7 @@ <h1 class="title">Module <code>src.energyml.utils.manager</code></h1>
196196

197197
def get_class_pkg(cls):
198198
try:
199-
p = re.compile(REGEX_ENERGYML_MODULE_NAME)
199+
p = re.compile(RGX_ENERGYML_MODULE_NAME)
200200
m = p.search(cls.__module__)
201201
return m.group(&#34;pkg&#34;)
202202
except AttributeError as e:
@@ -210,7 +210,7 @@ <h1 class="title">Module <code>src.energyml.utils.manager</code></h1>
210210
else, the original version is returned.
211211
Example : reshapeVersion(&#34;v2.0.1&#34;, 2) ==&gt; &#34;2.0&#34; and reshapeVersion(&#34;version2.0.1.3.2.5&#34;, 4) ==&gt; &#34;version2.0.1.3.2.5&#34;
212212
&#34;&#34;&#34;
213-
p = re.compile(REGEX_PROJECT_VERSION)
213+
p = re.compile(RGX_PROJECT_VERSION)
214214
m = p.search(version)
215215
if m is not None:
216216
n0 = m.group(&#34;n0&#34;)
@@ -233,7 +233,7 @@ <h1 class="title">Module <code>src.energyml.utils.manager</code></h1>
233233
def get_class_pkg_version(
234234
cls, print_dev_version: bool = True, nb_max_version_digits: int = 2
235235
):
236-
p = re.compile(REGEX_ENERGYML_MODULE_NAME)
236+
p = re.compile(RGX_ENERGYML_MODULE_NAME)
237237
m = p.search(
238238
cls.__module__ if isinstance(cls, type) else type(cls).__module__
239239
)
@@ -364,7 +364,7 @@ <h2 class="section-title" id="header-functions">Functions</h2>
364364
</summary>
365365
<pre><code class="python">def get_class_pkg(cls):
366366
try:
367-
p = re.compile(REGEX_ENERGYML_MODULE_NAME)
367+
p = re.compile(RGX_ENERGYML_MODULE_NAME)
368368
m = p.search(cls.__module__)
369369
return m.group(&#34;pkg&#34;)
370370
except AttributeError as e:
@@ -384,7 +384,7 @@ <h2 class="section-title" id="header-functions">Functions</h2>
384384
<pre><code class="python">def get_class_pkg_version(
385385
cls, print_dev_version: bool = True, nb_max_version_digits: int = 2
386386
):
387-
p = re.compile(REGEX_ENERGYML_MODULE_NAME)
387+
p = re.compile(RGX_ENERGYML_MODULE_NAME)
388388
m = p.search(
389389
cls.__module__ if isinstance(cls, type) else type(cls).__module__
390390
)
@@ -554,7 +554,7 @@ <h2 class="section-title" id="header-functions">Functions</h2>
554554
else, the original version is returned.
555555
Example : reshapeVersion(&#34;v2.0.1&#34;, 2) ==&gt; &#34;2.0&#34; and reshapeVersion(&#34;version2.0.1.3.2.5&#34;, 4) ==&gt; &#34;version2.0.1.3.2.5&#34;
556556
&#34;&#34;&#34;
557-
p = re.compile(REGEX_PROJECT_VERSION)
557+
p = re.compile(RGX_PROJECT_VERSION)
558558
m = p.search(version)
559559
if m is not None:
560560
n0 = m.group(&#34;n0&#34;)

energyml-utils/docs/src/energyml/utils/xml.html

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -58,46 +58,46 @@ <h1 class="title">Module <code>src.energyml.utils.xml</code></h1>
5858
dict of all energyml namespace packages
5959
&#34;&#34;&#34; # pylint: disable=W0105
6060

61-
REGEX_UUID_NO_GRP = (
61+
RGX_UUID_NO_GRP = (
6262
r&#34;[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}&#34;
6363
)
64-
REGEX_UUID = r&#34;(?P&lt;uuid&gt;&#34; + REGEX_UUID_NO_GRP + &#34;)&#34;
65-
REGEX_DOMAIN_VERSION = r&#34;(?P&lt;domainVersion&gt;(?P&lt;versionNum&gt;([\d]+[\._])*\d)\s*(?P&lt;dev&gt;dev\s*(?P&lt;devNum&gt;[\d]+))?)&#34;
66-
REGEX_DOMAIN_VERSION_FLAT = r&#34;(?P&lt;domainVersion&gt;(?P&lt;versionNumFlat&gt;([\d]+)*\d)\s*(?P&lt;dev&gt;dev\s*(?P&lt;devNum&gt;[\d]+))?)&#34;
64+
RGX_UUID = r&#34;(?P&lt;uuid&gt;&#34; + RGX_UUID_NO_GRP + &#34;)&#34;
65+
RGX_DOMAIN_VERSION = r&#34;(?P&lt;domainVersion&gt;(?P&lt;versionNum&gt;([\d]+[\._])*\d)\s*(?P&lt;dev&gt;dev\s*(?P&lt;devNum&gt;[\d]+))?)&#34;
66+
RGX_DOMAIN_VERSION_FLAT = r&#34;(?P&lt;domainVersion&gt;(?P&lt;versionNumFlat&gt;([\d]+)*\d)\s*(?P&lt;dev&gt;dev\s*(?P&lt;devNum&gt;[\d]+))?)&#34;
6767

6868

6969
# ContentType
70-
REGEX_MIME_TYPE_MEDIA = r&#34;(?P&lt;media&gt;application|audio|font|example|image|message|model|multipart|text|video)&#34;
71-
REGEX_CT_ENERGYML_DOMAIN = r&#34;(?P&lt;energymlDomain&gt;x-(?P&lt;domain&gt;[\w]+)\+xml)&#34;
72-
REGEX_CT_XML_DOMAIN = r&#34;(?P&lt;xmlRawDomain&gt;(x\-)?(?P&lt;xmlDomain&gt;.+)\+xml)&#34;
73-
REGEX_CT_TOKEN_VERSION = r&#34;version=&#34; + REGEX_DOMAIN_VERSION
74-
REGEX_CT_TOKEN_TYPE = r&#34;type=(?P&lt;type&gt;[\w\_]+)&#34;
75-
76-
REGEX_CONTENT_TYPE = (
77-
REGEX_MIME_TYPE_MEDIA + &#34;/&#34;
78-
+ &#34;(?P&lt;rawDomain&gt;(&#34; + REGEX_CT_ENERGYML_DOMAIN + &#34;)|(&#34; + REGEX_CT_XML_DOMAIN + r&#34;)|([\w-]+\.?)+)&#34;
79-
+ &#34;(;((&#34; + REGEX_CT_TOKEN_VERSION + &#34;)|(&#34; + REGEX_CT_TOKEN_TYPE + &#34;)))*&#34;
70+
RGX_MIME_TYPE_MEDIA = r&#34;(?P&lt;media&gt;application|audio|font|example|image|message|model|multipart|text|video)&#34;
71+
RGX_CT_ENERGYML_DOMAIN = r&#34;(?P&lt;energymlDomain&gt;x-(?P&lt;domain&gt;[\w]+)\+xml)&#34;
72+
RGX_CT_XML_DOMAIN = r&#34;(?P&lt;xmlRawDomain&gt;(x\-)?(?P&lt;xmlDomain&gt;.+)\+xml)&#34;
73+
RGX_CT_TOKEN_VERSION = r&#34;version=&#34; + RGX_DOMAIN_VERSION
74+
RGX_CT_TOKEN_TYPE = r&#34;type=(?P&lt;type&gt;[\w\_]+)&#34;
75+
76+
RGX_CONTENT_TYPE = (
77+
RGX_MIME_TYPE_MEDIA + &#34;/&#34;
78+
+ &#34;(?P&lt;rawDomain&gt;(&#34; + RGX_CT_ENERGYML_DOMAIN + &#34;)|(&#34; + RGX_CT_XML_DOMAIN + r&#34;)|([\w-]+\.?)+)&#34;
79+
+ &#34;(;((&#34; + RGX_CT_TOKEN_VERSION + &#34;)|(&#34; + RGX_CT_TOKEN_TYPE + &#34;)))*&#34;
8080
)
81-
REGEX_QUALIFIED_TYPE = (
82-
r&#34;(?P&lt;domain&gt;[a-zA-Z]+)&#34; + REGEX_DOMAIN_VERSION_FLAT + r&#34;\.(?P&lt;type&gt;[\w_]+)&#34;
81+
RGX_QUALIFIED_TYPE = (
82+
r&#34;(?P&lt;domain&gt;[a-zA-Z]+)&#34; + RGX_DOMAIN_VERSION_FLAT + r&#34;\.(?P&lt;type&gt;[\w_]+)&#34;
8383
)
8484
# =========
8585

86-
REGEX_SCHEMA_VERSION = (
86+
RGX_SCHEMA_VERSION = (
8787
r&#34;(?P&lt;name&gt;[eE]ml|[cC]ommon|[rR]esqml|[wW]itsml|[pP]rodml)?\s*v?&#34;
88-
+ REGEX_DOMAIN_VERSION
88+
+ RGX_DOMAIN_VERSION
8989
+ r&#34;\s*$&#34;
9090
)
9191

92-
REGEX_ENERGYML_FILE_NAME_OLD = r&#34;(?P&lt;type&gt;[\w]+)_&#34; + REGEX_UUID_NO_GRP + r&#34;\.xml$&#34;
93-
REGEX_ENERGYML_FILE_NAME_NEW = (
94-
REGEX_UUID_NO_GRP + r&#34;\.(?P&lt;objectVersion&gt;\d+(\.\d+)*)\.xml$&#34;
92+
RGX_ENERGYML_FILE_NAME_OLD = r&#34;(?P&lt;type&gt;[\w]+)_&#34; + RGX_UUID_NO_GRP + r&#34;\.xml$&#34;
93+
RGX_ENERGYML_FILE_NAME_NEW = (
94+
RGX_UUID_NO_GRP + r&#34;\.(?P&lt;objectVersion&gt;\d+(\.\d+)*)\.xml$&#34;
9595
)
96-
REGEX_ENERGYML_FILE_NAME = (
97-
rf&#34;^(.*/)?({REGEX_ENERGYML_FILE_NAME_OLD})|({REGEX_ENERGYML_FILE_NAME_NEW})&#34;
96+
RGX_ENERGYML_FILE_NAME = (
97+
rf&#34;^(.*/)?({RGX_ENERGYML_FILE_NAME_OLD})|({RGX_ENERGYML_FILE_NAME_NEW})&#34;
9898
)
9999

100-
REGEX_XML_HEADER = r&#34;^\s*\&lt;\?xml\s+((encoding\s*=\s*\&#34;(?P&lt;encoding&gt;[^\&#34;]+)\&#34;|version\s*=\s*\&#34;(?P&lt;version&gt;[^\&#34;]+)\&#34;|standalone\s*=\s*\&#34;(?P&lt;standalone&gt;[^\&#34;]+)\&#34;)\s+)+&#34;
100+
RGX_XML_HEADER = r&#34;^\s*\&lt;\?xml\s+((encoding\s*=\s*\&#34;(?P&lt;encoding&gt;[^\&#34;]+)\&#34;|version\s*=\s*\&#34;(?P&lt;version&gt;[^\&#34;]+)\&#34;|standalone\s*=\s*\&#34;(?P&lt;standalone&gt;[^\&#34;]+)\&#34;)\s+)+&#34;
101101

102102

103103
def get_pkg_from_namespace(namespace: str) -&gt; Optional[str]:
@@ -138,7 +138,7 @@ <h1 class="title">Module <code>src.energyml.utils.xml</code></h1>
138138

139139
def get_xml_encoding(xml_content: str) -&gt; Optional[str]:
140140
try:
141-
m = re.search(REGEX_XML_HEADER, xml_content)
141+
m = re.search(RGX_XML_HEADER, xml_content)
142142
return m.group(&#34;encoding&#34;)
143143
except AttributeError:
144144
return &#34;utf-8&#34;
@@ -207,7 +207,7 @@ <h1 class="title">Module <code>src.energyml.utils.xml</code></h1>
207207

208208

209209
def parse_content_type(ct: str):
210-
return re.search(REGEX_CONTENT_TYPE, ct)</code></pre>
210+
return re.search(RGX_CONTENT_TYPE, ct)</code></pre>
211211
</details>
212212
</section>
213213
<section>
@@ -402,7 +402,7 @@ <h2 class="section-title" id="header-functions">Functions</h2>
402402
</summary>
403403
<pre><code class="python">def get_xml_encoding(xml_content: str) -&gt; Optional[str]:
404404
try:
405-
m = re.search(REGEX_XML_HEADER, xml_content)
405+
m = re.search(RGX_XML_HEADER, xml_content)
406406
return m.group(&#34;encoding&#34;)
407407
except AttributeError:
408408
return &#34;utf-8&#34;</code></pre>
@@ -432,7 +432,7 @@ <h2 class="section-title" id="header-functions">Functions</h2>
432432
<span>Expand source code</span>
433433
</summary>
434434
<pre><code class="python">def parse_content_type(ct: str):
435-
return re.search(REGEX_CONTENT_TYPE, ct)</code></pre>
435+
return re.search(RGX_CONTENT_TYPE, ct)</code></pre>
436436
</details>
437437
</dd>
438438
<dt id="src.energyml.utils.xml.search_element_has_child_xpath"><code class="name flex">

0 commit comments

Comments
 (0)