ominfra 0.0.0.dev142__py3-none-any.whl → 0.0.0.dev144__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.
- ominfra/manage/__init__.py +10 -0
- ominfra/manage/__main__.py +4 -0
- ominfra/manage/bootstrap.py +11 -0
- ominfra/manage/bootstrap_.py +18 -0
- ominfra/manage/commands/base.py +133 -1
- ominfra/manage/commands/execution.py +23 -0
- ominfra/manage/commands/inject.py +122 -0
- ominfra/manage/commands/marshal.py +26 -0
- ominfra/manage/config.py +10 -0
- ominfra/manage/deploy/__init__.py +0 -0
- ominfra/manage/deploy/command.py +23 -0
- ominfra/manage/deploy/inject.py +19 -0
- ominfra/manage/inject.py +58 -0
- ominfra/manage/main.py +64 -90
- ominfra/manage/marshal.py +12 -0
- ominfra/manage/remote/__init__.py +0 -0
- ominfra/manage/{protocol.py → remote/channel.py} +9 -2
- ominfra/manage/remote/config.py +12 -0
- ominfra/manage/remote/execution.py +193 -0
- ominfra/manage/remote/inject.py +29 -0
- ominfra/manage/{payload.py → remote/payload.py} +7 -1
- ominfra/manage/{spawning.py → remote/spawning.py} +29 -29
- ominfra/pyremote.py +40 -3
- ominfra/scripts/journald2aws.py +98 -50
- ominfra/scripts/manage.py +2025 -295
- ominfra/scripts/supervisor.py +99 -50
- ominfra/supervisor/inject.py +2 -1
- {ominfra-0.0.0.dev142.dist-info → ominfra-0.0.0.dev144.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev142.dist-info → ominfra-0.0.0.dev144.dist-info}/RECORD +33 -17
- {ominfra-0.0.0.dev142.dist-info → ominfra-0.0.0.dev144.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev142.dist-info → ominfra-0.0.0.dev144.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev142.dist-info → ominfra-0.0.0.dev144.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev142.dist-info → ominfra-0.0.0.dev144.dist-info}/top_level.txt +0 -0
    
        ominfra/scripts/journald2aws.py
    CHANGED
    
    | @@ -2166,21 +2166,26 @@ TODO: | |
| 2166 2166 | 
             
            ##
         | 
| 2167 2167 |  | 
| 2168 2168 |  | 
| 2169 | 
            +
            @dc.dataclass(frozen=True)
         | 
| 2170 | 
            +
            class ObjMarshalOptions:
         | 
| 2171 | 
            +
                raw_bytes: bool = False
         | 
| 2172 | 
            +
             | 
| 2173 | 
            +
             | 
| 2169 2174 | 
             
            class ObjMarshaler(abc.ABC):
         | 
| 2170 2175 | 
             
                @abc.abstractmethod
         | 
| 2171 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2176 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2172 2177 | 
             
                    raise NotImplementedError
         | 
| 2173 2178 |  | 
| 2174 2179 | 
             
                @abc.abstractmethod
         | 
| 2175 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2180 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2176 2181 | 
             
                    raise NotImplementedError
         | 
| 2177 2182 |  | 
| 2178 2183 |  | 
| 2179 2184 | 
             
            class NopObjMarshaler(ObjMarshaler):
         | 
| 2180 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2185 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2181 2186 | 
             
                    return o
         | 
| 2182 2187 |  | 
| 2183 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2188 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2184 2189 | 
             
                    return o
         | 
| 2185 2190 |  | 
| 2186 2191 |  | 
| @@ -2188,29 +2193,29 @@ class NopObjMarshaler(ObjMarshaler): | |
| 2188 2193 | 
             
            class ProxyObjMarshaler(ObjMarshaler):
         | 
| 2189 2194 | 
             
                m: ta.Optional[ObjMarshaler] = None
         | 
| 2190 2195 |  | 
| 2191 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2192 | 
            -
                    return check_not_none(self.m).marshal(o)
         | 
| 2196 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2197 | 
            +
                    return check_not_none(self.m).marshal(o, opts)
         | 
| 2193 2198 |  | 
| 2194 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2195 | 
            -
                    return check_not_none(self.m).unmarshal(o)
         | 
| 2199 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2200 | 
            +
                    return check_not_none(self.m).unmarshal(o, opts)
         | 
| 2196 2201 |  | 
| 2197 2202 |  | 
| 2198 2203 | 
             
            @dc.dataclass(frozen=True)
         | 
| 2199 2204 | 
             
            class CastObjMarshaler(ObjMarshaler):
         | 
| 2200 2205 | 
             
                ty: type
         | 
| 2201 2206 |  | 
| 2202 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2207 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2203 2208 | 
             
                    return o
         | 
| 2204 2209 |  | 
| 2205 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2210 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2206 2211 | 
             
                    return self.ty(o)
         | 
| 2207 2212 |  | 
| 2208 2213 |  | 
| 2209 2214 | 
             
            class DynamicObjMarshaler(ObjMarshaler):
         | 
| 2210 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2215 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2211 2216 | 
             
                    return marshal_obj(o)
         | 
| 2212 2217 |  | 
| 2213 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2218 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2214 2219 | 
             
                    return o
         | 
| 2215 2220 |  | 
| 2216 2221 |  | 
| @@ -2218,21 +2223,36 @@ class DynamicObjMarshaler(ObjMarshaler): | |
| 2218 2223 | 
             
            class Base64ObjMarshaler(ObjMarshaler):
         | 
| 2219 2224 | 
             
                ty: type
         | 
| 2220 2225 |  | 
| 2221 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2226 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2222 2227 | 
             
                    return base64.b64encode(o).decode('ascii')
         | 
| 2223 2228 |  | 
| 2224 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2229 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2225 2230 | 
             
                    return self.ty(base64.b64decode(o))
         | 
| 2226 2231 |  | 
| 2227 2232 |  | 
| 2233 | 
            +
            @dc.dataclass(frozen=True)
         | 
| 2234 | 
            +
            class BytesSwitchedObjMarshaler(ObjMarshaler):
         | 
| 2235 | 
            +
                m: ObjMarshaler
         | 
| 2236 | 
            +
             | 
| 2237 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2238 | 
            +
                    if opts.raw_bytes:
         | 
| 2239 | 
            +
                        return o
         | 
| 2240 | 
            +
                    return self.m.marshal(o, opts)
         | 
| 2241 | 
            +
             | 
| 2242 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2243 | 
            +
                    if opts.raw_bytes:
         | 
| 2244 | 
            +
                        return o
         | 
| 2245 | 
            +
                    return self.m.unmarshal(o, opts)
         | 
| 2246 | 
            +
             | 
| 2247 | 
            +
             | 
| 2228 2248 | 
             
            @dc.dataclass(frozen=True)
         | 
| 2229 2249 | 
             
            class EnumObjMarshaler(ObjMarshaler):
         | 
| 2230 2250 | 
             
                ty: type
         | 
| 2231 2251 |  | 
| 2232 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2252 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2233 2253 | 
             
                    return o.name
         | 
| 2234 2254 |  | 
| 2235 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2255 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2236 2256 | 
             
                    return self.ty.__members__[o]  # type: ignore
         | 
| 2237 2257 |  | 
| 2238 2258 |  | 
| @@ -2240,15 +2260,15 @@ class EnumObjMarshaler(ObjMarshaler): | |
| 2240 2260 | 
             
            class OptionalObjMarshaler(ObjMarshaler):
         | 
| 2241 2261 | 
             
                item: ObjMarshaler
         | 
| 2242 2262 |  | 
| 2243 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2263 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2244 2264 | 
             
                    if o is None:
         | 
| 2245 2265 | 
             
                        return None
         | 
| 2246 | 
            -
                    return self.item.marshal(o)
         | 
| 2266 | 
            +
                    return self.item.marshal(o, opts)
         | 
| 2247 2267 |  | 
| 2248 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2268 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2249 2269 | 
             
                    if o is None:
         | 
| 2250 2270 | 
             
                        return None
         | 
| 2251 | 
            -
                    return self.item.unmarshal(o)
         | 
| 2271 | 
            +
                    return self.item.unmarshal(o, opts)
         | 
| 2252 2272 |  | 
| 2253 2273 |  | 
| 2254 2274 | 
             
            @dc.dataclass(frozen=True)
         | 
| @@ -2257,11 +2277,11 @@ class MappingObjMarshaler(ObjMarshaler): | |
| 2257 2277 | 
             
                km: ObjMarshaler
         | 
| 2258 2278 | 
             
                vm: ObjMarshaler
         | 
| 2259 2279 |  | 
| 2260 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2261 | 
            -
                    return {self.km.marshal(k): self.vm.marshal(v) for k, v in o.items()}
         | 
| 2280 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2281 | 
            +
                    return {self.km.marshal(k, opts): self.vm.marshal(v, opts) for k, v in o.items()}
         | 
| 2262 2282 |  | 
| 2263 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2264 | 
            -
                    return self.ty((self.km.unmarshal(k), self.vm.unmarshal(v)) for k, v in o.items())
         | 
| 2283 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2284 | 
            +
                    return self.ty((self.km.unmarshal(k, opts), self.vm.unmarshal(v, opts)) for k, v in o.items())
         | 
| 2265 2285 |  | 
| 2266 2286 |  | 
| 2267 2287 | 
             
            @dc.dataclass(frozen=True)
         | 
| @@ -2269,11 +2289,11 @@ class IterableObjMarshaler(ObjMarshaler): | |
| 2269 2289 | 
             
                ty: type
         | 
| 2270 2290 | 
             
                item: ObjMarshaler
         | 
| 2271 2291 |  | 
| 2272 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2273 | 
            -
                    return [self.item.marshal(e) for e in o]
         | 
| 2292 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2293 | 
            +
                    return [self.item.marshal(e, opts) for e in o]
         | 
| 2274 2294 |  | 
| 2275 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2276 | 
            -
                    return self.ty(self.item.unmarshal(e) for e in o)
         | 
| 2295 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2296 | 
            +
                    return self.ty(self.item.unmarshal(e, opts) for e in o)
         | 
| 2277 2297 |  | 
| 2278 2298 |  | 
| 2279 2299 | 
             
            @dc.dataclass(frozen=True)
         | 
| @@ -2282,11 +2302,11 @@ class DataclassObjMarshaler(ObjMarshaler): | |
| 2282 2302 | 
             
                fs: ta.Mapping[str, ObjMarshaler]
         | 
| 2283 2303 | 
             
                nonstrict: bool = False
         | 
| 2284 2304 |  | 
| 2285 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2286 | 
            -
                    return {k: m.marshal(getattr(o, k)) for k, m in self.fs.items()}
         | 
| 2305 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2306 | 
            +
                    return {k: m.marshal(getattr(o, k), opts) for k, m in self.fs.items()}
         | 
| 2287 2307 |  | 
| 2288 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2289 | 
            -
                    return self.ty(**{k: self.fs[k].unmarshal(v) for k, v in o.items() if not self.nonstrict or k in self.fs})
         | 
| 2308 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2309 | 
            +
                    return self.ty(**{k: self.fs[k].unmarshal(v, opts) for k, v in o.items() if not self.nonstrict or k in self.fs})
         | 
| 2290 2310 |  | 
| 2291 2311 |  | 
| 2292 2312 | 
             
            @dc.dataclass(frozen=True)
         | 
| @@ -2306,50 +2326,50 @@ class PolymorphicObjMarshaler(ObjMarshaler): | |
| 2306 2326 | 
             
                        {i.tag: i for i in impls},
         | 
| 2307 2327 | 
             
                    )
         | 
| 2308 2328 |  | 
| 2309 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2329 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2310 2330 | 
             
                    impl = self.impls_by_ty[type(o)]
         | 
| 2311 | 
            -
                    return {impl.tag: impl.m.marshal(o)}
         | 
| 2331 | 
            +
                    return {impl.tag: impl.m.marshal(o, opts)}
         | 
| 2312 2332 |  | 
| 2313 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2333 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2314 2334 | 
             
                    [(t, v)] = o.items()
         | 
| 2315 2335 | 
             
                    impl = self.impls_by_tag[t]
         | 
| 2316 | 
            -
                    return impl.m.unmarshal(v)
         | 
| 2336 | 
            +
                    return impl.m.unmarshal(v, opts)
         | 
| 2317 2337 |  | 
| 2318 2338 |  | 
| 2319 2339 | 
             
            @dc.dataclass(frozen=True)
         | 
| 2320 2340 | 
             
            class DatetimeObjMarshaler(ObjMarshaler):
         | 
| 2321 2341 | 
             
                ty: type
         | 
| 2322 2342 |  | 
| 2323 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2343 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2324 2344 | 
             
                    return o.isoformat()
         | 
| 2325 2345 |  | 
| 2326 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2346 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2327 2347 | 
             
                    return self.ty.fromisoformat(o)  # type: ignore
         | 
| 2328 2348 |  | 
| 2329 2349 |  | 
| 2330 2350 | 
             
            class DecimalObjMarshaler(ObjMarshaler):
         | 
| 2331 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2351 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2332 2352 | 
             
                    return str(check_isinstance(o, decimal.Decimal))
         | 
| 2333 2353 |  | 
| 2334 | 
            -
                def unmarshal(self, v: ta.Any) -> ta.Any:
         | 
| 2354 | 
            +
                def unmarshal(self, v: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2335 2355 | 
             
                    return decimal.Decimal(check_isinstance(v, str))
         | 
| 2336 2356 |  | 
| 2337 2357 |  | 
| 2338 2358 | 
             
            class FractionObjMarshaler(ObjMarshaler):
         | 
| 2339 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2359 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2340 2360 | 
             
                    fr = check_isinstance(o, fractions.Fraction)
         | 
| 2341 2361 | 
             
                    return [fr.numerator, fr.denominator]
         | 
| 2342 2362 |  | 
| 2343 | 
            -
                def unmarshal(self, v: ta.Any) -> ta.Any:
         | 
| 2363 | 
            +
                def unmarshal(self, v: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2344 2364 | 
             
                    num, denom = check_isinstance(v, list)
         | 
| 2345 2365 | 
             
                    return fractions.Fraction(num, denom)
         | 
| 2346 2366 |  | 
| 2347 2367 |  | 
| 2348 2368 | 
             
            class UuidObjMarshaler(ObjMarshaler):
         | 
| 2349 | 
            -
                def marshal(self, o: ta.Any) -> ta.Any:
         | 
| 2369 | 
            +
                def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2350 2370 | 
             
                    return str(o)
         | 
| 2351 2371 |  | 
| 2352 | 
            -
                def unmarshal(self, o: ta.Any) -> ta.Any:
         | 
| 2372 | 
            +
                def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
         | 
| 2353 2373 | 
             
                    return uuid.UUID(o)
         | 
| 2354 2374 |  | 
| 2355 2375 |  | 
| @@ -2359,7 +2379,7 @@ class UuidObjMarshaler(ObjMarshaler): | |
| 2359 2379 | 
             
            _DEFAULT_OBJ_MARSHALERS: ta.Dict[ta.Any, ObjMarshaler] = {
         | 
| 2360 2380 | 
             
                **{t: NopObjMarshaler() for t in (type(None),)},
         | 
| 2361 2381 | 
             
                **{t: CastObjMarshaler(t) for t in (int, float, str, bool)},
         | 
| 2362 | 
            -
                **{t: Base64ObjMarshaler(t) for t in (bytes, bytearray)},
         | 
| 2382 | 
            +
                **{t: BytesSwitchedObjMarshaler(Base64ObjMarshaler(t)) for t in (bytes, bytearray)},
         | 
| 2363 2383 | 
             
                **{t: IterableObjMarshaler(t, DynamicObjMarshaler()) for t in (list, tuple, set, frozenset)},
         | 
| 2364 2384 | 
             
                **{t: MappingObjMarshaler(t, DynamicObjMarshaler(), DynamicObjMarshaler()) for t in (dict,)},
         | 
| 2365 2385 |  | 
| @@ -2392,12 +2412,16 @@ class ObjMarshalerManager: | |
| 2392 2412 | 
             
                def __init__(
         | 
| 2393 2413 | 
             
                        self,
         | 
| 2394 2414 | 
             
                        *,
         | 
| 2415 | 
            +
                        default_options: ObjMarshalOptions = ObjMarshalOptions(),
         | 
| 2416 | 
            +
             | 
| 2395 2417 | 
             
                        default_obj_marshalers: ta.Dict[ta.Any, ObjMarshaler] = _DEFAULT_OBJ_MARSHALERS,  # noqa
         | 
| 2396 2418 | 
             
                        generic_mapping_types: ta.Dict[ta.Any, type] = _OBJ_MARSHALER_GENERIC_MAPPING_TYPES,  # noqa
         | 
| 2397 2419 | 
             
                        generic_iterable_types: ta.Dict[ta.Any, type] = _OBJ_MARSHALER_GENERIC_ITERABLE_TYPES,  # noqa
         | 
| 2398 2420 | 
             
                ) -> None:
         | 
| 2399 2421 | 
             
                    super().__init__()
         | 
| 2400 2422 |  | 
| 2423 | 
            +
                    self._default_options = default_options
         | 
| 2424 | 
            +
             | 
| 2401 2425 | 
             
                    self._obj_marshalers = dict(default_obj_marshalers)
         | 
| 2402 2426 | 
             
                    self._generic_mapping_types = generic_mapping_types
         | 
| 2403 2427 | 
             
                    self._generic_iterable_types = generic_iterable_types
         | 
| @@ -2506,11 +2530,35 @@ class ObjMarshalerManager: | |
| 2506 2530 |  | 
| 2507 2531 | 
             
                #
         | 
| 2508 2532 |  | 
| 2509 | 
            -
                def marshal_obj( | 
| 2510 | 
            -
             | 
| 2511 | 
            -
             | 
| 2512 | 
            -
             | 
| 2513 | 
            -
             | 
| 2533 | 
            +
                def marshal_obj(
         | 
| 2534 | 
            +
                        self,
         | 
| 2535 | 
            +
                        o: ta.Any,
         | 
| 2536 | 
            +
                        ty: ta.Any = None,
         | 
| 2537 | 
            +
                        opts: ta.Optional[ObjMarshalOptions] = None,
         | 
| 2538 | 
            +
                ) -> ta.Any:
         | 
| 2539 | 
            +
                    m = self.get_obj_marshaler(ty if ty is not None else type(o))
         | 
| 2540 | 
            +
                    return m.marshal(o, opts or self._default_options)
         | 
| 2541 | 
            +
             | 
| 2542 | 
            +
                def unmarshal_obj(
         | 
| 2543 | 
            +
                        self,
         | 
| 2544 | 
            +
                        o: ta.Any,
         | 
| 2545 | 
            +
                        ty: ta.Union[ta.Type[T], ta.Any],
         | 
| 2546 | 
            +
                        opts: ta.Optional[ObjMarshalOptions] = None,
         | 
| 2547 | 
            +
                ) -> T:
         | 
| 2548 | 
            +
                    m = self.get_obj_marshaler(ty)
         | 
| 2549 | 
            +
                    return m.unmarshal(o, opts or self._default_options)
         | 
| 2550 | 
            +
             | 
| 2551 | 
            +
                def roundtrip_obj(
         | 
| 2552 | 
            +
                        self,
         | 
| 2553 | 
            +
                        o: ta.Any,
         | 
| 2554 | 
            +
                        ty: ta.Any = None,
         | 
| 2555 | 
            +
                        opts: ta.Optional[ObjMarshalOptions] = None,
         | 
| 2556 | 
            +
                ) -> ta.Any:
         | 
| 2557 | 
            +
                    if ty is None:
         | 
| 2558 | 
            +
                        ty = type(o)
         | 
| 2559 | 
            +
                    m: ta.Any = self.marshal_obj(o, ty, opts)
         | 
| 2560 | 
            +
                    u: ta.Any = self.unmarshal_obj(m, ty, opts)
         | 
| 2561 | 
            +
                    return u
         | 
| 2514 2562 |  | 
| 2515 2563 |  | 
| 2516 2564 | 
             
            ##
         |