Major fixes and new features
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
35
venv/lib/python3.12/site-packages/mypy/split_namespace.py
Normal file
35
venv/lib/python3.12/site-packages/mypy/split_namespace.py
Normal file
@@ -0,0 +1,35 @@
|
||||
"""Split namespace for argparse to allow separating options by prefix.
|
||||
|
||||
We use this to direct some options to an Options object and some to a
|
||||
regular namespace.
|
||||
"""
|
||||
|
||||
# In its own file largely because mypyc doesn't support its use of
|
||||
# __getattr__/__setattr__ and has some issues with __dict__
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
from typing import Any
|
||||
|
||||
|
||||
class SplitNamespace(argparse.Namespace):
|
||||
def __init__(self, standard_namespace: object, alt_namespace: object, alt_prefix: str) -> None:
|
||||
self.__dict__["_standard_namespace"] = standard_namespace
|
||||
self.__dict__["_alt_namespace"] = alt_namespace
|
||||
self.__dict__["_alt_prefix"] = alt_prefix
|
||||
|
||||
def _get(self) -> tuple[Any, Any]:
|
||||
return (self._standard_namespace, self._alt_namespace)
|
||||
|
||||
def __setattr__(self, name: str, value: Any) -> None:
|
||||
if name.startswith(self._alt_prefix):
|
||||
setattr(self._alt_namespace, name[len(self._alt_prefix) :], value)
|
||||
else:
|
||||
setattr(self._standard_namespace, name, value)
|
||||
|
||||
def __getattr__(self, name: str) -> Any:
|
||||
if name.startswith(self._alt_prefix):
|
||||
return getattr(self._alt_namespace, name[len(self._alt_prefix) :])
|
||||
else:
|
||||
return getattr(self._standard_namespace, name)
|
||||
Reference in New Issue
Block a user