ducpy 3.3.6__tar.gz → 3.3.7__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.
- {ducpy-3.3.6 → ducpy-3.3.7}/Cargo.lock +1 -1
- {ducpy-3.3.6 → ducpy-3.3.7}/PKG-INFO +1 -1
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducpy/crate/Cargo.toml +1 -1
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/Cargo.toml +11 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/builders/state_builders.py +3 -3
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/serialize.py +1 -17
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/utils/convert.py +11 -3
- ducpy-3.3.6/packages/ducrs/.gitignore +0 -21
- ducpy-3.3.6/packages/ducrs/package.json +0 -13
- ducpy-3.3.6/packages/ducrs/release.config.cjs +0 -31
- ducpy-3.3.6/packages/ducrs/sst-env.d.ts +0 -10
- ducpy-3.3.6/packages/ducrs/tests/.gitignore +0 -2
- ducpy-3.3.6/packages/ducrs/tests/common/mod.rs +0 -1009
- ducpy-3.3.6/packages/ducrs/tests/parser_assets.rs +0 -227
- ducpy-3.3.6/packages/ducrs/tests/synthetic_roundtrip.rs +0 -25
- {ducpy-3.3.6 → ducpy-3.3.7}/Cargo.toml +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/LICENSE +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/README.md +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducpy/crate/src/lib.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/LICENSE +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/README.md +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/build.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/api/document.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/api/meta.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/api/mod.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/api/version_control.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/db/bootstrap.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/db/mod.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/db/native.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/db/wasm.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/lib.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/parse.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/serde_utils.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/serialize.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/packages/ducrs/src/types.rs +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/pyproject.toml +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/schema/duc.sql +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/schema/migrations/3000000_to_3000001.sql +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/schema/migrations/3000001_to_3000002.sql +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/schema/migrations/3000002_to_3000003.sql +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/schema/migrations/3000003_to_3000004.sql +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/schema/search.sql +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/schema/version_control.sql +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/__init__.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/_version.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/builders/__init__.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/builders/block_instance_builder.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/builders/block_utils.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/builders/element_builders.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/builders/mutate_builder.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/builders/sql_builder.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/builders/style_builders.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/classes/DataStateClass.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/classes/ElementsClass.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/classes/__init__.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/enums.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/parse.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/search/__init__.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/search/search_elements.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/utils/__init__.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/utils/constants.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/utils/io.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/utils/mutate_utils.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy/utils/rand_utils.py +0 -0
- {ducpy-3.3.6 → ducpy-3.3.7}/src/ducpy_native/__init__.py +0 -0
|
@@ -7,6 +7,17 @@ license = "MIT"
|
|
|
7
7
|
authors = ["Ducflair support@ducflair.com"]
|
|
8
8
|
repository = "https://github.com/ducflair/duc/tree/main/packages/ducrs"
|
|
9
9
|
readme = "README.md"
|
|
10
|
+
include = [
|
|
11
|
+
"src/**",
|
|
12
|
+
"build.rs",
|
|
13
|
+
"Cargo.toml",
|
|
14
|
+
"README.md",
|
|
15
|
+
"LICENSE",
|
|
16
|
+
"schema/duc.sql",
|
|
17
|
+
"schema/version_control.sql",
|
|
18
|
+
"schema/search.sql",
|
|
19
|
+
"schema/migrations/*.sql",
|
|
20
|
+
]
|
|
10
21
|
|
|
11
22
|
[dependencies]
|
|
12
23
|
base64 = "0.21.5"
|
|
@@ -446,9 +446,9 @@ def create_local_state_from_base(base: BaseStateParams, **kwargs) -> DucLocalSta
|
|
|
446
446
|
current_item_stroke=kwargs.get('current_item_stroke', None),
|
|
447
447
|
current_item_background=kwargs.get('current_item_background', None),
|
|
448
448
|
current_item_opacity=kwargs.get('current_item_opacity', 1.0),
|
|
449
|
-
current_item_font_family=kwargs.get('current_item_font_family', "
|
|
449
|
+
current_item_font_family=kwargs.get('current_item_font_family', "Roboto Mono"),
|
|
450
450
|
current_item_font_size=kwargs.get('current_item_font_size', 20.0),
|
|
451
|
-
current_item_text_align=kwargs.get('current_item_text_align',
|
|
451
|
+
current_item_text_align=kwargs.get('current_item_text_align', TEXT_ALIGN.LEFT),
|
|
452
452
|
current_item_roundness=kwargs.get('current_item_roundness', 0.0),
|
|
453
453
|
current_item_start_line_head=kwargs.get('current_item_start_line_head', None),
|
|
454
454
|
current_item_end_line_head=kwargs.get('current_item_end_line_head', None),
|
|
@@ -457,7 +457,7 @@ def create_local_state_from_base(base: BaseStateParams, **kwargs) -> DucLocalSta
|
|
|
457
457
|
objects_snap_mode_enabled=kwargs.get('objects_snap_mode_enabled', True),
|
|
458
458
|
grid_mode_enabled=kwargs.get('grid_mode_enabled', True),
|
|
459
459
|
outline_mode_enabled=kwargs.get('outline_mode_enabled', False),
|
|
460
|
-
manual_save_mode=kwargs.get('manual_save_mode',
|
|
460
|
+
manual_save_mode=kwargs.get('manual_save_mode', False),
|
|
461
461
|
decimal_places=kwargs.get('decimal_places', 2),
|
|
462
462
|
)
|
|
463
463
|
|
|
@@ -16,7 +16,7 @@ from typing import Any, Dict, List, Optional, Tuple
|
|
|
16
16
|
|
|
17
17
|
import ducpy_native
|
|
18
18
|
from ducpy.utils.convert import (deep_snake_to_camel, snake_to_camel,
|
|
19
|
-
to_serializable)
|
|
19
|
+
to_serializable, _flatten_dict)
|
|
20
20
|
|
|
21
21
|
logger = logging.getLogger(__name__)
|
|
22
22
|
|
|
@@ -104,22 +104,6 @@ _ELEMENT_CLASS_TO_TYPE: Dict[str, str] = {
|
|
|
104
104
|
"DucModelElement": "model",
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
# Keys in the asdict() output that should be flattened (merged into the parent),
|
|
108
|
-
# mirroring Rust's #[serde(flatten)] on base / styles / linear_base / stack_element_base.
|
|
109
|
-
_FLATTEN_KEYS = frozenset({"base", "styles", "linear_base", "stack_element_base"})
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
def _flatten_dict(d: dict) -> dict:
|
|
113
|
-
"""Recursively flatten nested dicts whose key is in ``_FLATTEN_KEYS``."""
|
|
114
|
-
result: dict = {}
|
|
115
|
-
for k, v in d.items():
|
|
116
|
-
if k in _FLATTEN_KEYS and isinstance(v, dict):
|
|
117
|
-
result.update(_flatten_dict(v))
|
|
118
|
-
else:
|
|
119
|
-
result[k] = v
|
|
120
|
-
return result
|
|
121
|
-
|
|
122
|
-
|
|
123
107
|
def _element_to_camel(wrapper_or_element: Any) -> dict:
|
|
124
108
|
"""Convert an element (or ElementWrapper) to the camelCase dict Rust expects."""
|
|
125
109
|
el = wrapper_or_element
|
|
@@ -65,11 +65,19 @@ def deep_snake_to_camel(obj: Any) -> Any:
|
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
def _flatten_dict(d: dict) -> dict:
|
|
68
|
-
"""Recursively flatten keys that Rust serde #[serde(flatten)] would flatten.
|
|
68
|
+
"""Recursively flatten keys that Rust serde #[serde(flatten)] would flatten.
|
|
69
|
+
|
|
70
|
+
Walks the entire dict so that nested flatten keys (e.g. ``stack_element_base``
|
|
71
|
+
-> ``stack_base`` -> ``styles``) are all merged into the appropriate level.
|
|
72
|
+
"""
|
|
69
73
|
result: dict = {}
|
|
70
74
|
for k, v in d.items():
|
|
71
|
-
if
|
|
72
|
-
|
|
75
|
+
if isinstance(v, dict):
|
|
76
|
+
v = _flatten_dict(v)
|
|
77
|
+
if k in _FLATTEN_KEYS:
|
|
78
|
+
result.update(v)
|
|
79
|
+
else:
|
|
80
|
+
result[k] = v
|
|
73
81
|
else:
|
|
74
82
|
result[k] = v
|
|
75
83
|
return result
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Generated by Cargo
|
|
2
|
-
# will have compiled files and executables
|
|
3
|
-
debug/
|
|
4
|
-
target/
|
|
5
|
-
|
|
6
|
-
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
|
7
|
-
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
|
8
|
-
Cargo.lock
|
|
9
|
-
|
|
10
|
-
# These are backup files generated by rustfmt
|
|
11
|
-
**/*.rs.bk
|
|
12
|
-
|
|
13
|
-
# MSVC Windows builds of rustc generate these, which store debugging information
|
|
14
|
-
*.pdb
|
|
15
|
-
|
|
16
|
-
# RustRover
|
|
17
|
-
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
18
|
-
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
19
|
-
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
20
|
-
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
21
|
-
#.idea/
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ducrs",
|
|
3
|
-
"version": "0.0.0-development",
|
|
4
|
-
"private": true,
|
|
5
|
-
"scripts": {
|
|
6
|
-
"build": "cargo build --release",
|
|
7
|
-
"test": "cargo test",
|
|
8
|
-
"semantic-release": "semantic-release"
|
|
9
|
-
},
|
|
10
|
-
"devDependencies": {
|
|
11
|
-
"semantic-release": "^24.1.2"
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
branches: ["main", { name: "next", prerelease: true }, { name: "dev", prerelease: true }],
|
|
3
|
-
plugins: [
|
|
4
|
-
[
|
|
5
|
-
require.resolve("../../scripts/semrel-path-filter.cjs"),
|
|
6
|
-
{
|
|
7
|
-
paths: [
|
|
8
|
-
"packages/ducrs"
|
|
9
|
-
],
|
|
10
|
-
analyzer: { preset: "conventionalcommits" },
|
|
11
|
-
notes: { preset: "conventionalcommits" },
|
|
12
|
-
},
|
|
13
|
-
],
|
|
14
|
-
[
|
|
15
|
-
"@semantic-release/github",
|
|
16
|
-
],
|
|
17
|
-
[
|
|
18
|
-
"@semantic-release/exec",
|
|
19
|
-
{
|
|
20
|
-
// Prepare step: Set the crate version and build the project
|
|
21
|
-
prepareCmd:
|
|
22
|
-
"cargo set-version ${nextRelease.version} && cargo build --release",
|
|
23
|
-
|
|
24
|
-
// Publish step: Publish the crate to crates.io
|
|
25
|
-
publishCmd:
|
|
26
|
-
"cargo publish --allow-dirty --token ${process.env.CARGO_REGISTRY_TOKEN}",
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
],
|
|
30
|
-
tagFormat: "ducrs@${version}",
|
|
31
|
-
};
|