clarifai 11.1.7rc3__py3-none-any.whl → 11.1.7rc4__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.
- clarifai/__init__.py +1 -1
- clarifai/client/model_client.py +13 -3
- clarifai/runners/models/model_builder.py +1 -1
- clarifai/runners/utils/data_types.py +43 -4
- clarifai/runners/utils/method_signatures.py +2 -1
- {clarifai-11.1.7rc3.dist-info → clarifai-11.1.7rc4.dist-info}/METADATA +2 -2
- {clarifai-11.1.7rc3.dist-info → clarifai-11.1.7rc4.dist-info}/RECORD +11 -11
- {clarifai-11.1.7rc3.dist-info → clarifai-11.1.7rc4.dist-info}/LICENSE +0 -0
- {clarifai-11.1.7rc3.dist-info → clarifai-11.1.7rc4.dist-info}/WHEEL +0 -0
- {clarifai-11.1.7rc3.dist-info → clarifai-11.1.7rc4.dist-info}/entry_points.txt +0 -0
- {clarifai-11.1.7rc3.dist-info → clarifai-11.1.7rc4.dist-info}/top_level.txt +0 -0
    
        clarifai/__init__.py
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            __version__ = "11.1. | 
| 1 | 
            +
            __version__ = "11.1.7rc4"
         | 
    
        clarifai/client/model_client.py
    CHANGED
    
    | @@ -121,6 +121,17 @@ class ModelClient: | |
| 121 121 | 
             
                        raise TypeError(
         | 
| 122 122 | 
             
                            f"{method_name}() takes {len(method_argnames)} positional arguments but {len(args)} were given"
         | 
| 123 123 | 
             
                        )
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                      if len(args) + len(kwargs) > len(method_argnames):
         | 
| 126 | 
            +
                        raise TypeError(
         | 
| 127 | 
            +
                            f"{method_name}() got an unexpected keyword argument {next(iter(kwargs))}")
         | 
| 128 | 
            +
                      if len(args) == 1 and (not kwargs) and isinstance(args[0], list):
         | 
| 129 | 
            +
                        batch_inputs = args[0]
         | 
| 130 | 
            +
                        # Validate each input is a dictionary
         | 
| 131 | 
            +
                        is_batch_input_valid = all(isinstance(input, dict) for input in batch_inputs)
         | 
| 132 | 
            +
                        if is_batch_input_valid:
         | 
| 133 | 
            +
                          return call_func(batch_inputs, method_name)
         | 
| 134 | 
            +
             | 
| 124 135 | 
             
                      for name, arg in zip(method_argnames, args):  # handle positional with zip shortest
         | 
| 125 136 | 
             
                        if name in kwargs:
         | 
| 126 137 | 
             
                          raise TypeError(f"Multiple values for argument {name}")
         | 
| @@ -176,6 +187,7 @@ class ModelClient: | |
| 176 187 | 
             
                  inputs,  # TODO set up functions according to fetched signatures?
         | 
| 177 188 | 
             
                  method_name: str = 'predict',
         | 
| 178 189 | 
             
              ) -> Any:
         | 
| 190 | 
            +
             | 
| 179 191 | 
             
                input_signature = self._method_signatures[method_name].input_fields
         | 
| 180 192 | 
             
                output_signature = self._method_signatures[method_name].output_fields
         | 
| 181 193 |  | 
| @@ -187,11 +199,11 @@ class ModelClient: | |
| 187 199 | 
             
                proto_inputs = []
         | 
| 188 200 | 
             
                for input in inputs:
         | 
| 189 201 | 
             
                  proto = resources_pb2.Input()
         | 
| 202 | 
            +
             | 
| 190 203 | 
             
                  serialize(input, input_signature, proto.data)
         | 
| 191 204 | 
             
                  proto_inputs.append(proto)
         | 
| 192 205 |  | 
| 193 206 | 
             
                response = self._predict_by_proto(proto_inputs, method_name)
         | 
| 194 | 
            -
                #print(response)
         | 
| 195 207 |  | 
| 196 208 | 
             
                outputs = []
         | 
| 197 209 | 
             
                for output in response.outputs:
         | 
| @@ -274,7 +286,6 @@ class ModelClient: | |
| 274 286 | 
             
                  proto_inputs.append(proto)
         | 
| 275 287 |  | 
| 276 288 | 
             
                response_stream = self._generate_by_proto(proto_inputs, method_name)
         | 
| 277 | 
            -
                #print(response)
         | 
| 278 289 |  | 
| 279 290 | 
             
                for response in response_stream:
         | 
| 280 291 | 
             
                  outputs = []
         | 
| @@ -386,7 +397,6 @@ class ModelClient: | |
| 386 397 | 
             
                    yield proto
         | 
| 387 398 |  | 
| 388 399 | 
             
                response_stream = self._stream_by_proto(_input_proto_stream(), method_name)
         | 
| 389 | 
            -
                #print(response)
         | 
| 390 400 |  | 
| 391 401 | 
             
                for response in response_stream:
         | 
| 392 402 | 
             
                  assert len(response.outputs) == 1, 'streaming methods must have exactly one output'
         | 
| @@ -308,7 +308,7 @@ class ModelBuilder: | |
| 308 308 | 
             
                """
         | 
| 309 309 | 
             
                model_class = self.load_model_class()
         | 
| 310 310 | 
             
                method_info = model_class._get_method_info()
         | 
| 311 | 
            -
                signatures = {name:  | 
| 311 | 
            +
                signatures = {method.name: method.signature for method in method_info.values()}
         | 
| 312 312 | 
             
                return signatures_to_yaml(signatures)
         | 
| 313 313 |  | 
| 314 314 | 
             
              def get_method_signatures(self):
         | 
| @@ -175,8 +175,20 @@ class Concept(MessageData): | |
| 175 175 |  | 
| 176 176 | 
             
            class Region(MessageData):
         | 
| 177 177 |  | 
| 178 | 
            -
              def __init__(self, | 
| 178 | 
            +
              def __init__(self,
         | 
| 179 | 
            +
                           proto_region: RegionProto = None,
         | 
| 180 | 
            +
                           box: List[float] = None,
         | 
| 181 | 
            +
                           concepts: List[Concept] = None):
         | 
| 182 | 
            +
                if proto_region is None:
         | 
| 183 | 
            +
                  proto_region = RegionProto()
         | 
| 179 184 | 
             
                self.proto = proto_region
         | 
| 185 | 
            +
                # use setters for init vals
         | 
| 186 | 
            +
                if box and isinstance(
         | 
| 187 | 
            +
                    box, list) and len(box) == 4 and all(isinstance(val, (int, float)) for val in box):
         | 
| 188 | 
            +
                  self.box = box
         | 
| 189 | 
            +
                if concepts and isinstance(concepts,
         | 
| 190 | 
            +
                                           list) and all(isinstance(concept, Concept) for concept in concepts):
         | 
| 191 | 
            +
                  self.concepts = concepts
         | 
| 180 192 |  | 
| 181 193 | 
             
              @property
         | 
| 182 194 | 
             
              def box(self) -> List[float]:
         | 
| @@ -291,9 +303,16 @@ class Image(MessageData): | |
| 291 303 |  | 
| 292 304 | 
             
            class Audio(MessageData):
         | 
| 293 305 |  | 
| 294 | 
            -
              def __init__(self, proto_audio: AudioProto):
         | 
| 306 | 
            +
              def __init__(self, proto_audio: AudioProto = None, url: str = None, bytes: bytes = None):
         | 
| 307 | 
            +
                if proto_audio is None:
         | 
| 308 | 
            +
                  proto_audio = AudioProto()
         | 
| 295 309 | 
             
                self.proto = proto_audio
         | 
| 296 310 |  | 
| 311 | 
            +
                if url:
         | 
| 312 | 
            +
                  self.url = url
         | 
| 313 | 
            +
                if bytes:
         | 
| 314 | 
            +
                  self.bytes = bytes
         | 
| 315 | 
            +
             | 
| 297 316 | 
             
              @property
         | 
| 298 317 | 
             
              def url(self) -> str:
         | 
| 299 318 | 
             
                return self.proto.url
         | 
| @@ -333,8 +352,21 @@ class Audio(MessageData): | |
| 333 352 |  | 
| 334 353 | 
             
            class Frame(MessageData):
         | 
| 335 354 |  | 
| 336 | 
            -
              def __init__(self, | 
| 355 | 
            +
              def __init__(self,
         | 
| 356 | 
            +
                           proto_frame: FrameProto = None,
         | 
| 357 | 
            +
                           image: Image = None,
         | 
| 358 | 
            +
                           regions: List[Region] = None,
         | 
| 359 | 
            +
                           time: float = None):
         | 
| 360 | 
            +
                if proto_frame is None:
         | 
| 361 | 
            +
                  proto_frame = FrameProto()
         | 
| 337 362 | 
             
                self.proto = proto_frame
         | 
| 363 | 
            +
                # use setters for init vals
         | 
| 364 | 
            +
                if image:
         | 
| 365 | 
            +
                  self.image = image
         | 
| 366 | 
            +
                if regions:
         | 
| 367 | 
            +
                  self.regions = regions
         | 
| 368 | 
            +
                if time:
         | 
| 369 | 
            +
                  self.time = time
         | 
| 338 370 |  | 
| 339 371 | 
             
              @property
         | 
| 340 372 | 
             
              def time(self) -> float:
         | 
| @@ -372,9 +404,16 @@ class Frame(MessageData): | |
| 372 404 |  | 
| 373 405 | 
             
            class Video(MessageData):
         | 
| 374 406 |  | 
| 375 | 
            -
              def __init__(self, proto_video: VideoProto):
         | 
| 407 | 
            +
              def __init__(self, proto_video: VideoProto = None, url: str = None, bytes: bytes = None):
         | 
| 408 | 
            +
                if proto_video is None:
         | 
| 409 | 
            +
                  proto_video = VideoProto()
         | 
| 376 410 | 
             
                self.proto = proto_video
         | 
| 377 411 |  | 
| 412 | 
            +
                if url:
         | 
| 413 | 
            +
                  self.url = url
         | 
| 414 | 
            +
                if bytes:
         | 
| 415 | 
            +
                  self.bytes = bytes
         | 
| 416 | 
            +
             | 
| 378 417 | 
             
              @property
         | 
| 379 418 | 
             
              def url(self) -> str:
         | 
| 380 419 | 
             
                return self.proto.url
         | 
| @@ -330,7 +330,8 @@ def _normalize_data_type(tp): | |
| 330 330 |  | 
| 331 331 | 
             
              # jsonable list and dict, these can be serialized as json
         | 
| 332 332 | 
             
              # (tuple we want to keep as a tuple for args and returns, so don't include here)
         | 
| 333 | 
            -
              if tp in (list, dict) or (get_origin(tp) in (list, dict) and _is_jsonable(tp) | 
| 333 | 
            +
              if tp in (list, dict) or (get_origin(tp) in (list, dict) and _is_jsonable(tp) and
         | 
| 334 | 
            +
                                        get_args(tp) is None):
         | 
| 334 335 | 
             
                return data_types.JSON
         | 
| 335 336 |  | 
| 336 337 | 
             
              # container types that need to be serialized as parts
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Metadata-Version: 2.1
         | 
| 2 2 | 
             
            Name: clarifai
         | 
| 3 | 
            -
            Version: 11.1. | 
| 3 | 
            +
            Version: 11.1.7rc4
         | 
| 4 4 | 
             
            Summary: Clarifai Python SDK
         | 
| 5 5 | 
             
            Home-page: https://github.com/Clarifai/clarifai-python
         | 
| 6 6 | 
             
            Author: Clarifai
         | 
| @@ -32,7 +32,7 @@ Requires-Dist: tabulate>=0.9.0 | |
| 32 32 | 
             
            Requires-Dist: fsspec>=2024.6.1
         | 
| 33 33 | 
             
            Requires-Dist: click>=8.1.7
         | 
| 34 34 | 
             
            Requires-Dist: requests>=2.32.3
         | 
| 35 | 
            -
            Requires-Dist: aiohttp>=3. | 
| 35 | 
            +
            Requires-Dist: aiohttp>=3.10.0
         | 
| 36 36 | 
             
            Provides-Extra: all
         | 
| 37 37 | 
             
            Requires-Dist: pycocotools==2.0.6; extra == "all"
         | 
| 38 38 |  | 
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            clarifai/__init__.py,sha256= | 
| 1 | 
            +
            clarifai/__init__.py,sha256=ifkdBMaRvYCzXalTvOKcl2DNqYnmG2YMz8JBP1t1moU,26
         | 
| 2 2 | 
             
            clarifai/cli.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 3 3 | 
             
            clarifai/errors.py,sha256=RwzTajwds51wLD0MVlMC5kcpBnzRpreDLlazPSBZxrg,2605
         | 
| 4 4 | 
             
            clarifai/versions.py,sha256=jctnczzfGk_S3EnVqb2FjRKfSREkNmvNEwAAa_VoKiQ,222
         | 
| @@ -31,7 +31,7 @@ clarifai/client/deployment.py,sha256=w7Y6pA1rYG4KRK1SwusRZc2sQRXlG8wezuVdzSWpCo0 | |
| 31 31 | 
             
            clarifai/client/input.py,sha256=obMAHMDU1OwfXZ8KraOnGFlWzlW-3F7Ob_2lcOQMlhY,46339
         | 
| 32 32 | 
             
            clarifai/client/lister.py,sha256=03KGMvs5RVyYqxLsSrWhNc34I8kiF1Ph0NeyEwu7nMU,2082
         | 
| 33 33 | 
             
            clarifai/client/model.py,sha256=DFlZLIExMUvYXc9hDzVLYka6_AbfG3vqLlhZkk4GfIY,76835
         | 
| 34 | 
            -
            clarifai/client/model_client.py,sha256= | 
| 34 | 
            +
            clarifai/client/model_client.py,sha256=FwI9XEDZjyrubK3ue0-gyTKwK_lShQcm8SoFc66aXiw,17537
         | 
| 35 35 | 
             
            clarifai/client/module.py,sha256=FTkm8s9m-EaTKN7g9MnLhGJ9eETUfKG7aWZ3o1RshYs,4204
         | 
| 36 36 | 
             
            clarifai/client/nodepool.py,sha256=la3vTFrO4LX8zm2eQ5jqf2L0-kQ63Dano8FibadoZbk,10152
         | 
| 37 37 | 
             
            clarifai/client/search.py,sha256=GaPWN6JmTQGZaCHr6U1yv0zqR6wKFl7i9IVLg2ul1CI,14254
         | 
| @@ -138,7 +138,7 @@ clarifai/runners/dockerfile_template/Dockerfile.nim,sha256=CSdUAehj3uOwminioLnT5 | |
| 138 138 | 
             
            clarifai/runners/dockerfile_template/Dockerfile.template,sha256=5cjv7U8PmWa3DB_5B1CqSYh_6GE0E0np52TIAa7EIDE,2312
         | 
| 139 139 | 
             
            clarifai/runners/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 140 140 | 
             
            clarifai/runners/models/base_typed_model.py,sha256=0QCWxch8CcyJSKvE1D4PILd2RSnQZHTmx4DXlQQ6dpo,7856
         | 
| 141 | 
            -
            clarifai/runners/models/model_builder.py,sha256= | 
| 141 | 
            +
            clarifai/runners/models/model_builder.py,sha256=GlMpJn1krpckvI0cqd8ujrCnoU62z-kqSI3nJfGJEwY,34788
         | 
| 142 142 | 
             
            clarifai/runners/models/model_class.py,sha256=qK5qk4geoFpqrRtl4VmKK90CIJKyWmD_vjJMqLWR_CQ,11854
         | 
| 143 143 | 
             
            clarifai/runners/models/model_class_refract.py,sha256=HxuozxSW7ag5yWCPxjNwgLArQ6dORhyGXlnpPaZz2-c,3211
         | 
| 144 144 | 
             
            clarifai/runners/models/model_run_locally.py,sha256=VZetm9Mko8MBjcjwr6PCnTU9gF3glgD5qvpbj-8tW2s,17962
         | 
| @@ -159,11 +159,11 @@ clarifai/runners/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3 | |
| 159 159 | 
             
            clarifai/runners/utils/const.py,sha256=bwj-Pcw558-pasdIFbNhnkn-9oiCdojYH1fNTTUG2gU,1048
         | 
| 160 160 | 
             
            clarifai/runners/utils/data_handler.py,sha256=b7k6MWYPXSgjrfw6wsDf82xFYa0D7UjYmjE4mw5HzHM,8499
         | 
| 161 161 | 
             
            clarifai/runners/utils/data_handler_refract.py,sha256=3M-V4hkOoF-9Ix4hE6ocXWiTJPc9dewtu6FMtddd-jQ,6343
         | 
| 162 | 
            -
            clarifai/runners/utils/data_types.py,sha256= | 
| 162 | 
            +
            clarifai/runners/utils/data_types.py,sha256=A6IYU55pdPFfoh0K6HkEgTPlgQVv2JUG5lOlqTu1w44,12258
         | 
| 163 163 | 
             
            clarifai/runners/utils/data_utils.py,sha256=R1iQ82TuQ9JwxCJk8yEB1Lyb0BYVhVbWJI9YDi1zGOs,318
         | 
| 164 164 | 
             
            clarifai/runners/utils/loader.py,sha256=SgNHMwRmCCymFQm8aDp73NmIUHhM-N60CBlTKbPzmVc,7470
         | 
| 165 165 | 
             
            clarifai/runners/utils/logger.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 166 | 
            -
            clarifai/runners/utils/method_signatures.py,sha256= | 
| 166 | 
            +
            clarifai/runners/utils/method_signatures.py,sha256=hwrZnSbnt4OSGqnrN7INghtuJm8EJm0CEnTpwlsGgmw,17468
         | 
| 167 167 | 
             
            clarifai/runners/utils/serializers.py,sha256=S4sRsOVvH191vAGTRTAAdwLlQwlK4T5QVRDGPptg9nQ,7191
         | 
| 168 168 | 
             
            clarifai/runners/utils/url_fetcher.py,sha256=v_8JOWmkyFAzsBulsieKX7Nfjy1Yg7wGSZeqfEvw2cg,1640
         | 
| 169 169 | 
             
            clarifai/runners/utils/__pycache__/__init__.cpython-310.pyc,sha256=0GGbXIecXlOZmQKMCkSRhEBY_a1zvoimv-mHG4pJuNA,167
         | 
| @@ -229,9 +229,9 @@ clarifai/workflows/__pycache__/__init__.cpython-39.pyc,sha256=9nA--jULSW7OFrYOcs | |
| 229 229 | 
             
            clarifai/workflows/__pycache__/export.cpython-310.pyc,sha256=phEGwi2gAojCUhRTqjZVeTDn7Gk6LCVBeSTjAj4m9iY,2418
         | 
| 230 230 | 
             
            clarifai/workflows/__pycache__/utils.cpython-310.pyc,sha256=M9_KTM7GOOS5SPrWwAzqHDqyGvgKi3xuSGvyw6MNf-I,1925
         | 
| 231 231 | 
             
            clarifai/workflows/__pycache__/validate.cpython-310.pyc,sha256=c18Jgp_-CAm8RD_tmUpDCPoqZeexaoWELG0yBzb9rjw,2149
         | 
| 232 | 
            -
            clarifai-11.1. | 
| 233 | 
            -
            clarifai-11.1. | 
| 234 | 
            -
            clarifai-11.1. | 
| 235 | 
            -
            clarifai-11.1. | 
| 236 | 
            -
            clarifai-11.1. | 
| 237 | 
            -
            clarifai-11.1. | 
| 232 | 
            +
            clarifai-11.1.7rc4.dist-info/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
         | 
| 233 | 
            +
            clarifai-11.1.7rc4.dist-info/METADATA,sha256=kufmH0KOUsaV0LTIz5ckGf8oF4zfCr5giQbrsAucNRo,22215
         | 
| 234 | 
            +
            clarifai-11.1.7rc4.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
         | 
| 235 | 
            +
            clarifai-11.1.7rc4.dist-info/entry_points.txt,sha256=X9FZ4Z-i_r2Ud1RpZ9sNIFYuu_-9fogzCMCRUD9hyX0,51
         | 
| 236 | 
            +
            clarifai-11.1.7rc4.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
         | 
| 237 | 
            +
            clarifai-11.1.7rc4.dist-info/RECORD,,
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         |