industrial-model 0.1.4__py3-none-any.whl → 0.1.6__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.
@@ -8,12 +8,13 @@ from .models import (
8
8
  ViewInstance,
9
9
  ViewInstanceConfig,
10
10
  )
11
- from .statements import and_, col, or_, select
11
+ from .statements import and_, col, not_, or_, select
12
12
 
13
13
  __all__ = [
14
14
  "and_",
15
15
  "or_",
16
16
  "col",
17
+ "not_",
17
18
  "select",
18
19
  "ViewInstance",
19
20
  "InstanceId",
@@ -49,8 +49,11 @@ class QueryOptimizer:
49
49
  where_clause, BoolExpression
50
50
  ) and self._has_space_filter(where_clause.filters):
51
51
  return True
52
- elif isinstance(where_clause, LeafExpression):
53
- return where_clause.property == SPACE_PROPERTY
52
+ elif (
53
+ isinstance(where_clause, LeafExpression)
54
+ and where_clause.property == SPACE_PROPERTY
55
+ ):
56
+ return True
54
57
 
55
58
  return False
56
59
 
@@ -21,13 +21,12 @@ from cognite.client.data_classes.data_modeling.views import (
21
21
  )
22
22
 
23
23
  from industrial_model.constants import EDGE_MARKER, MAX_LIMIT, NESTED_SEP
24
- from industrial_model.models import TViewInstance
24
+ from industrial_model.models import TViewInstance, get_schema_properties
25
25
  from industrial_model.statements import Statement
26
26
 
27
27
  from .filter_mapper import (
28
28
  FilterMapper,
29
29
  )
30
- from .schemas import get_schema_properties
31
30
  from .sort_mapper import SortMapper
32
31
  from .view_mapper import ViewMapper
33
32
 
@@ -135,19 +134,22 @@ class QueryMapper:
135
134
  with_,
136
135
  select_,
137
136
  )
138
- if not props:
139
- with_[property_key] = NodeResultSetExpression(
140
- from_=key,
141
- direction="inwards",
142
- through=property.source.as_property_ref(
143
- property.through.property
144
- ),
145
- limit=MAX_LIMIT,
146
- )
147
137
 
148
- select_[property_key] = self._get_select(
149
- property.source, props
150
- )
138
+ with_[property_key] = NodeResultSetExpression(
139
+ from_=key,
140
+ direction="inwards",
141
+ through=property.source.as_property_ref(
142
+ property.through.property
143
+ ),
144
+ limit=MAX_LIMIT,
145
+ )
146
+
147
+ if property.through.property not in props:
148
+ props.append(property.through.property)
149
+
150
+ select_[property_key] = self._get_select(
151
+ property.source, props
152
+ )
151
153
  elif isinstance(property, EdgeConnection) and property.source:
152
154
  edge_property_key = f"{property_key}{NESTED_SEP}{EDGE_MARKER}"
153
155
 
@@ -7,6 +7,7 @@ from .entities import (
7
7
  ViewInstance,
8
8
  ViewInstanceConfig,
9
9
  )
10
+ from .schemas import get_schema_properties
10
11
 
11
12
  __all__ = [
12
13
  "RootModel",
@@ -16,4 +17,5 @@ __all__ = [
16
17
  "ValidationMode",
17
18
  "PaginatedResult",
18
19
  "ViewInstanceConfig",
20
+ "get_schema_properties",
19
21
  ]
@@ -12,14 +12,12 @@ from typing import (
12
12
 
13
13
  from pydantic import BaseModel
14
14
 
15
- from industrial_model.constants import NESTED_SEP
16
-
17
15
  TBaseModel = TypeVar("TBaseModel", bound=BaseModel)
18
16
 
19
17
 
20
18
  def get_schema_properties(
21
19
  cls: type[TBaseModel],
22
- nested_separator: str = NESTED_SEP,
20
+ nested_separator: str,
23
21
  prefix: str | None = None,
24
22
  ) -> list[str]:
25
23
  data = _get_type_properties(cls) or {}
@@ -10,6 +10,7 @@ from .expressions import (
10
10
  LeafExpression,
11
11
  and_,
12
12
  col,
13
+ not_,
13
14
  or_,
14
15
  )
15
16
 
@@ -66,5 +67,6 @@ __all__ = [
66
67
  "LeafExpression",
67
68
  "BoolExpression",
68
69
  "and_",
70
+ "not_",
69
71
  "or_",
70
72
  ]
@@ -161,5 +161,11 @@ def or_(*expressions: bool | LeafExpression | BoolExpression) -> bool:
161
161
  ) # type: ignore
162
162
 
163
163
 
164
+ def not_(*expressions: bool | LeafExpression | BoolExpression) -> bool:
165
+ return BoolExpression(
166
+ operator="not", filters=_unwrap_expressions(*expressions)
167
+ ) # type: ignore
168
+
169
+
164
170
  def col(property: Any) -> Column:
165
171
  return Column(property)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: industrial-model
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: Industrial Model ORM
5
5
  Author-email: Lucas Alves <lucasrosaalves@gmail.com>
6
6
  Classifier: Programming Language :: Python
@@ -1,28 +1,28 @@
1
- industrial_model/__init__.py,sha256=EDOULHjsfkh_XJVHVajSpQycMWLsQ3STmVj_WoKfiWc,507
1
+ industrial_model/__init__.py,sha256=qst1HvSXw7ytYTvi_hgg8989rSqKXF3n_8jv3wO73x8,525
2
2
  industrial_model/config.py,sha256=wzSKVKHIdGlxCRtu0PIeL3SLYvnQBR4Py46CcETxa8U,238
3
3
  industrial_model/constants.py,sha256=wtFdxkR9gojqekwXeyVCof6VUkJYuqjjgAgVVKrcxaw,450
4
4
  industrial_model/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  industrial_model/utils.py,sha256=OuuAkIqu-551axsZJPuqHu5d9iReGcfY9ROBFtHIwkY,933
6
6
  industrial_model/cognite_adapters/__init__.py,sha256=9N4oT7tWZx5wjVr7q64Ef5FLT75Omep48xGYv1PhxV8,1917
7
7
  industrial_model/cognite_adapters/filter_mapper.py,sha256=NqH-OW7_iKFY9POCG8W3KjkwXUgrZP1d_yxDx1J0fXM,3859
8
- industrial_model/cognite_adapters/optimizer.py,sha256=msOXAU2nY2-7U0-AlST3_SWuLHnyQ9wNa5_BzMRQfdw,2166
9
- industrial_model/cognite_adapters/query_mapper.py,sha256=lYKRiIEmFiX7CQUnrOh5_-t1UkAMcT3dr9ORgErDXOY,6233
8
+ industrial_model/cognite_adapters/optimizer.py,sha256=G8I07jJ9tarE5GZXXUSpTMKUei6ptV-cudJSLsoykX4,2223
9
+ industrial_model/cognite_adapters/query_mapper.py,sha256=3fEcaLsGjLKIh-g1BbMcffQ6rp99JeCW555iJo8JW44,6260
10
10
  industrial_model/cognite_adapters/query_result_mapper.py,sha256=jUreXqsaLnq7hp6T_JZQNRtL8TL8hoLSFvD4SkJ4TEE,7002
11
- industrial_model/cognite_adapters/schemas.py,sha256=EiRe0HK6thCzk0WYOPrAIRe8GkkG7_ykQsy7WVfT_Og,3430
12
11
  industrial_model/cognite_adapters/sort_mapper.py,sha256=RJUAYlZGXoYzK0PwX63cibRF_L-MUq9g2ZsC2EeNIF4,696
13
12
  industrial_model/cognite_adapters/utils.py,sha256=nBYHK8697L2yGEAcyKjQV9NEZQmWy_aSGq_iMl7gofM,907
14
13
  industrial_model/cognite_adapters/view_mapper.py,sha256=lnv64KezSQTAr6XdcExa8d92GU5Ll9K9HfMcQGzhX6k,488
15
14
  industrial_model/engines/__init__.py,sha256=7aGHrUm2MxIq39vR8h0xu3i1zNOuT9H9U-q4lV3nErQ,102
16
15
  industrial_model/engines/async_engine.py,sha256=3Y4Ao14CDJJAZFbgTX9I6LOJUxfe8nwOOukGVeiw914,1070
17
16
  industrial_model/engines/engine.py,sha256=8-wfktRLZpad_V7_F1Vz7vtjE_bQhga_jXXjuwSgfrE,1897
18
- industrial_model/models/__init__.py,sha256=j8e54oDCY_rh6GOyacK9UtjjI4nwKLpsy3r5GSJTXpY,334
17
+ industrial_model/models/__init__.py,sha256=YcNLjpYnxdU_wTpn1n0AhwlZ-XHWYqX6FzfbuevG3jo,406
19
18
  industrial_model/models/base.py,sha256=jbiaICJ0R1mmxXtDqxxlVdq-tTX4RLdqnLTgs9HLm_4,1279
20
19
  industrial_model/models/entities.py,sha256=NrFV_a3ZP6Y4b1M2PFl_746qcCsexsyO2cuB0snZhkw,1319
20
+ industrial_model/models/schemas.py,sha256=FzreMCR2TGX89-tMRpCNdcYqHj1u9QlocRLNwE_J2rA,3366
21
21
  industrial_model/queries/__init__.py,sha256=7aheTE5qs03rxWm9fmGWptbz_p9OIXXYD8if56cqs18,227
22
22
  industrial_model/queries/models.py,sha256=iiHQ7-cfg0nukEv5PoCx9QPF-w1gVSnoNbXBOK9Mzeo,1185
23
23
  industrial_model/queries/params.py,sha256=ehgCoR5n6E-tkEuoymZ2lkLcSzMaBAx_HnyJ7sWpqz0,964
24
- industrial_model/statements/__init__.py,sha256=mqPIvfQ-XZ_IILwha7RbkdIKH_MRAdAvfrw80pCKU1c,1753
25
- industrial_model/statements/expressions.py,sha256=bsUnkFDGVHpOQ1RUtEbSPE1nfVkF0zC3m5-9JFkSqu8,4751
26
- industrial_model-0.1.4.dist-info/METADATA,sha256=zJFOaUlsd7sEzyZDxNXRF7Lj80DfHA2kSGHrAc3HvQA,4806
27
- industrial_model-0.1.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
28
- industrial_model-0.1.4.dist-info/RECORD,,
24
+ industrial_model/statements/__init__.py,sha256=9fD-qpNXIkrjoahxC_R6hS4DKSVelehimvRPKbpYfA0,1775
25
+ industrial_model/statements/expressions.py,sha256=Sar1cIvy3sYi7tkWJN3ylHlZ252oN2mZJpZ1TX9jN3s,4940
26
+ industrial_model-0.1.6.dist-info/METADATA,sha256=M-BS6_DyB4pIwwqPlvBp4_7XCqFDBbdver_EXwZ8WMo,4806
27
+ industrial_model-0.1.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
28
+ industrial_model-0.1.6.dist-info/RECORD,,