Source code for bw2parameters.utils
from typing import Union
import ast
import importlib.metadata
[docs]
def isidentifier(ident):
"""Determines, if string is valid Python identifier.
Stolen from http://stackoverflow.com/questions/12700893/how-to-check-if-a-string-is-a-valid-python-identifier-including-keyword-check"""
if not isinstance(ident, str):
raise TypeError("expected str, but got {!r}".format(type(ident)))
# Resulting AST of simple identifier is <Module [<Expr <Name "foo">>]>
try:
root = ast.parse(ident)
except SyntaxError:
return False
if (
not isinstance(root, ast.Module)
or len(root.body) != 1
or not isinstance(root.body[0], ast.Expr)
or not isinstance(root.body[0].value, ast.Name)
or root.body[0].value.id != ident
):
return False
return True
[docs]
def get_version_tuple() -> tuple:
def as_integer(x: str) -> Union[int, str]:
try:
return int(x)
except ValueError:
return x
return tuple(
as_integer(v)
for v in importlib.metadata.version("bw2parameters")
.strip()
.split(".")
)