mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-25 00:13:27 +08:00
asset-package work and tidying
This commit is contained in:
parent
86748c5c07
commit
8ab596e2b5
68
.efrocachemap
generated
68
.efrocachemap
generated
@ -421,9 +421,9 @@
|
||||
"build/assets/ba_data/audio/zoeOw.ogg": "74befe45a8417e95b6a2233c51992a26",
|
||||
"build/assets/ba_data/audio/zoePickup01.ogg": "48ab8cddfcde36a750856f3f81dd20c8",
|
||||
"build/assets/ba_data/audio/zoeScream01.ogg": "2b468aedfa8741090247f04eb9e6df55",
|
||||
"build/assets/ba_data/data/langdata.json": "faffc0854bc4c34f4ef427404ec75c4d",
|
||||
"build/assets/ba_data/data/languages/arabic.json": "5c27239be3d4f8daefd9f3bd7e99ff8d",
|
||||
"build/assets/ba_data/data/languages/belarussian.json": "260d190aae3282a726b4a27019972d58",
|
||||
"build/assets/ba_data/data/langdata.json": "7e73466677344c1722aebe94003360d5",
|
||||
"build/assets/ba_data/data/languages/arabic.json": "05040616cb7585e3cce2e9acba96aa75",
|
||||
"build/assets/ba_data/data/languages/belarussian.json": "3d5523d0004293aa2df02f3f6f3b84f8",
|
||||
"build/assets/ba_data/data/languages/chinese.json": "2f67c6b127ae85492ac552af1a91e95a",
|
||||
"build/assets/ba_data/data/languages/chinesetraditional.json": "319565f8a15667488f48dbce59278e39",
|
||||
"build/assets/ba_data/data/languages/croatian.json": "e671b9d0c012be1a30f9c15eb1b81860",
|
||||
@ -432,7 +432,7 @@
|
||||
"build/assets/ba_data/data/languages/dutch.json": "b0900d572c9141897d53d6574c471343",
|
||||
"build/assets/ba_data/data/languages/english.json": "9754e816d3bc3214b7e809950d642309",
|
||||
"build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880",
|
||||
"build/assets/ba_data/data/languages/filipino.json": "920fc429ec9b587edc2c6294fffada71",
|
||||
"build/assets/ba_data/data/languages/filipino.json": "9c04219ceeb065b3bc751e6ab3731def",
|
||||
"build/assets/ba_data/data/languages/french.json": "ee2a81129519d7030a617308da8c9195",
|
||||
"build/assets/ba_data/data/languages/german.json": "198b9860c5b9df7b8e3e30b03d8755cb",
|
||||
"build/assets/ba_data/data/languages/gibberish.json": "3e68d809bd6ede3b9e2c57c147737e42",
|
||||
@ -443,8 +443,8 @@
|
||||
"build/assets/ba_data/data/languages/italian.json": "e1d69eb1eec31442bf981121c7cfaf17",
|
||||
"build/assets/ba_data/data/languages/korean.json": "4e3524327a0174250aff5e1ef4c0c597",
|
||||
"build/assets/ba_data/data/languages/malay.json": "f6ce0426d03a62612e3e436ed5d1be1f",
|
||||
"build/assets/ba_data/data/languages/persian.json": "8bd6251e46c8ca7fcd075d989e79f0d9",
|
||||
"build/assets/ba_data/data/languages/polish.json": "82ad9f88c7d0499a049d2008c85aa6f1",
|
||||
"build/assets/ba_data/data/languages/persian.json": "c209f8f6d3b3dd40d5ca9d36fe0721fe",
|
||||
"build/assets/ba_data/data/languages/polish.json": "59ff98adfb4f515f00769d1ec229c232",
|
||||
"build/assets/ba_data/data/languages/portuguese.json": "615a59bd03f84659158d9f2608a4ab21",
|
||||
"build/assets/ba_data/data/languages/romanian.json": "b3e46efd6f869dbd78014570e037c290",
|
||||
"build/assets/ba_data/data/languages/russian.json": "41e06eda170fb5960393dd6b58d046e1",
|
||||
@ -4038,26 +4038,26 @@
|
||||
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
|
||||
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
|
||||
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "9ac7439035bfc6e58c09fd333be7bf32",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "0a6c29a617a2a7f75b5ea74ae31c00ba",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "090c580f73c18253ad03fa7bdb5410c6",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "fb8aa86a244b28b683ea8148f63800e2",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "a6fb7f0164a400a8bce7c7cb2327f41b",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "c6e86f716993e4db6d40b387c1887bf9",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "fdb8c01b631d5475740f0101b301ff03",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "8c58b1dff5c711bf8dfe6bcc0c033e02",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "68b0c339ca50a9d498f044d1b9c25665",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "4bd338604cf6288636422ef3b62e5d44",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "d585e0b8f0a2a1edefd52b9d9fb2fd40",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "316e826a593499760060c1c2c09fe278",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "7070657c31c247dac4d1b14607a8435f",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "606f7ed5a63fad5acbdba62b8f2e953f",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "ccfa7d16a67a8b5e28b832861433b536",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "f98f149307ee2096aa5c82fb666d96b2",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "b3d826dae3e8105e5507a50d53142b56",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "ffc3963828ad90d6da6237aa374909b9",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "21b69244af53ac854f513dbe574e9281",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "92edda56e8cc74c3552f87d766a83a8c",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "bfd2a477d0322f6fb74656f9a0dedae0",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "0d2f166f927785c9abbd7911b1940f4b",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "b0fb1c006ebf24c74084e94308f4dd0a",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "a5d29314d5853e1a904f4b3ae48d6f21",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "d7182ecdcb53449fe67d54af9c088888",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "7bb195668fa054394d03abf4b3ed2952",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "22e16d10a41b36c5db277ec717488596",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "baa648fe7e976df9155b5e0994d334b6",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "8c9b4d2626ce4674efa4a37d8cff6857",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "121545e12decb46689681cda8721f708",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "c72adfcd1ccc8bfc412e62efa98a8e14",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "90ad3bc819d90bcfeb5563692a9606db",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "3ef248a8d70eaaedc6783898651bb668",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "2cdfa98b7b372ee3d19446cf95ebb8ef",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "715854042fe4f2470d67593bbad571d1",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "675ec134554280a37aaa2951adf48dac",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "c5b6443b911d21f020a8ff9c7bf23e98",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "3ce98ab785f8c7656f3d7b2ee4491975",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "80c142f30aa63759bbe4d017f83d5977",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "029360ae2dba2279d41022647afd0c52",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "9162b53189b80d4e5938cd142acd2a1a",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "2226d0e2d34051d962320c86464f3a2d",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "9162b53189b80d4e5938cd142acd2a1a",
|
||||
@ -4074,14 +4074,14 @@
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "299b6c4b83966040618b27563b700c2a",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "08c2f91d086e6f3fa73ebc299112358a",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "299b6c4b83966040618b27563b700c2a",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "50245294e53c993dd3a25db2868f22e0",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "84d98c5f0dbab599afd67a0fcf8e28d8",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "08f5b3b61056a65d7f39009426d08c48",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "3e4073e334438027320f3fcc2268357f",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "51ac5f179b08a8892580ba915452b40a",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "a61545d3d93c89c5298536c133745c5d",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "1a0c96f28a75527e975af1c023716f0f",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "0725628caf7f5baa9a59d1022f62a441",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "ec11bac6a42f25e02cd218928625c9b7",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "4dc943a3a551a0615fe33c56ac8b5bd7",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "457df093184e56955a1170340e57cf43",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "108e96eeda885404682b0762552e0f61",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "11691eb6e947ee36f315c979a305533a",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "bdfa516a57bd798e482d20ebd074488c",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "f25bf000209c0d97a852c71afa186c3a",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "d2aae5f895446cd23f2c5bb0656c79a3",
|
||||
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
|
||||
"src/assets/ba_data/python/babase/_mgen/enums.py": "5548f407d97e380069f6c596c4e36cd7",
|
||||
"src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d",
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
### 1.7.35 (build 21880, api 8, 2024-05-19)
|
||||
### 1.7.35 (build 21882, api 8, 2024-05-29)
|
||||
- Fixed an issue where the engine would block at exit on some version of Linux
|
||||
until Ctrl-D was pressed in the calling terminal.
|
||||
- V2 accounts have been around for a while now, so the old V1 device login
|
||||
|
||||
@ -6,16 +6,16 @@ mypy==1.10.0
|
||||
pbxproj==4.1.0
|
||||
pdoc==14.5.0
|
||||
pur==7.3.1
|
||||
pylint==3.2.1
|
||||
pylint==3.2.2
|
||||
pylsp-mypy==0.6.8
|
||||
pytest==8.2.0
|
||||
pytest==8.2.1
|
||||
python-daemon==3.0.1
|
||||
python-lsp-black==2.0.0
|
||||
python-lsp-server==1.11.0
|
||||
requests==2.31.0
|
||||
requests==2.32.3
|
||||
Sphinx==7.3.7
|
||||
tomlkit==0.12.5
|
||||
types-certifi==2021.10.8.3
|
||||
types-filelock==3.2.7
|
||||
types-requests==2.31.0.20240406
|
||||
typing_extensions==4.11.0
|
||||
types-requests==2.32.0.20240523
|
||||
typing_extensions==4.12.0
|
||||
|
||||
@ -116,6 +116,10 @@
|
||||
"ba_data/python/bacommon/net.py",
|
||||
"ba_data/python/bacommon/servermanager.py",
|
||||
"ba_data/python/bacommon/transfer.py",
|
||||
"ba_data/python/bacommon/workspace/__init__.py",
|
||||
"ba_data/python/bacommon/workspace/__pycache__/__init__.cpython-312.opt-1.pyc",
|
||||
"ba_data/python/bacommon/workspace/__pycache__/assetsv1.cpython-312.opt-1.pyc",
|
||||
"ba_data/python/bacommon/workspace/assetsv1.py",
|
||||
"ba_data/python/baenv.py",
|
||||
"ba_data/python/baplus/__init__.py",
|
||||
"ba_data/python/baplus/__pycache__/__init__.cpython-312.opt-1.pyc",
|
||||
|
||||
@ -733,6 +733,8 @@ SCRIPT_TARGETS_PY_PUBLIC_TOOLS = \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/net.py \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/servermanager.py \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/transfer.py \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/workspace/__init__.py \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/workspace/assetsv1.py \
|
||||
$(BUILD_DIR)/ba_data/python/efro/__init__.py \
|
||||
$(BUILD_DIR)/ba_data/python/efro/call.py \
|
||||
$(BUILD_DIR)/ba_data/python/efro/cloudshell.py \
|
||||
@ -768,6 +770,8 @@ SCRIPT_TARGETS_PYC_PUBLIC_TOOLS = \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/__pycache__/net.cpython-312.opt-1.pyc \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/__pycache__/servermanager.cpython-312.opt-1.pyc \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/__pycache__/transfer.cpython-312.opt-1.pyc \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/workspace/__pycache__/__init__.cpython-312.opt-1.pyc \
|
||||
$(BUILD_DIR)/ba_data/python/bacommon/workspace/__pycache__/assetsv1.cpython-312.opt-1.pyc \
|
||||
$(BUILD_DIR)/ba_data/python/efro/__pycache__/__init__.cpython-312.opt-1.pyc \
|
||||
$(BUILD_DIR)/ba_data/python/efro/__pycache__/call.cpython-312.opt-1.pyc \
|
||||
$(BUILD_DIR)/ba_data/python/efro/__pycache__/cloudshell.cpython-312.opt-1.pyc \
|
||||
|
||||
@ -52,7 +52,7 @@ if TYPE_CHECKING:
|
||||
|
||||
# Build number and version of the ballistica binary we expect to be
|
||||
# using.
|
||||
TARGET_BALLISTICA_BUILD = 21880
|
||||
TARGET_BALLISTICA_BUILD = 21882
|
||||
TARGET_BALLISTICA_VERSION = '1.7.35'
|
||||
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
|
||||
namespace ballistica {
|
||||
|
||||
// These are set automatically via script; don't modify them here.
|
||||
const int kEngineBuildNumber = 21880;
|
||||
const int kEngineBuildNumber = 21882;
|
||||
const char* kEngineVersion = "1.7.35";
|
||||
const int kEngineApiVersion = 8;
|
||||
|
||||
|
||||
3
tools/bacommon/workspace/__init__.py
Normal file
3
tools/bacommon/workspace/__init__.py
Normal file
@ -0,0 +1,3 @@
|
||||
# Released under the MIT License. See LICENSE for details.
|
||||
#
|
||||
"""Workspace functionality."""
|
||||
34
tools/bacommon/workspace/assetsv1.py
Normal file
34
tools/bacommon/workspace/assetsv1.py
Normal file
@ -0,0 +1,34 @@
|
||||
# Released under the MIT License. See LICENSE for details.
|
||||
#
|
||||
"""Defines workspace behavior."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import TYPE_CHECKING, Annotated
|
||||
|
||||
from efro.dataclassio import ioprepped, IOAttrs
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
pass
|
||||
|
||||
|
||||
@ioprepped
|
||||
@dataclass
|
||||
class AssetsV1GlobalVals:
|
||||
"""Global values for an assets_v1 workspace."""
|
||||
|
||||
# Just dummy testing values for now.
|
||||
emit: Annotated[bool, IOAttrs('emit')]
|
||||
aggro: Annotated[float, IOAttrs('aggro')]
|
||||
|
||||
|
||||
@ioprepped
|
||||
@dataclass
|
||||
class AssetsV1PathVals:
|
||||
"""Path-specific values for an assets_v1 workspace path."""
|
||||
|
||||
# Just dummy testing values for now.
|
||||
width: Annotated[int, IOAttrs('width')]
|
||||
height: Annotated[int, IOAttrs('height')]
|
||||
@ -44,6 +44,7 @@ def dataclass_to_dict(
|
||||
obj: Any,
|
||||
codec: Codec = Codec.JSON,
|
||||
coerce_to_float: bool = True,
|
||||
discard_extra_attrs: bool = False,
|
||||
) -> dict:
|
||||
"""Given a dataclass object, return a json-friendly dict.
|
||||
|
||||
@ -62,7 +63,11 @@ def dataclass_to_dict(
|
||||
"""
|
||||
|
||||
out = _Outputter(
|
||||
obj, create=True, codec=codec, coerce_to_float=coerce_to_float
|
||||
obj,
|
||||
create=True,
|
||||
codec=codec,
|
||||
coerce_to_float=coerce_to_float,
|
||||
discard_extra_attrs=discard_extra_attrs,
|
||||
).run()
|
||||
assert isinstance(out, dict)
|
||||
return out
|
||||
@ -157,14 +162,21 @@ def dataclass_from_json(
|
||||
|
||||
|
||||
def dataclass_validate(
|
||||
obj: Any, coerce_to_float: bool = True, codec: Codec = Codec.JSON
|
||||
obj: Any,
|
||||
coerce_to_float: bool = True,
|
||||
codec: Codec = Codec.JSON,
|
||||
discard_extra_attrs: bool = False,
|
||||
) -> None:
|
||||
"""Ensure that values in a dataclass instance are the correct types."""
|
||||
|
||||
# Simply run an output pass but tell it not to generate data;
|
||||
# only run validation.
|
||||
_Outputter(
|
||||
obj, create=False, codec=codec, coerce_to_float=coerce_to_float
|
||||
obj,
|
||||
create=False,
|
||||
codec=codec,
|
||||
coerce_to_float=coerce_to_float,
|
||||
discard_extra_attrs=discard_extra_attrs,
|
||||
).run()
|
||||
|
||||
|
||||
|
||||
@ -61,6 +61,29 @@ class IOExtendedData:
|
||||
type-safe form.
|
||||
"""
|
||||
|
||||
# pylint: disable=useless-return
|
||||
|
||||
@classmethod
|
||||
def handle_input_error(cls, exc: Exception) -> Self | None:
|
||||
"""Called when an error occurs during input decoding.
|
||||
|
||||
This allows a type to optionally return substitute data
|
||||
to be used in place of the failed decode. If it returns
|
||||
None, the original exception is re-raised.
|
||||
|
||||
It is generally a bad idea to apply catch-alls such as this,
|
||||
as it can lead to silent data loss. This should only be used
|
||||
in specific cases such as user settings where an occasional
|
||||
reset is harmless and is preferable to keeping all contained
|
||||
enums and other values backward compatible indefinitely.
|
||||
"""
|
||||
del exc # Unused.
|
||||
|
||||
# By default we let things fail.
|
||||
return None
|
||||
|
||||
# pylint: enable=useless-return
|
||||
|
||||
|
||||
EnumT = TypeVar('EnumT', bound=Enum)
|
||||
|
||||
|
||||
@ -236,6 +236,28 @@ class _Inputter:
|
||||
sets should be passed as lists, enums should be passed as their
|
||||
associated values, and nested dataclasses should be passed as dicts.
|
||||
"""
|
||||
try:
|
||||
return self._do_dataclass_from_input(cls, fieldpath, values)
|
||||
except Exception as exc:
|
||||
# Extended data types can choose to sub default data in case
|
||||
# of failures (generally not a good idea but occasionally
|
||||
# useful).
|
||||
if issubclass(cls, IOExtendedData):
|
||||
fallback = cls.handle_input_error(exc)
|
||||
if fallback is None:
|
||||
raise
|
||||
# Make sure fallback gave us the right type.
|
||||
if not isinstance(fallback, cls):
|
||||
raise RuntimeError(
|
||||
f'handle_input_error() was expected to return a {cls}'
|
||||
f' but returned a {type(fallback)}.'
|
||||
) from exc
|
||||
return fallback
|
||||
raise
|
||||
|
||||
def _do_dataclass_from_input(
|
||||
self, cls: type, fieldpath: str, values: dict
|
||||
) -> Any:
|
||||
# pylint: disable=too-many-locals
|
||||
# pylint: disable=too-many-statements
|
||||
# pylint: disable=too-many-branches
|
||||
@ -377,6 +399,7 @@ class _Inputter:
|
||||
create=False,
|
||||
codec=self._codec,
|
||||
coerce_to_float=self._coerce_to_float,
|
||||
discard_extra_attrs=False,
|
||||
)
|
||||
self._soft_default_validator.soft_default_check(
|
||||
value=value, anntype=anntype, fieldpath=fieldpath
|
||||
|
||||
@ -38,12 +38,18 @@ class _Outputter:
|
||||
"""Validates or exports data contained in a dataclass instance."""
|
||||
|
||||
def __init__(
|
||||
self, obj: Any, create: bool, codec: Codec, coerce_to_float: bool
|
||||
self,
|
||||
obj: Any,
|
||||
create: bool,
|
||||
codec: Codec,
|
||||
coerce_to_float: bool,
|
||||
discard_extra_attrs: bool,
|
||||
) -> None:
|
||||
self._obj = obj
|
||||
self._create = create
|
||||
self._codec = codec
|
||||
self._coerce_to_float = coerce_to_float
|
||||
self._discard_extra_attrs = discard_extra_attrs
|
||||
|
||||
def run(self) -> Any:
|
||||
"""Do the thing."""
|
||||
@ -133,17 +139,18 @@ class _Outputter:
|
||||
out[storagename] = outvalue
|
||||
|
||||
# If there's extra-attrs stored on us, check/include them.
|
||||
extra_attrs = getattr(obj, EXTRA_ATTRS_ATTR, None)
|
||||
if isinstance(extra_attrs, dict):
|
||||
if not _is_valid_for_codec(extra_attrs, self._codec):
|
||||
raise TypeError(
|
||||
f'Extra attrs on \'{fieldpath}\' contains data type(s)'
|
||||
f' not supported by \'{self._codec.value}\' codec:'
|
||||
f' {extra_attrs}.'
|
||||
)
|
||||
if self._create:
|
||||
assert out is not None
|
||||
out.update(extra_attrs)
|
||||
if not self._discard_extra_attrs:
|
||||
extra_attrs = getattr(obj, EXTRA_ATTRS_ATTR, None)
|
||||
if isinstance(extra_attrs, dict):
|
||||
if not _is_valid_for_codec(extra_attrs, self._codec):
|
||||
raise TypeError(
|
||||
f'Extra attrs on \'{fieldpath}\' contains data type(s)'
|
||||
f' not supported by \'{self._codec.value}\' codec:'
|
||||
f' {extra_attrs}.'
|
||||
)
|
||||
if self._create:
|
||||
assert out is not None
|
||||
out.update(extra_attrs)
|
||||
|
||||
# If this obj inherits from multi-type, store its type id.
|
||||
if isinstance(obj, IOMultiType):
|
||||
|
||||
@ -28,8 +28,6 @@ from efro.dataclassio import (
|
||||
)
|
||||
from efro.terminal import Clr
|
||||
|
||||
from efrotools.util import is_wsl_windows_build_path
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
import efro.terminal
|
||||
@ -661,6 +659,8 @@ def _write_cache_file(staging_dir: str, fname: str) -> tuple[str, str, str]:
|
||||
|
||||
def _cache_prefix_for_file(fname: str) -> bytes:
|
||||
# pylint: disable=global-statement
|
||||
from efrotools.util import is_wsl_windows_build_path
|
||||
|
||||
global g_cache_prefix_exec
|
||||
global g_cache_prefix_noexec
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user