Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F79426949
data_structures.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Aug 26, 08:32
Size
2 KB
Mime Type
text/x-python
Expires
Wed, Aug 28, 08:32 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
20187301
Attached To
R6746 RationalROMPy
data_structures.py
View Options
# Copyright (C) 2018 by the RROMPy authors
#
# This file is part of RROMPy.
#
# RROMPy is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# RROMPy is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with RROMPy. If not, see <http://www.gnu.org/licenses/>.
#
import
os
import
time
from
rrompy.utilities.base.types
import
Any
,
DictAny
,
ListAny
from
rrompy.utilities.exception_manager
import
RROMPyWarning
__all__
=
[
'findDictStrKey'
,
'purgeDict'
,
'purgeList'
]
def
findDictStrKey
(
key
:
Any
,
keyList
:
ListAny
):
for
akey
in
keyList
:
if
isinstance
(
key
,
str
)
and
key
.
lower
()
==
akey
.
lower
():
return
akey
return
None
def
purgeDict
(
dct
:
DictAny
,
allowedKeys
:
ListAny
=
[],
silent
:
bool
=
False
,
complement
:
bool
=
False
,
dictname
:
str
=
""
,
baselevel
:
int
=
0
)
->
DictAny
:
if
dictname
!=
""
:
dictname
=
" in "
+
dictname
dctcp
=
{}
for
key
in
dct
.
keys
():
akey
=
findDictStrKey
(
key
,
allowedKeys
)
if
(
akey
is
None
)
!=
complement
:
if
not
silent
:
RROMPyWarning
((
"Ignoring key {0}{2} with value "
"{1}."
)
.
format
(
key
,
dct
[
key
],
dictname
),
baselevel
)
else
:
if
akey
is
None
:
akey
=
key
dctcp
[
akey
]
=
dct
[
key
]
return
dctcp
def
purgeList
(
lst
:
ListAny
,
allowedEntries
:
ListAny
=
[],
silent
:
bool
=
False
,
complement
:
bool
=
False
,
listname
:
str
=
""
,
baselevel
:
int
=
0
)
->
ListAny
:
if
listname
!=
""
:
listname
=
" in "
+
listname
lstcp
=
[]
for
x
in
lst
:
ax
=
findDictStrKey
(
x
,
allowedEntries
)
if
(
ax
is
None
)
!=
complement
:
if
not
silent
:
RROMPyWarning
(
"Ignoring entry {0}{1}."
.
format
(
x
,
listname
),
baselevel
)
else
:
lstcp
=
lstcp
+
[
ax
]
return
lstcp
def
getNewFilename
(
prefix
:
str
=
""
,
extension
:
str
=
"dat"
,
timestamp
:
bool
=
True
)
->
str
:
extra
=
""
if
timestamp
:
extra
=
time
.
strftime
(
"_%y-%m-
%d
_%H:%M:%S"
,
time
.
localtime
())
filenameBase
=
"{}{}"
.
format
(
prefix
,
extra
)
idx
=
0
filename
=
filenameBase
+
".{}"
.
format
(
extension
)
while
os
.
path
.
exists
(
filename
):
idx
+=
1
filename
=
filenameBase
+
"_{}.{}"
.
format
(
idx
,
extension
)
return
filename
Event Timeline
Log In to Comment