Skip to content

Commit

Permalink
Explicitly export types (#1203)
Browse files Browse the repository at this point in the history
  • Loading branch information
erlendvollset committed Apr 19, 2023
1 parent 583bbde commit f4cd39e
Show file tree
Hide file tree
Showing 17 changed files with 238 additions and 31 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ test-report.xml
.tox/
.python-version

# mypy
.dmypy.json

# Local development
scripts/local_client.py
playground.py
13 changes: 6 additions & 7 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,13 @@ repos:
args:
- --py38-plus
- --keep-runtime-typing # remove when >=3.10

- hooks:
- id: mypy
name: mypy
entry: poetry run mypy cognite --non-interactive --install-types
language: system
files: ^.*.(py|pyi)$
pass_filenames: false
- id: mypy
name: mypy
entry: dmypy run -- cognite
files: ^.*.(py|pyi)$
language: system
pass_filenames: false
repo: local

- hooks:
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ Changes are grouped as follows
- `Fixed` for any bug fixes.
- `Security` in case of vulnerabilities.

## [5.12.0] - 18-04-23
### Changed
- Enforce that types are explicitly exported in order to make very strict type checkers happy.

## [5.11.1] - 17-04-23
### Fixed
- List (and `__call__`) methods for assets, events, files, labels, relationships, sequences and time series now raise if given bad input for `data_set_ids`, `data_set_external_ids`, `asset_subtree_ids` and `asset_subtree_external_ids` instead of ignoring/returning everything.
Expand Down
1 change: 1 addition & 0 deletions cognite/client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from cognite.client.config import ClientConfig, global_config
from cognite.client._version import __version__

__all__ = ["ClientConfig", "CogniteClient", "__version__", "global_config"]

_RUNNING_IN_BROWSER = sys.platform == "emscripten" and "pyodide" in sys.modules

Expand Down
3 changes: 2 additions & 1 deletion cognite/client/_api/sequences.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
)
from cognite.client.data_classes.shared import TimestampRange
from cognite.client.utils._identifier import Identifier, IdentifierSequence
from cognite.client.utils._text import convert_all_keys_to_camel_case
from cognite.client.utils._validation import process_asset_subtree_ids, process_data_set_ids

if TYPE_CHECKING:
Expand Down Expand Up @@ -307,7 +308,7 @@ def _clean_columns(self, sequence: Sequence) -> Sequence:
sequence.columns = [
{
k: v
for k, v in utils._auxiliary.convert_all_keys_to_camel_case(col).items()
for k, v in convert_all_keys_to_camel_case(col).items()
if k in ["externalId", "valueType", "metadata", "name", "description"]
}
for col in cast(List, sequence.columns)
Expand Down
16 changes: 12 additions & 4 deletions cognite/client/_api/transformations/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
from cognite.client.data_classes import Transformation, TransformationJob, TransformationList
from cognite.client.data_classes.shared import TimestampRange
from cognite.client.data_classes.transformations import (
NonceCredentials,
TagsFilter,
TransformationFilter,
TransformationPreviewResult,
TransformationUpdate,
)
from cognite.client.data_classes.transformations.common import NonceCredentials
from cognite.client.utils._identifier import IdentifierSequence
from typing import TYPE_CHECKING
from cognite.client._constants import LIST_LIMIT_DEFAULT
Expand All @@ -25,6 +25,14 @@
from cognite.client.config import ClientConfig
from cognite.client import CogniteClient

__all__ = [
"TransformationSchemaAPI",
"TransformationsAPI",
"TransformationSchedulesAPI",
"TransformationNotificationsAPI",
"TransformationJobsAPI",
]


class TransformationsAPI(APIClient):
_RESOURCE_PATH = "/transformations"
Expand Down Expand Up @@ -360,9 +368,9 @@ def run(

return job

def run_async(
async def run_async(
self, transformation_id: int = None, transformation_external_id: str = None, timeout: Optional[float] = None
) -> Awaitable[TransformationJob]:
) -> TransformationJob:
"""`Run a transformation to completion asynchronously. <https://docs.cognite.com/api/v1/#operation/runTransformation>`_
Args:
Expand Down Expand Up @@ -393,7 +401,7 @@ def run_async(
job = self.run(
transformation_id=transformation_id, transformation_external_id=transformation_external_id, wait=False
)
return job.wait_async(timeout=timeout)
return await job.wait_async(timeout=timeout)

def cancel(self, transformation_id: int = None, transformation_external_id: str = None) -> None:
"""`Cancel a running transformation. <https://docs.cognite.com/api/v1/#operation/cancelTransformation>`_
Expand Down
2 changes: 1 addition & 1 deletion cognite/client/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from __future__ import annotations

__version__ = "5.11.1"
__version__ = "5.12.0"
__api_subversion__ = "V20220125"
175 changes: 171 additions & 4 deletions cognite/client/data_classes/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,17 @@
TimeSeriesUpdate,
)
from cognite.client.data_classes.transformations import (
OidcCredentials,
RawTable,
Transformation,
TransformationBlockedInfo,
TransformationDestination,
TransformationList,
TransformationPreviewResult,
TransformationUpdate,
)
from cognite.client.data_classes.transformations.common import (
OidcCredentials,
RawTable,
TransformationBlockedInfo,
TransformationDestination,
)
from cognite.client.data_classes.transformations.jobs import (
TransformationJob,
TransformationJobFilter,
Expand Down Expand Up @@ -200,3 +202,168 @@
CoordinateReferenceSystemList,
CoordinateReferenceSystem,
)

__all__ = [
"Annotation",
"AnnotationFilter",
"AnnotationList",
"AnnotationUpdate",
"AggregateResultItem",
"Asset",
"AssetAggregate",
"AssetFilter",
"AssetHierarchy",
"AssetList",
"AssetUpdate",
"ContextualizationJob",
"ContextualizationJobList",
"ContextualizationJobType",
"EntityMatchingModel",
"EntityMatchingModelList",
"EntityMatchingModelUpdate",
"JobStatus",
"Database",
"DatabaseList",
"Row",
"RowList",
"Table",
"TableList",
"ExtractionPipeline",
"ExtractionPipelineConfig",
"ExtractionPipelineConfigRevision",
"ExtractionPipelineConfigRevisionList",
"ExtractionPipelineContact",
"ExtractionPipelineList",
"ExtractionPipelineRun",
"ExtractionPipelineRunFilter",
"ExtractionPipelineRunList",
"ExtractionPipelineUpdate",
"EndTimeFilter",
"Event",
"EventFilter",
"EventList",
"EventUpdate",
"FileAggregate",
"FileMetadata",
"FileMetadataFilter",
"FileMetadataList",
"FileMetadataUpdate",
"APIKey",
"APIKeyList",
"ClientCredentials",
"CreatedSession",
"Group",
"GroupList",
"SecurityCategory",
"SecurityCategoryList",
"ServiceAccount",
"ServiceAccountList",
"Session",
"SessionList",
"Label",
"LabelDefinition",
"LabelDefinitionFilter",
"LabelDefinitionList",
"LabelFilter",
"Relationship",
"RelationshipFilter",
"RelationshipList",
"RelationshipUpdate",
"Sequence",
"SequenceAggregate",
"SequenceColumnUpdate",
"SequenceData",
"SequenceDataList",
"SequenceFilter",
"SequenceList",
"SequenceUpdate",
"ConstantResolver",
"Source",
"TemplateGroup",
"TemplateGroupList",
"TemplateGroupVersion",
"TemplateGroupVersionList",
"TemplateInstance",
"TemplateInstanceList",
"TemplateInstanceUpdate",
"View",
"ViewResolver",
"BoundingBox3D",
"RevisionCameraProperties",
"ThreeDAssetMapping",
"ThreeDAssetMappingList",
"ThreeDModel",
"ThreeDModelList",
"ThreeDModelRevision",
"ThreeDModelRevisionList",
"ThreeDModelRevisionUpdate",
"ThreeDModelUpdate",
"ThreeDNode",
"ThreeDNodeList",
"TimeSeries",
"TimeSeriesAggregate",
"TimeSeriesFilter",
"TimeSeriesList",
"TimeSeriesUpdate",
"OidcCredentials",
"RawTable",
"Transformation",
"TransformationBlockedInfo",
"TransformationDestination",
"TransformationList",
"TransformationPreviewResult",
"TransformationUpdate",
"TransformationJob",
"TransformationJobFilter",
"TransformationJobList",
"TransformationJobMetric",
"TransformationJobMetricList",
"TransformationJobStatus",
"TransformationNotification",
"TransformationNotificationList",
"TransformationSchedule",
"TransformationScheduleList",
"TransformationScheduleUpdate",
"TransformationSchemaColumn",
"TransformationSchemaColumnList",
"DataSet",
"DataSetAggregate",
"DataSetFilter",
"DataSetList",
"DataSetUpdate",
"AggregateResult",
"AggregateUniqueValuesResult",
"GeoLocation",
"GeoLocationFilter",
"Geometry",
"GeometryFilter",
"TimestampRange",
"Datapoint",
"Datapoints",
"DatapointsList",
"DatapointsArray",
"DatapointsArrayList",
"LatestDatapointQuery",
"Function",
"FunctionFilter",
"FunctionSchedule",
"FunctionSchedulesFilter",
"FunctionSchedulesList",
"FunctionList",
"FunctionCall",
"FunctionCallList",
"FunctionCallLogEntry",
"FunctionCallLog",
"FunctionsLimits",
"Feature",
"FeatureList",
"FeatureType",
"FeatureTypeList",
"FeatureTypePatch",
"FeatureAggregate",
"FeatureTypeUpdate",
"FeatureAggregateList",
"FeatureTypeUpdateList",
"CoordinateReferenceSystemList",
"CoordinateReferenceSystem",
]
2 changes: 1 addition & 1 deletion cognite/client/data_classes/annotations.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
CogniteResourceList,
CogniteUpdate,
)
from cognite.client.utils._auxiliary import to_snake_case
from cognite.client.utils._text import to_snake_case

if TYPE_CHECKING:
from cognite.client import CogniteClient
Expand Down
5 changes: 3 additions & 2 deletions cognite/client/data_classes/contextualization.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
from cognite.client.data_classes.annotation_types.primitives import VisionResource
from cognite.client.data_classes.annotations import AnnotationList
from cognite.client.exceptions import CogniteAPIError, CogniteException, ModelFailedException
from cognite.client.utils._auxiliary import convert_true_match, exactly_one_is_not_none, to_snake_case
from cognite.client.utils._auxiliary import convert_true_match, exactly_one_is_not_none
from cognite.client.utils._text import to_snake_case

if TYPE_CHECKING:
import pandas
Expand All @@ -28,7 +29,7 @@


class JobStatus(Enum):
_NOT_STARTED = None
_NOT_STARTED: None = None
QUEUED = "Queued"
RUNNING = "Running"
COMPLETED = "Completed"
Expand Down
7 changes: 2 additions & 5 deletions cognite/client/data_classes/extractionpipelines.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,8 @@
CogniteUpdate,
)
from cognite.client.data_classes.shared import TimestampRange
from cognite.client.utils._auxiliary import (
convert_all_keys_to_camel_case,
get_current_sdk_version,
handle_renamed_argument,
)
from cognite.client.utils._auxiliary import get_current_sdk_version, handle_renamed_argument
from cognite.client.utils._text import convert_all_keys_to_camel_case

if TYPE_CHECKING:
from cognite.client import CogniteClient
Expand Down
2 changes: 0 additions & 2 deletions cognite/client/data_classes/transformations/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@
from abc import abstractmethod
from typing import TYPE_CHECKING, Any, Awaitable, Dict, List, Optional, Union, cast

from cognite.client import utils
from cognite.client.data_classes._base import (
CogniteFilter,
CogniteListUpdate,
CognitePrimitiveUpdate,
CognitePropertyClassUtil,
CogniteResource,
CogniteResourceList,
CogniteUpdate,
Expand Down
2 changes: 1 addition & 1 deletion cognite/client/data_classes/transformations/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from typing import TYPE_CHECKING, Dict, Union, cast

from cognite.client.data_classes._base import CogniteResource, CogniteResourceList
from cognite.client.utils._auxiliary import convert_all_keys_to_snake_case
from cognite.client.utils._text import convert_all_keys_to_snake_case

if TYPE_CHECKING:
from cognite.client import CogniteClient
Expand Down
1 change: 1 addition & 0 deletions mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ namespace_packages = true
explicit_package_bases = true
show_error_codes = true
plugins = numpy.typing.mypy_plugin
no_implicit_reexport = true
exclude = _priority_tpe\.py$|cognite/client/_proto.*

[mypy-msal.*]
Expand Down
Loading

0 comments on commit f4cd39e

Please sign in to comment.