mapres 2.4a8__tar.gz → 2.4a10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mapres-2.4a8/src/mapres.egg-info → mapres-2.4a10}/PKG-INFO +1 -1
- {mapres-2.4a8 → mapres-2.4a10}/pyproject.toml +1 -1
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/datamap.py +38 -18
- {mapres-2.4a8 → mapres-2.4a10/src/mapres.egg-info}/PKG-INFO +1 -1
- {mapres-2.4a8 → mapres-2.4a10}/LICENSE +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/README.md +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/setup.cfg +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/__init__.py +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/cache.py +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/exceptions.py +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/layers.py +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/maps/__init__.py +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/maps/color.py +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/maps/time.py +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres/resolver.py +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres.egg-info/SOURCES.txt +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres.egg-info/dependency_links.txt +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres.egg-info/requires.txt +0 -0
- {mapres-2.4a8 → mapres-2.4a10}/src/mapres.egg-info/top_level.txt +0 -0
|
@@ -12,6 +12,7 @@ class syntax:
|
|
|
12
12
|
paren_dollar = r'\$\(([^)]+)\)' # $(value)
|
|
13
13
|
colons = r':([^:\n]+):' # :value:
|
|
14
14
|
|
|
15
|
+
|
|
15
16
|
@dataclass
|
|
16
17
|
class DataMap:
|
|
17
18
|
'''Core datamap class. Contains logic used to make datamaps'''
|
|
@@ -38,13 +39,8 @@ class DataMap:
|
|
|
38
39
|
return getattr(cls, '__syntax__', syntax.double_braces)
|
|
39
40
|
|
|
40
41
|
|
|
41
|
-
# decorator
|
|
42
|
-
def datamap(
|
|
43
|
-
_cls = None,
|
|
44
|
-
*,
|
|
45
|
-
syntax: str = syntax.double_braces,
|
|
46
|
-
mode: bool | str | None = None,
|
|
47
|
-
):
|
|
42
|
+
# main decorator factory
|
|
43
|
+
def datamap(_cls=None, *, syntax=syntax.double_braces, mode=None):
|
|
48
44
|
'''@datamap decorator with optional values'''
|
|
49
45
|
def wrap(cls):
|
|
50
46
|
cls.__syntax__ = syntax
|
|
@@ -56,16 +52,40 @@ def datamap(
|
|
|
56
52
|
if rules_obj is not None:
|
|
57
53
|
setattr(cls, 'rules', rules_obj)
|
|
58
54
|
return dataclass(frozen=False)(cls)
|
|
59
|
-
|
|
55
|
+
if _cls is not None:
|
|
56
|
+
return wrap(_cls)
|
|
57
|
+
return wrap
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# syntax-bound decorator factories
|
|
61
|
+
class _SyntaxFactory:
|
|
62
|
+
def __init__(self, syntax_value):
|
|
63
|
+
self._syntax = syntax_value
|
|
64
|
+
|
|
65
|
+
def __call__(self, _cls=None, **kwargs):
|
|
66
|
+
# Case 1: bare decorator: @datamap.colons
|
|
67
|
+
if _cls is not None and isinstance(_cls, type):
|
|
68
|
+
return datamap(_cls, syntax=self._syntax)
|
|
69
|
+
|
|
70
|
+
# Case 2: decorator with args: @datamap.colons(mode='config')
|
|
71
|
+
return datamap(syntax=self._syntax, **kwargs)
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def config(self):
|
|
75
|
+
# Case 3: @datamap.colons.config
|
|
76
|
+
return datamap(syntax=self._syntax, mode='config')
|
|
77
|
+
|
|
60
78
|
|
|
79
|
+
# build syntax shortcuts
|
|
80
|
+
datamap.double_braces = _SyntaxFactory(syntax.double_braces)
|
|
81
|
+
datamap.angles = _SyntaxFactory(syntax.angles)
|
|
82
|
+
datamap.dollars = _SyntaxFactory(syntax.dollars)
|
|
83
|
+
datamap.percents = _SyntaxFactory(syntax.percents)
|
|
84
|
+
datamap.at_tags = _SyntaxFactory(syntax.at_tags)
|
|
85
|
+
datamap.hash_tags = _SyntaxFactory(syntax.hash_tags)
|
|
86
|
+
datamap.pipe_tags = _SyntaxFactory(syntax.pipe_tags)
|
|
87
|
+
datamap.paren_dollar = _SyntaxFactory(syntax.paren_dollar)
|
|
88
|
+
datamap.colons = _SyntaxFactory(syntax.colons)
|
|
61
89
|
|
|
62
|
-
#
|
|
63
|
-
datamap.
|
|
64
|
-
datamap.angles = datamap(syntax=syntax.angles)
|
|
65
|
-
datamap.dollars = datamap(syntax=syntax.dollars)
|
|
66
|
-
datamap.percents = datamap(syntax=syntax.percents)
|
|
67
|
-
datamap.at_tags = datamap(syntax=syntax.at_tags)
|
|
68
|
-
datamap.hash_tags = datamap(syntax=syntax.hash_tags)
|
|
69
|
-
datamap.pipe_tags = datamap(syntax=syntax.pipe_tags)
|
|
70
|
-
datamap.paren_dollar = datamap(syntax=syntax.paren_dollar)
|
|
71
|
-
datamap.colons = datamap(syntax=syntax.colons)
|
|
90
|
+
# global mode shortcut
|
|
91
|
+
datamap.config = datamap(mode='config')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|