Giter Club home page Giter Club logo

geti-sdk's Issues

Download Annotated Data

Is there a way to download annotated data in Geti? Annotations can be a time-consuming process, and having the option to download them would be greatly beneficial.

Deployment issues using intel openvino(geti_sdk)

While deploying using geti_sdk i am able to install and import it successfuly but during getting server_details_from_environment i am getting error;

ValueError: Unable to load Geti Server details from environment file at path '.env', please make sure the file exists.

In my case I am not able to find .env file as its not generated by geti-sdk. I tried to create a .txt file with name .env but still not able to resolve the issue.
Please help me resolve it.

Unable to create detection project from coco dataset when there are nested folders.

GETi Version - 1.0.1
SDK version - 1.2.0

Task: Trying to create a detection project with COCO dataset using geti-sdk. Images are getting uploaded successfully but getting following error while the annotations are being uploaded:

2023-03-07 20:26:35,383 - INFO - Project created successfully.
2023-03-07 20:26:45,543 - INFO - Starting image upload...
Uploading images: 100%
12/12 [00:05<00:00, 3.48it/s]
2023-03-07 20:26:50,824 - INFO - Upload complete. Uploaded 12 new images in 5.3 seconds.
2023-03-07 20:26:50,826 - INFO - Annotations have been converted to boxes
2023-03-07 20:26:50,827 - INFO - Dataset is prepared for detection task.
2023-03-07 20:26:50,828 - INFO - Starting image annotation upload...
Uploading image annotations: 0%
0/12 [00:00<?, ?it/s]

ValueError Traceback (most recent call last)
Cell In[35], line 1
----> 1 project = client.create_single_task_project_from_dataset(
2 project_name="m1",
3 project_type="detection",
4 path_to_images=dataset_path,
5 annotation_reader=annotation_reader,
6 # number_of_images_to_upload=100,
7 # number_of_images_to_annotate=90,
8 enable_auto_train=False,
9 )

File ~/venvs/geti_env/lib/python3.8/site-packages/geti_sdk/geti.py:638, in Geti.create_single_task_project_from_dataset(self, project_name, project_type, path_to_images, annotation_reader, labels, number_of_images_to_upload, number_of_images_to_annotate, enable_auto_train, upload_videos)
631 # Upload annotations
632 annotation_client = AnnotationClient(
633 session=self.session,
634 project=project,
635 workspace_id=self.workspace_id,
636 annotation_reader=annotation_reader,
637 )
--> 638 annotation_client.upload_annotations_for_images(images)
640 if len(videos) > 0:
641 annotation_client.upload_annotations_for_videos(videos)

File ~/venvs/geti_env/lib/python3.8/site-packages/geti_sdk/rest_clients/annotation_clients/annotation_client.py:148, in AnnotationClient.upload_annotations_for_images(self, images, append_annotations)
146 for image in tqdm(images, desc=tqdm_prefix):
147 if not append_annotations:
--> 148 response = self._upload_annotation_for_2d_media_item(
149 media_item=image
150 )
151 else:
152 response = self._append_annotation_for_2d_media_item(
153 media_item=image
154 )

File ~/venvs/geti_env/lib/python3.8/site-packages/geti_sdk/rest_clients/annotation_clients/base_annotation_client.py:169, in BaseAnnotationClient._upload_annotation_for_2d_media_item(self, media_item, annotation_scene)
167 else:
168 if self.annotation_reader is not None:
--> 169 scene_to_upload = self._read_2d_media_annotation_from_source(
170 media_item=media_item
171 )
172 else:
173 raise ValueError(
174 "You attempted to upload an annotation for a media item, but no "
175 "annotation data was passed directly and no annotation reader was "
176 "defined for the AnnotationClient. Therefore, the "
177 "AnnotationClient is unable to upload any annotation data."
178 )

File ~/venvs/geti_env/lib/python3.8/site-packages/geti_sdk/rest_clients/annotation_clients/base_annotation_client.py:306, in BaseAnnotationClient._read_2d_media_annotation_from_source(self, media_item, preserve_shape_for_global_labels)
293 def _read_2d_media_annotation_from_source(
294 self,
295 media_item: Union[Image, VideoFrame],
296 preserve_shape_for_global_labels: bool = False,
297 ) -> AnnotationScene:
298 """
299 Retrieve the annotation for the media_item, and return it in the
300 proper format to be sent to the GETi /annotations endpoint. This method uses the
(...)
304 :return: Dictionary containing the annotation, in GETi format
305 """
--> 306 annotation_list = self.annotation_reader.get_data(
307 filename=media_item.name,
308 label_name_to_id_mapping=self.label_mapping,
309 media_information=media_item.media_information,
310 preserve_shape_for_global_labels=preserve_shape_for_global_labels,
311 )
312 return AnnotationRESTConverter.from_dict(
313 {
314 "media_identifier": media_item.identifier,
(...)
317 }
318 )

File ~/venvs/geti_env/lib/python3.8/site-packages/geti_sdk/annotation_readers/datumaro_annotation_reader/datumaro_annotation_reader.py:174, in DatumAnnotationReader.get_data(self, filename, label_name_to_id_mapping, media_information, preserve_shape_for_global_labels)
148 def get_data(
149 self,
150 filename: str,
(...)
153 preserve_shape_for_global_labels: bool = False,
154 ) -> List[SCAnnotation]:
155 """
156 Return the annotation data for the dataset item corresponding to filename.
157
(...)
172 dataset item.
173 """
--> 174 ds_item = self.dataset.get_item_by_id(filename)
175 image_size = ds_item.image.size
176 annotation_list: List[SCAnnotation] = []

File ~/venvs/geti_env/lib/python3.8/site-packages/geti_sdk/annotation_readers/datumaro_annotation_reader/datumaro_dataset.py:220, in DatumaroDataset.get_item_by_id(self, datum_id)
218 ds_item = self.dataset.get(id=datum_id, subset=subset_name)
219 if ds_item is None:
--> 220 raise ValueError(
221 f"Dataset item with id {datum_id} was not found in the dataset!"
222 )
223 return ds_item

ValueError: Dataset item with id img1364 was not found in the dataset!

Note: When I use the same "Create Project from Dataset" utility in the GETi UI the same dataset works well.

The dataset has a nested structure and I think the image names ("file_name" key in coco json) are not correctly populated and thus failing to read annotations for them.

Dataset strucure:

├── annotations
│   └── instances_default.json
└── images
└── default
├── images
│   ├── img0009.jpg
│   ├── img0013.jpg
│   ├── img0040.jpg
│   ├── img0051.jpg
│   ├── img0080.jpg
│   ├── img0093.jpg
│   ├── img0114.jpg
│   ├── img0127.jpg
│   ├── img0151.jpg
│   ├── img0178.jpg
│   ├── img0194.jpg
│   ├── img0200.jpg
│   ├── img0208.jpg
│   ├── img0229.jpg
│   └── img0234.jpg
└── train
├── img0896.jpg
├── img0927.jpg
├── img0940.jpg
├── img0959.jpg
├── img1317.jpg
├── img1338.jpg
├── img1364.jpg
├── img1368.jpg
├── img1409.jpg
├── img1424.jpg
├── img1995.jpg
├── img2030.jpg
├── img2100.jpg
├── img3648.jpg
└── img3831.jpg

Ans this is how coco json looks for the "datum_id" mentioned in the error, here you can see that the file_name key has a nested path string:
....
"images": [
{
"id": 225,
"width": 1920,
"height": 1080,
"file_name": "train/img1364.jpg",
"license": 0,
"flickr_url": "",
"coco_url": "",
"date_captured": 0
},
......

pre-commit failed in python3.8

When using python3.8, pre-commit failed due to the run-time error when installing isort.
The change of poetry-core caused an incompatibility with isort.
This can be fixed by upgrading isort version to v5.12.0 in the pre-commit yaml file.

ModuleNotFoundError: No module named 'ote_sdk' for classification example

geti-sdk 1.5.0

Hello,
After I exported/deployed a classification model, I followed the README instructions on the zip file and after running the demo.py I get the following error:

File "/app/env/lib/python3.8/site-packages/geti_sdk/deployment/deployed_model.py", line 301, in load_inference_model
spec.loader.exec_module(module)
File "", line 843, in exec_module
File "", line 219, in _call_with_frames_removed
File "../deployment/Classification task/python/model_wrappers/init.py", line 15, in
from .classification import Classification
File "/app/example_code/../deployment/Classification task/python/model_wrappers/classification.py", line 18, in
from ote_sdk.utils.argument_checks import check_input_parameters_type
ModuleNotFoundError: No module named 'ote_sdk'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "demo.py", line 28, in
deployment.load_inference_models(device="CPU")
File "/app/env/lib/python3.8/site-packages/geti_sdk/deployment/deployment.py", line 172, in load_inference_models
model.load_inference_model(device=device, project=self.project)
File "/app/env/lib/python3.8/site-packages/geti_sdk/deployment/deployed_model.py", line 303, in load_inference_model
raise ImportError(
ImportError: Unable to load inference model for DeployedModel(name='EfficientNet-B0 OpenVINO FP32 with XAI head', fps_throughput='0', latency='0', precision=['FP32'], creation_date=datetime.datetime(2023, 3, 28, 16, 53, 57, 584000, tzinfo=datetime.timezone.utc), size=16252850, target_device='CPU', target_device_type=None, previous_revision_id='64231ba5afd18e20f53cab1c', previous_trained_revision_id='64231ba5afd18e20f53cab1c', score=None, performance={'score': 0.9355980184005662, 'local_score': None, 'global_score': None}, id='64231ba5afd18e20f53cab1d', label_schema_in_sync=None, model_status=<ModelStatus.SUCCESS: 'SUCCESS'>, optimization_methods=[], optimization_objectives={}, optimization_type=<OptimizationType.MO: 'MO'>, version=17, configurations=[], model_format='OpenVINO', has_xai_head=True). A custom model wrapperis required, but could not be found at path ../deployment/Classification task/python/model_wrappers.

There is no clear way to install ote_sdk using pip.
Can I get some help solving this issue? Thanks.

Error running pip3 install -r requirements.txt on downloaded model's example_code directory

Error running pip3 install -r requirements.txt on downloaded model's example_code directory

Running:
Mac M2 Ventura 13.4
Python 3.10.11
pip 23.1.2
numpy 1.22 (I have also tried with 1.23, 1.24, and 1.25

example_code % pip3 install -r requirements.txt

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for numpy
  Failed to build numpy
  ERROR: Could not build wheels for numpy, which is required to install pyproject.toml-based projects

       building 'npymath' library
        compiling C sources
        C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g

        creating build/temp.macosx-10.9-universal2-cpython-310
        creating build/temp.macosx-10.9-universal2-cpython-310/numpy
        creating build/temp.macosx-10.9-universal2-cpython-310/numpy/core
        creating build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src
        creating build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src/npymath
        creating build/temp.macosx-10.9-universal2-cpython-310/build
        creating build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1
        creating build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1/numpy
        creating build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1/numpy/core
        creating build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1/numpy/core/src
        creating build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath
        compile options: '-Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -c'
        clang: numpy/core/src/npymath/npy_math.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath/ieee754.c
        clang: numpy/core/src/npymath/halffloat.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath/npy_math_complex.c
        numpy/core/src/npymath/npy_math_complex.c.src:48:33: warning: unused variable 'tiny' [-Wunused-const-variable]
        static const volatile npy_float tiny = 3.9443045e-31f;
                                        ^
        numpy/core/src/npymath/npy_math_complex.c.src:67:25: warning: unused variable 'c_halff' [-Wunused-const-variable]
        static const npy_cfloat c_halff = {0.5F, 0.0};
                                ^
        numpy/core/src/npymath/npy_math_complex.c.src:68:25: warning: unused variable 'c_if' [-Wunused-const-variable]
        static const npy_cfloat c_if = {0.0, 1.0F};
                                ^
        numpy/core/src/npymath/npy_math_complex.c.src:69:25: warning: unused variable 'c_ihalff' [-Wunused-const-variable]
        static const npy_cfloat c_ihalff = {0.0, 0.5F};
                                ^
        numpy/core/src/npymath/npy_math_complex.c.src:79:1: warning: unused function 'caddf' [-Wunused-function]
        caddf(npy_cfloat a, npy_cfloat b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:87:1: warning: unused function 'csubf' [-Wunused-function]
        csubf(npy_cfloat a, npy_cfloat b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:137:1: warning: unused function 'cnegf' [-Wunused-function]
        cnegf(npy_cfloat a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:144:1: warning: unused function 'cmulif' [-Wunused-function]
        cmulif(npy_cfloat a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:67:26: warning: unused variable 'c_half' [-Wunused-const-variable]
        static const npy_cdouble c_half = {0.5, 0.0};
                                 ^
        numpy/core/src/npymath/npy_math_complex.c.src:68:26: warning: unused variable 'c_i' [-Wunused-const-variable]
        static const npy_cdouble c_i = {0.0, 1.0};
                                 ^
        numpy/core/src/npymath/npy_math_complex.c.src:69:26: warning: unused variable 'c_ihalf' [-Wunused-const-variable]
        static const npy_cdouble c_ihalf = {0.0, 0.5};
                                 ^
        numpy/core/src/npymath/npy_math_complex.c.src:79:1: warning: unused function 'cadd' [-Wunused-function]
        cadd(npy_cdouble a, npy_cdouble b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:87:1: warning: unused function 'csub' [-Wunused-function]
        csub(npy_cdouble a, npy_cdouble b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:137:1: warning: unused function 'cneg' [-Wunused-function]
        cneg(npy_cdouble a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:144:1: warning: unused function 'cmuli' [-Wunused-function]
        cmuli(npy_cdouble a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:67:30: warning: unused variable 'c_halfl' [-Wunused-const-variable]
        static const npy_clongdouble c_halfl = {0.5L, 0.0};
                                     ^
        numpy/core/src/npymath/npy_math_complex.c.src:68:30: warning: unused variable 'c_il' [-Wunused-const-variable]
        static const npy_clongdouble c_il = {0.0, 1.0L};
                                     ^
        numpy/core/src/npymath/npy_math_complex.c.src:69:30: warning: unused variable 'c_ihalfl' [-Wunused-const-variable]
        static const npy_clongdouble c_ihalfl = {0.0, 0.5L};
                                     ^
        numpy/core/src/npymath/npy_math_complex.c.src:79:1: warning: unused function 'caddl' [-Wunused-function]
        caddl(npy_clongdouble a, npy_clongdouble b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:87:1: warning: unused function 'csubl' [-Wunused-function]
        csubl(npy_clongdouble a, npy_clongdouble b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:137:1: warning: unused function 'cnegl' [-Wunused-function]
        cnegl(npy_clongdouble a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:144:1: warning: unused function 'cmulil' [-Wunused-function]
        cmulil(npy_clongdouble a)
        ^
        22 warnings generated.
        numpy/core/src/npymath/npy_math_complex.c.src:48:33: warning: unused variable 'tiny' [-Wunused-const-variable]
        static const volatile npy_float tiny = 3.9443045e-31f;
                                        ^
        numpy/core/src/npymath/npy_math_complex.c.src:67:25: warning: unused variable 'c_halff' [-Wunused-const-variable]
        static const npy_cfloat c_halff = {0.5F, 0.0};
                                ^
        numpy/core/src/npymath/npy_math_complex.c.src:68:25: warning: unused variable 'c_if' [-Wunused-const-variable]
        static const npy_cfloat c_if = {0.0, 1.0F};
                                ^
        numpy/core/src/npymath/npy_math_complex.c.src:69:25: warning: unused variable 'c_ihalff' [-Wunused-const-variable]
        static const npy_cfloat c_ihalff = {0.0, 0.5F};
                                ^
        numpy/core/src/npymath/npy_math_complex.c.src:79:1: warning: unused function 'caddf' [-Wunused-function]
        caddf(npy_cfloat a, npy_cfloat b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:87:1: warning: unused function 'csubf' [-Wunused-function]
        csubf(npy_cfloat a, npy_cfloat b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:137:1: warning: unused function 'cnegf' [-Wunused-function]
        cnegf(npy_cfloat a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:144:1: warning: unused function 'cmulif' [-Wunused-function]
        cmulif(npy_cfloat a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:67:26: warning: unused variable 'c_half' [-Wunused-const-variable]
        static const npy_cdouble c_half = {0.5, 0.0};
                                 ^
        numpy/core/src/npymath/npy_math_complex.c.src:68:26: warning: unused variable 'c_i' [-Wunused-const-variable]
        static const npy_cdouble c_i = {0.0, 1.0};
                                 ^
        numpy/core/src/npymath/npy_math_complex.c.src:69:26: warning: unused variable 'c_ihalf' [-Wunused-const-variable]
        static const npy_cdouble c_ihalf = {0.0, 0.5};
                                 ^
        numpy/core/src/npymath/npy_math_complex.c.src:79:1: warning: unused function 'cadd' [-Wunused-function]
        cadd(npy_cdouble a, npy_cdouble b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:87:1: warning: unused function 'csub' [-Wunused-function]
        csub(npy_cdouble a, npy_cdouble b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:137:1: warning: unused function 'cneg' [-Wunused-function]
        cneg(npy_cdouble a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:144:1: warning: unused function 'cmuli' [-Wunused-function]
        cmuli(npy_cdouble a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:67:30: warning: unused variable 'c_halfl' [-Wunused-const-variable]
        static const npy_clongdouble c_halfl = {0.5L, 0.0};
                                     ^
        numpy/core/src/npymath/npy_math_complex.c.src:68:30: warning: unused variable 'c_il' [-Wunused-const-variable]
        static const npy_clongdouble c_il = {0.0, 1.0L};
                                     ^
        numpy/core/src/npymath/npy_math_complex.c.src:69:30: warning: unused variable 'c_ihalfl' [-Wunused-const-variable]
        static const npy_clongdouble c_ihalfl = {0.0, 0.5L};
                                     ^
        numpy/core/src/npymath/npy_math_complex.c.src:79:1: warning: unused function 'caddl' [-Wunused-function]
        caddl(npy_clongdouble a, npy_clongdouble b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:87:1: warning: unused function 'csubl' [-Wunused-function]
        csubl(npy_clongdouble a, npy_clongdouble b)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:137:1: warning: unused function 'cnegl' [-Wunused-function]
        cnegl(npy_clongdouble a)
        ^
        numpy/core/src/npymath/npy_math_complex.c.src:144:1: warning: unused function 'cmulil' [-Wunused-function]
        cmulil(npy_clongdouble a)
        ^
        22 warnings generated.
        xcrun: adding 4 object files to build/temp.macosx-10.9-universal2-cpython-310/libnpymath.a
        warning: /Library/Developer/CommandLineTools/usr/bin/ranlib: archive library: build/temp.macosx-10.9-universal2-cpython-310/libnpymath.a will be fat and ar(1) will not be able to operate on it
        ranlib:@ build/temp.macosx-10.9-universal2-cpython-310/libnpymath.a
        building 'npysort' library
        compiling C sources
        C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g

        creating build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1/numpy/core/src/npysort
        compile options: '-Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -c'
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npysort/quicksort.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npysort/mergesort.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npysort/heapsort.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npysort/timsort.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npysort/selection.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npysort/binsearch.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/npysort/radixsort.c
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        22 warnings generated.
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        22 warnings generated.
        xcrun: adding 7 object files to build/temp.macosx-10.9-universal2-cpython-310/libnpysort.a
        warning: /Library/Developer/CommandLineTools/usr/bin/ranlib: archive library: build/temp.macosx-10.9-universal2-cpython-310/libnpysort.a will be fat and ar(1) will not be able to operate on it
        ranlib:@ build/temp.macosx-10.9-universal2-cpython-310/libnpysort.a
        running build_ext
        customize UnixCCompiler
        customize UnixCCompiler using build_ext
        building 'numpy.core._dummy' extension
        compiling C sources
        C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g

        compile options: '-DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -c'
        clang: numpy/core/src/dummymodule.c
        clang -bundle -undefined dynamic_lookup -arch arm64 -arch x86_64 -g build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src/dummymodule.o -Lbuild/temp.macosx-10.9-universal2-cpython-310 -o build/lib.macosx-10.9-universal2-cpython-310/numpy/core/_dummy.cpython-310-darwin.so
        building 'numpy.core._multiarray_tests' extension
        compiling C sources
        C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g

        creating build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1/numpy/core/src/multiarray
        creating build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src/common
        compile options: '-DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -c'
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/multiarray/_multiarray_tests.c
        clang: numpy/core/src/common/mem_overlap.c
        clang -bundle -undefined dynamic_lookup -arch arm64 -arch x86_64 -g build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1/numpy/core/src/multiarray/_multiarray_tests.o build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src/common/mem_overlap.o -Lbuild/temp.macosx-10.9-universal2-cpython-310 -lnpymath -o build/lib.macosx-10.9-universal2-cpython-310/numpy/core/_multiarray_tests.cpython-310-darwin.so
        building 'numpy.core._multiarray_umath' extension
        compiling C sources
        C compiler: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g

        creating build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src/multiarray
        creating build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src/umath
        creating build/temp.macosx-10.9-universal2-cpython-310/build/src.macosx-10.9-universal2-3.1/numpy/core/src/umath
        creating build/temp.macosx-10.9-universal2-cpython-310/private
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders/4p
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders/4p/m_8bgh6n2xx26wzgrc73tx0m0000gp
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders/4p/m_8bgh6n2xx26wzgrc73tx0m0000gp/T
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders/4p/m_8bgh6n2xx26wzgrc73tx0m0000gp/T/pip-install-2xw3lgi8
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders/4p/m_8bgh6n2xx26wzgrc73tx0m0000gp/T/pip-install-2xw3lgi8/numpy_b387d010387c4696b5c847035de0e8cf
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders/4p/m_8bgh6n2xx26wzgrc73tx0m0000gp/T/pip-install-2xw3lgi8/numpy_b387d010387c4696b5c847035de0e8cf/numpy
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders/4p/m_8bgh6n2xx26wzgrc73tx0m0000gp/T/pip-install-2xw3lgi8/numpy_b387d010387c4696b5c847035de0e8cf/numpy/_build_utils
        creating build/temp.macosx-10.9-universal2-cpython-310/private/var/folders/4p/m_8bgh6n2xx26wzgrc73tx0m0000gp/T/pip-install-2xw3lgi8/numpy_b387d010387c4696b5c847035de0e8cf/numpy/_build_utils/src
        compile options: '-DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -DNO_ATLAS_INFO=3 -DHAVE_CBLAS -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/umath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -c'
        extra options: '-faltivec -I/System/Library/Frameworks/vecLib.framework/Headers'
        clang: numpy/core/src/multiarray/alloc.c
        clang: numpy/core/src/multiarray/array_assign_scalar.c
        clang: numpy/core/src/multiarray/buffer.c
        clang: numpy/core/src/multiarray/common.c
        clang: numpy/core/src/multiarray/datetime_strings.c
        clang: numpy/core/src/multiarray/descriptor.c
        clang: numpy/core/src/multiarray/conversion_utils.c
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/multiarray/einsum.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/multiarray/hashdescr.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/multiarray/lowlevel_strided_loops.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/multiarray/multiarraymodule.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/multiarray/nditer_constr.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/multiarray/refcount.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/multiarray/scalarapi.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/multiarray/temp_elide.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/multiarray/vdot.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/umath/loops.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: build/src.macosx-10.9-universal2-3.1/numpy/core/src/umath/scalarmath.c
        clang: numpy/core/src/umath/ufunc_object.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/npymath/halffloat.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: numpy/core/src/common/npy_longdouble.c
        clang: numpy/core/src/common/numpyos.c
        clang: numpy/core/src/npymath/npy_math.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: /private/var/folders/4p/m_8bgh6n2xx26wzgrc73tx0m0000gp/T/pip-install-2xw3lgi8/numpy_b387d010387c4696b5c847035de0e8cf/numpy/_build_utils/src/apple_sgemv_fix.c
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        clang: error: the clang compiler does not support 'faltivec', please use -maltivec and include altivec.h explicitly
        error: Command "clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g -DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -DNO_ATLAS_INFO=3 -DHAVE_CBLAS -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/umath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.1/numpy/core/src/npymath -c numpy/core/src/multiarray/array_assign_scalar.c -o build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src/multiarray/array_assign_scalar.o -MMD -MF build/temp.macosx-10.9-universal2-cpython-310/numpy/core/src/multiarray/array_assign_scalar.o.d -faltivec -I/System/Library/Frameworks/vecLib.framework/Headers" failed with exit status 1
        [end of output]

    note: This error originates from a subprocess, and is likely not a problem with pip.
    ERROR: Failed building wheel for numpy
  Failed to build numpy
  ERROR: Could not build wheels for numpy, which is required to install pyproject.toml-based projects
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> See above for output.

Unable to save deployment folder

geti-sdk version - 1.2.2
GETi version - 1.0.1

All the artefacts of deployment folder are not saved properly if saved using a separate function call, please refer the code below:

def save():
deployment = geti.deploy_project(project_name="m1_demo")
deployment.save("./")
save()

@ljcornel Looks like the fix to delete temporary deployment folder is deleting the artefacts in this case too.

Failed to execute script .....

Trying to deploy on local. It works fine in IDE, but fails after pyinstaller to exe.

File "demo.py", line 16, in
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "geti_sdk_init_.py", line 79, in
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "geti_sdk\geti.py", line 42, in
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "geti_sdk\deployment_init_.py", line 83, in
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "geti_sdk\deployment\deployed_model.py", line 39, in
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "geti_sdk\deployment\utils.py", line 24, in
File "importlib\resources.py", line 147, in files
File "importlib\resources.py", line 49, in _get_package
File "importlib\resources.py", line 40, in resolve
File "importlib_init
.py", line 127, in import_module
ModuleNotFoundError: No module named 'geti_sdk.deployment.resources'
[18516] Failed to execute script 'demo' due to unhandled exception!

My deploying cods are following the example below:

import cv2
from geti_sdk.deployment import Deployment
from geti_sdk.utils import show_image_with_annotation_scene

if name == "main":
# Step 1: Load the deployment
deployment = Deployment.from_folder("../deployment")

# Step 2: Load the sample image
image = cv2.imread("../sample_image.jpg")
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Step 3: Send inference model(s) to CPU
deployment.load_inference_models(device="CPU")

# Step 4: Infer image
prediction = deployment.infer(image_rgb)

# Step 5: Visualization
show_image_with_annotation_scene(image_rgb, prediction)

Documentation feedback

In the readme.md file

This step is not necessary now.

  1. Download or clone the repository and navigate to the sc_api_tools directory.

I suggest this change:

  1. Download or clone the repository.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.