Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
D
dccXMLJSONConv
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
DigitalDynamicMeasurement
dccXMLJSONConv
Commits
374bc839
Commit
374bc839
authored
5 months ago
by
Vanessa Stehr
Browse files
Options
Downloads
Patches
Plain Diff
Add typeHints to dccConv2
parent
769526b4
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/dccXMLJSONConv/dccConv2.py
+14
-12
14 additions, 12 deletions
src/dccXMLJSONConv/dccConv2.py
with
14 additions
and
12 deletions
src/dccXMLJSONConv/dccConv2.py
+
14
−
12
View file @
374bc839
import
os
import
os
from
xml.etree.ElementTree
import
ElementTree
import
xmlschema
import
xmlschema
from
jinja2
import
Environment
,
PackageLoader
,
select_autoescape
from
jinja2
import
Environment
,
PackageLoader
,
select_autoescape
import
requests
import
requests
...
@@ -10,7 +11,7 @@ from importlib import resources as imp_resources
...
@@ -10,7 +11,7 @@ from importlib import resources as imp_resources
from
importlib.resources
import
files
from
importlib.resources
import
files
import
warnings
import
warnings
def
strip_outer_xml_tag
(
xml_str
,
outer_tag
)
:
def
strip_outer_xml_tag
(
xml_
str
:
str
,
outer_tag
:
str
)
->
str
:
#TODO raise/check error if outer not found
#TODO raise/check error if outer not found
xml_str
=
re
.
sub
(
r
'
<\?xml.*?\?>
'
,
''
,
xml_str
).
strip
()
xml_str
=
re
.
sub
(
r
'
<\?xml.*?\?>
'
,
''
,
xml_str
).
strip
()
xml_str
=
re
.
sub
(
rf
'
<
{
outer_tag
}
[^>]*>
'
,
''
,
xml_str
,
count
=
1
).
strip
()
xml_str
=
re
.
sub
(
rf
'
<
{
outer_tag
}
[^>]*>
'
,
''
,
xml_str
,
count
=
1
).
strip
()
...
@@ -18,11 +19,11 @@ def strip_outer_xml_tag(xml_str, outer_tag):
...
@@ -18,11 +19,11 @@ def strip_outer_xml_tag(xml_str, outer_tag):
return
xml_str
return
xml_str
def
get_from_dict
(
data_dict
,
map_list
):
def
get_from_dict
(
data_
dict
:
dict
,
map_list
:
list
[
int
|
str
]
):
return
reduce
(
operator
.
getitem
,
map_list
,
data_dict
)
return
reduce
(
operator
.
getitem
,
map_list
,
data_dict
)
def
set_in_dict
(
data_dict
,
map_list
,
value
):
def
set_in_dict
(
data_
dict
:
dict
,
map_list
:
list
[
int
|
str
]
,
value
):
get_from_dict
(
data_dict
,
map_list
[:
-
1
])[
map_list
[
-
1
]]
=
value
get_from_dict
(
data_dict
,
map_list
[:
-
1
])[
map_list
[
-
1
]]
=
value
...
@@ -43,11 +44,11 @@ class XMLSchemaConverter:
...
@@ -43,11 +44,11 @@ class XMLSchemaConverter:
def
_load_jinja_template
(
self
,
template_name
,
data_fragment
)
:
def
_load_jinja_template
(
self
,
template_name
:
str
,
data_fragment
:
str
)
->
str
:
template
=
self
.
env
.
get_template
(
template_name
)
template
=
self
.
env
.
get_template
(
template_name
)
return
template
.
render
(
data_fragment
=
data_fragment
)
return
template
.
render
(
data_fragment
=
data_fragment
)
def
convert_xml_to_json
(
self
,
input_data
):
def
convert_xml_to_json
(
self
,
input_data
)
->
tuple
[
dict
,
list
[
Exception
]]
:
try
:
try
:
#TODO check if we have to parse the errors
#TODO check if we have to parse the errors
return
self
.
schema
.
to_dict
(
input_data
,
validation
=
"
lax
"
)
return
self
.
schema
.
to_dict
(
input_data
,
validation
=
"
lax
"
)
...
@@ -62,7 +63,7 @@ class XMLSchemaConverter:
...
@@ -62,7 +63,7 @@ class XMLSchemaConverter:
converted_data
=
get_from_dict
(
conversion_result
[
0
],
template_info
[
'
json_path
'
])
converted_data
=
get_from_dict
(
conversion_result
[
0
],
template_info
[
'
json_path
'
])
return
converted_data
,
conversion_result
[
1
]
return
converted_data
,
conversion_result
[
1
]
def
convert_json_to_xml
(
self
,
input_data
):
def
convert_json_to_xml
(
self
,
input_data
)
->
tuple
[
str
,
ElementTree
,
list
[
Exception
]]
:
try
:
try
:
conversion_result
=
self
.
schema
.
encode
(
input_data
,
validation
=
"
lax
"
)
conversion_result
=
self
.
schema
.
encode
(
input_data
,
validation
=
"
lax
"
)
errors
=
conversion_result
[
1
]
errors
=
conversion_result
[
1
]
...
@@ -91,19 +92,20 @@ class XMLSchemaConverter:
...
@@ -91,19 +92,20 @@ class XMLSchemaConverter:
xml_str
=
strip_outer_xml_tag
(
xml_str
,
template_info
[
"
strip_outer_tag
"
])
xml_str
=
strip_outer_xml_tag
(
xml_str
,
template_info
[
"
strip_outer_tag
"
])
return
xml_str
,
converted_element
,
conversion_result
[
1
]
return
xml_str
,
converted_element
,
conversion_result
[
1
]
def
_getRootElement
(
self
,
xml_str
:
str
)
->
str
:
def
_getRootElement
(
self
,
xml_str
:
str
)
->
str
:
match
=
re
.
search
(
r
'
<\s*([\w:-]+)
'
,
xml_str
)
match
=
re
.
search
(
r
'
<\s*([\w:-]+)
'
,
xml_str
)
return
match
.
group
(
1
)
if
match
else
'
default
'
return
match
.
group
(
1
)
if
match
else
'
default
'
def
_checkIfValidationErrorIsUncritical
(
self
,
errors
)
:
def
_checkIfValidationErrorIsUncritical
(
self
,
errors
:
list
[
Exception
])
->
tuple
[
bool
,
list
[
Exception
],
list
[
Exception
]]
:
crticalErrors
=
[]
cr
i
ticalErrors
=
[]
unCriticalErrors
=
[]
unCriticalErrors
=
[]
for
error
in
errors
:
for
error
in
errors
:
if
"
value doesn
'
t match any pattern of [
'
3
\\\\
.3
\\\\
.0
'
]
"
in
error
.
reason
:
if
"
value doesn
'
t match any pattern of [
'
3
\\\\
.3
\\\\
.0
'
]
"
in
error
.
reason
:
unCriticalErrors
.
append
(
error
)
unCriticalErrors
.
append
(
error
)
else
:
else
:
crticalErrors
.
append
(
error
)
criticalErrors
.
append
(
error
)
isNotCritical
=
len
(
crticalErrors
)
==
0
isNotCritical
=
len
(
criticalErrors
)
==
0
return
isNotCritical
,
crticalErrors
,
unCriticalErrors
return
isNotCritical
,
criticalErrors
,
unCriticalErrors
converter
=
XMLSchemaConverter
()
converter
=
XMLSchemaConverter
()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment