omlish 0.0.0.dev287__py3-none-any.whl → 0.0.0.dev288__py3-none-any.whl

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.
omlish/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev287'
2
- __revision__ = 'b5569962801bfa1ab3457339502eb364ee51bb0e'
1
+ __version__ = '0.0.0.dev288'
2
+ __revision__ = 'e2dff59656486617fd3e4b01cd91263482b1dfa1'
3
3
 
4
4
 
5
5
  #
@@ -0,0 +1,7 @@
1
+ """
2
+ TODO:
3
+ - inline polymorph: 'ami: foo' -> 'image: {'ami': {'name': 'foo'}}
4
+ - parse duration and size settings, "512k" or "10 seconds"
5
+ - includes
6
+ - substitutions ("foo" : ${bar}, "foo" : Hello ${who})
7
+ """
@@ -2,9 +2,11 @@ import collections
2
2
  import dataclasses as dc
3
3
  import typing as ta
4
4
 
5
+ from .... import lang
5
6
  from ...specs import CoerceFn
6
7
  from ...specs import ReprFn
7
8
  from ...specs import ValidateFn
9
+ from .metadata import _ExtraFieldParamsMetadata
8
10
  from .metadata import extra_field_params
9
11
 
10
12
 
@@ -29,14 +31,17 @@ def field(
29
31
  repr_fn: ReprFn | None = None,
30
32
  repr_priority: int | None = None,
31
33
  ) -> ta.Any:
32
- efp = extra_field_params(
33
- coerce=coerce,
34
- validate=validate,
35
- check_type=check_type,
36
- override=override,
37
- repr_fn=repr_fn,
38
- repr_priority=repr_priority,
39
- )
34
+ efp = extra_field_params(**{
35
+ **(metadata.get(_ExtraFieldParamsMetadata) or {} if metadata is not None else {}),
36
+ **lang.opt_kw(
37
+ coerce=coerce,
38
+ validate=validate,
39
+ check_type=check_type,
40
+ override=override,
41
+ repr_fn=repr_fn,
42
+ repr_priority=repr_priority,
43
+ ),
44
+ })
40
45
 
41
46
  md: ta.Any = metadata
42
47
  if md is None:
@@ -186,7 +186,12 @@ def method(func=None, /, *, installable=False): # noqa
186
186
  return Method(func, **kw)
187
187
 
188
188
 
189
- def install_method(mth: ta.Any, *, name: str | None = None) -> ta.Callable[[T], T]:
189
+ def install_method(
190
+ mth: ta.Any,
191
+ *,
192
+ name: str | None = None,
193
+ on: type | None = None,
194
+ ) -> ta.Callable[[T], T]:
190
195
  mth = check.isinstance(mth, Method)
191
196
  if not mth._installable: # noqa
192
197
  raise TypeError(f'Method not installable: {mth}')
@@ -196,7 +201,12 @@ def install_method(mth: ta.Any, *, name: str | None = None) -> ta.Callable[[T],
196
201
  if a is None:
197
202
  a = fn.__name__
198
203
 
199
- cls: type = check.not_none(mth._owner) # noqa
204
+ owner: type = check.not_none(mth._owner) # noqa
205
+ if on is None:
206
+ cls = owner
207
+ else:
208
+ cls = check.issubclass(on, owner)
209
+
200
210
  check.arg(not hasattr(cls, a))
201
211
  setattr(cls, a, fn)
202
212
 
omlish/metadata.py CHANGED
@@ -125,7 +125,7 @@ class DecoratorObjectMetadata(ObjectMetadata, lang.Abstract):
125
125
  tts = tuple(object_metadata_target_types)
126
126
  for tt in tts:
127
127
  check.issubclass(tt, _VALID_OBJECT_METADATA_TARGET_TYPES)
128
- setattr(cls, '_OBJECT_METADATA_TARGET_TYPES', tts)
128
+ cls._OBJECT_METADATA_TARGET_TYPES = tts
129
129
 
130
130
  def __call__(self, obj: T) -> T:
131
131
  tgt: ta.Any = obj
omlish/text/templating.py CHANGED
@@ -94,7 +94,7 @@ class MinjaTemplater(Templater):
94
94
 
95
95
  @dc.dataclass(frozen=True)
96
96
  class JinjaTemplater(Templater):
97
- tmpl: jinja2.Template
97
+ tmpl: 'jinja2.Template'
98
98
 
99
99
  def render(self, ctx: Templater.Context) -> str:
100
100
  return self.tmpl.render(**(ctx.env or {}))
@@ -104,7 +104,7 @@ class JinjaTemplater(Templater):
104
104
  cls,
105
105
  src: str,
106
106
  *,
107
- env: jinja2.Environment | None = None,
107
+ env: ta.Optional['jinja2.Environment'] = None,
108
108
  **kwargs: ta.Any,
109
109
  ) -> 'JinjaTemplater':
110
110
  if env is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev287
3
+ Version: 0.0.0.dev288
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=pjGUyLHaoWpPqRP3jz2u1fC1qoRc2lvrEcpU_Ax2tdg,8253
2
- omlish/__about__.py,sha256=i-F-KstjC74KdNV4E5DhZUVUlbu5XeNyaWrDZaDrQtw,3444
2
+ omlish/__about__.py,sha256=g-UF2LN-CeZcgCNLTow-TkCSBCCJjs6HkfC_hRBUQ8o,3444
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
@@ -8,7 +8,7 @@ omlish/datetimes.py,sha256=iFqCki3MKmBq_ZX-03cW4KE6AsR_pUJCWML2ifBLtdU,2157
8
8
  omlish/defs.py,sha256=-4UuZoJUUNO_bZ6eSSdhR4CK4NKN2Wwr1FfUvfTF--8,4918
9
9
  omlish/dynamic.py,sha256=zy0oO70_Vlh5dW8Nwav_O9bhIzQ6L16UgSuKR6y43VU,6526
10
10
  omlish/libc.py,sha256=8K4c66YV1ziJerl5poAAYCmsV-VSsHkT3EHhPW04ufg,15639
11
- omlish/metadata.py,sha256=HvZ6ItMpEmnE-X2d5Q6J17sBiG_qOyWB8DJrS9RFZpY,3604
11
+ omlish/metadata.py,sha256=-noAyXT-7wV0SXul6wV1fPe7EYKxluuuYh1VmM39IPk,3593
12
12
  omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
13
13
  omlish/shlex.py,sha256=rlbgHWxjwpkCBRphOPqSIN_KD6qWJMLldNJUILulKT0,253
14
14
  omlish/sync.py,sha256=-2gVJZFl8hvp7jvrnX8GcZVOecqAym6AcyK1QtMR9Ic,2979
@@ -185,7 +185,7 @@ omlish/configs/formats.py,sha256=RJw4Rzp7vlTd5YyAvpAoruQnk45v8dGPtPWwqH7aYyE,530
185
185
  omlish/configs/nginx.py,sha256=XuX9yyb0_MwkJ8esKiMS9gFkqHUPza_uCprhnWykNy8,2051
186
186
  omlish/configs/shadow.py,sha256=-R5nbevC4pFgqDPYOCCIqNcusgXsMWlRIUOEG0HBoJg,2228
187
187
  omlish/configs/types.py,sha256=t5_32MVRSKxbxor1hl1wRGKYm75F6Atisd_RYsN5ELU,103
188
- omlish/configs/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
+ omlish/configs/processing/__init__.py,sha256=eUBm0L6oZuwwM4vEuYx0pcCNdSTXaF7luur7jQz1qoc,210
189
189
  omlish/configs/processing/all.py,sha256=L23FOGn24As3jcB3B11R7PcHWXbYjkItrNq5ZEylPjA,784
190
190
  omlish/configs/processing/flattening.py,sha256=1duZH5zbrGuoYqaJco5LN5qx6e76QP5pHbIyItkQsFY,5021
191
191
  omlish/configs/processing/inheritance.py,sha256=lFD8eWRE0cG0Z3-eCu7pMsP2skWhUNaoAtWi9fNfn8k,1218
@@ -219,7 +219,7 @@ omlish/dataclasses/api/classes/metadata.py,sha256=2YafXunxqbqnHIdp5gsiGLyH7cWg9F
219
219
  omlish/dataclasses/api/classes/params.py,sha256=qmHuGC4vB8o-7cnRXllVz_WNprx2fsyrNzPY2mYC5FM,1680
220
220
  omlish/dataclasses/api/fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
221
  omlish/dataclasses/api/fields/building.py,sha256=YVAJZ2c318vK0YWz9VU8_MdjA5qNjqsI3N85K-bD0TI,3314
222
- omlish/dataclasses/api/fields/constructor.py,sha256=dRnVR5srD-8nNaMxdkWh0oFPINwOu-D7n4QItI6AWPs,1310
222
+ omlish/dataclasses/api/fields/constructor.py,sha256=T2GeczTz9uy2EOTDlU4VJoiXp-I6jvlxnYXChvQqHxk,1533
223
223
  omlish/dataclasses/api/fields/conversion.py,sha256=Pye4KOON78CBgDzwTqNb5fx8wE7uvlKcwVfQ2nhDzrM,5134
224
224
  omlish/dataclasses/api/fields/metadata.py,sha256=4hGRvG96qPNeipbnHlnbDNWqCANGCuE9BmjKUzTEzRQ,1689
225
225
  omlish/dataclasses/concerns/__init__.py,sha256=4Goga5wAOAbK6KcoHWC8jDC8M9ywgH7PfmXXxgCYCC8,208
@@ -292,7 +292,7 @@ omlish/dispatch/_dispatch3.py,sha256=9Zjd7bINAC3keiaBdssc4v5dY0-8OI6XooV2DR9U7Z0
292
292
  omlish/dispatch/dispatch.py,sha256=KA5l49AiGLRjp4J7RDJW9RiDp9WUD1ewR1AOPEF8g38,3062
293
293
  omlish/dispatch/functions.py,sha256=cwNzGIg2ZIalEgn9I03cnJVbMTHjWloyDTaowlO3UPs,1524
294
294
  omlish/dispatch/impls.py,sha256=K_okKvpZml4NkTHJmTVyMQSrIaIJcqTEgkreGwukaOw,1895
295
- omlish/dispatch/methods.py,sha256=7jNKvwGNW9CJRTMDZyedmrWJN7Y9-ToI7YOAQ8VJu5Q,6786
295
+ omlish/dispatch/methods.py,sha256=K5w9Bb4jjCEpz3H95VMsv8ITXSO_7F6Jp5K5Fcd4gjQ,6955
296
296
  omlish/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
297
297
  omlish/docker/all.py,sha256=xXRgJgLGPwAtr7bDMJ_Dp9jTfOwfGvohNhc6LsoELJc,514
298
298
  omlish/docker/cli.py,sha256=gtb9kitVfGnd4cr587NsVVk8D5Ok5y5SAsqD_SwGrSA,2565
@@ -819,7 +819,7 @@ omlish/text/mangle.py,sha256=d7j2_HPxoxF5VrLD1TShOSfnhBLH_-lQe_OH2kl0yHg,2790
819
819
  omlish/text/minja.py,sha256=e7XiY8IvF4Df-7hxhdC_qizHm9T4SIbFJR7enUg_Zmc,7252
820
820
  omlish/text/parts.py,sha256=Q9NvoyEGQKIWgiPD4D_Qc66cWAuyEKE033dT9m7c3Wk,6662
821
821
  omlish/text/random.py,sha256=8feS5JE_tSjYlMl-lp0j93kCfzBae9AM2cXlRLebXMA,199
822
- omlish/text/templating.py,sha256=UyYIs0wMigCDws0XfO3mYkJFH0-tO1IBaxWL7v2J3pw,2417
822
+ omlish/text/templating.py,sha256=DE_-JysSr92hJ6ITA4BRoUGsocasYTfXAZLsyyAGLgw,2427
823
823
  omlish/text/go/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
824
824
  omlish/text/go/quoting.py,sha256=N9EYdnFdEX_A8fOviH-1w4jwV3XOQ7VU2WsoUNubYVY,9137
825
825
  omlish/typedvalues/__init__.py,sha256=c3IQmRneMmH6JRcafprqmBILWD89b-IyIll6MgahGCI,562
@@ -830,9 +830,9 @@ omlish/typedvalues/holder.py,sha256=4SwRezsmuDDEO5gENGx8kTm30pblF5UktoEAu02i-Gk,
830
830
  omlish/typedvalues/marshal.py,sha256=Rr-4DZ90BoD5Z9gT18QhZH2yMA3-gPJBK8GUrGkp8VA,4245
831
831
  omlish/typedvalues/reflect.py,sha256=y_7IY8_4cLVRvD3ug-_-cDaO5RtzC1rLVFzkeAPALf8,683
832
832
  omlish/typedvalues/values.py,sha256=Q_5IiQM3Vka4wGVd-scaslb4-oCMjFcIOksIrKE-JIM,1229
833
- omlish-0.0.0.dev287.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
834
- omlish-0.0.0.dev287.dist-info/METADATA,sha256=2lOtfXV-sPk2hcxlOFk_TruhqdiAsg_MTdrhMSxI0o0,4316
835
- omlish-0.0.0.dev287.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
836
- omlish-0.0.0.dev287.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
837
- omlish-0.0.0.dev287.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
838
- omlish-0.0.0.dev287.dist-info/RECORD,,
833
+ omlish-0.0.0.dev288.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
834
+ omlish-0.0.0.dev288.dist-info/METADATA,sha256=4tffbaEGdkT2GjI6KS2xO1j0e9LNg6UZKItk6VkJw4A,4316
835
+ omlish-0.0.0.dev288.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
836
+ omlish-0.0.0.dev288.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
837
+ omlish-0.0.0.dev288.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
838
+ omlish-0.0.0.dev288.dist-info/RECORD,,