clarifai-grpc 6.4.0__py3-none-any.whl → 11.10.3__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.
Files changed (50) hide show
  1. clarifai_grpc/__init__.py +33 -0
  2. clarifai_grpc/channel/clarifai_channel.py +150 -44
  3. clarifai_grpc/channel/custom_converters/custom_dict_to_message.py +41 -34
  4. clarifai_grpc/channel/custom_converters/custom_message_to_dict.py +85 -74
  5. clarifai_grpc/channel/errors.py +5 -0
  6. clarifai_grpc/channel/exceptions.py +1 -1
  7. clarifai_grpc/channel/grpc_json_channel.py +387 -261
  8. clarifai_grpc/channel/http_client.py +125 -104
  9. clarifai_grpc/grpc/api/resources_pb2.py +984 -7266
  10. clarifai_grpc/grpc/api/resources_pb2.pyi +17925 -0
  11. clarifai_grpc/grpc/api/resources_pb2_grpc.py +1 -0
  12. clarifai_grpc/grpc/api/service_pb2.py +1578 -8672
  13. clarifai_grpc/grpc/api/service_pb2.pyi +18269 -0
  14. clarifai_grpc/grpc/api/service_pb2_grpc.py +9746 -1859
  15. clarifai_grpc/grpc/api/status/status_code_pb2.py +33 -1334
  16. clarifai_grpc/grpc/api/status/status_code_pb2.pyi +1210 -0
  17. clarifai_grpc/grpc/api/status/status_code_pb2_grpc.py +1 -0
  18. clarifai_grpc/grpc/api/status/status_pb2.py +23 -149
  19. clarifai_grpc/grpc/api/status/status_pb2.pyi +174 -0
  20. clarifai_grpc/grpc/api/status/status_pb2_grpc.py +1 -0
  21. clarifai_grpc/grpc/api/utils/extensions_pb2.py +13 -46
  22. clarifai_grpc/grpc/api/utils/extensions_pb2.pyi +39 -0
  23. clarifai_grpc/grpc/api/utils/extensions_pb2_grpc.py +1 -0
  24. clarifai_grpc/grpc/api/utils/matrix_pb2.py +26 -0
  25. clarifai_grpc/grpc/api/utils/matrix_pb2.pyi +53 -0
  26. clarifai_grpc/grpc/api/utils/matrix_pb2_grpc.py +4 -0
  27. clarifai_grpc/grpc/api/utils/test_proto_pb2.py +17 -158
  28. clarifai_grpc/grpc/api/utils/test_proto_pb2.pyi +107 -0
  29. clarifai_grpc/grpc/api/utils/test_proto_pb2_grpc.py +1 -0
  30. clarifai_grpc/grpc/auth/scope/scope_pb2.py +245 -448
  31. clarifai_grpc/grpc/auth/scope/scope_pb2.pyi +550 -0
  32. clarifai_grpc/grpc/auth/scope/scope_pb2_grpc.py +1 -0
  33. clarifai_grpc/grpc/auth/types/types_pb2.py +11 -62
  34. clarifai_grpc/grpc/auth/types/types_pb2.pyi +78 -0
  35. clarifai_grpc/grpc/auth/types/types_pb2_grpc.py +1 -0
  36. clarifai_grpc/grpc/auth/util/extension_pb2.py +14 -68
  37. clarifai_grpc/grpc/auth/util/extension_pb2.pyi +68 -0
  38. clarifai_grpc/grpc/auth/util/extension_pb2_grpc.py +1 -0
  39. clarifai_grpc-11.10.3.dist-info/METADATA +124 -0
  40. clarifai_grpc-11.10.3.dist-info/RECORD +53 -0
  41. {clarifai_grpc-6.4.0.dist-info → clarifai_grpc-11.10.3.dist-info}/WHEEL +1 -1
  42. {clarifai_grpc-6.4.0.dist-info → clarifai_grpc-11.10.3.dist-info}/top_level.txt +0 -2
  43. clarifai_grpc-6.4.0.dist-info/METADATA +0 -88
  44. clarifai_grpc-6.4.0.dist-info/RECORD +0 -46
  45. scripts/__init__.py +0 -0
  46. scripts/app_and_key_for_tests.py +0 -180
  47. tests/__init__.py +0 -0
  48. tests/helpers.py +0 -105
  49. tests/test_integration.py +0 -243
  50. {clarifai_grpc-6.4.0.dist-info → clarifai_grpc-11.10.3.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,78 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import sys
8
+ import typing
9
+
10
+ import google.protobuf.descriptor
11
+ import google.protobuf.internal.enum_type_wrapper
12
+
13
+ if sys.version_info >= (3, 10):
14
+ import typing as typing_extensions
15
+ else:
16
+ import typing_extensions
17
+
18
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
19
+
20
+ class _AuthType:
21
+ ValueType = typing.NewType("ValueType", builtins.int)
22
+ V: typing_extensions.TypeAlias = ValueType
23
+
24
+ class _AuthTypeEnumTypeWrapper(
25
+ google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AuthType.ValueType], builtins.type
26
+ ):
27
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
28
+ undef: _AuthType.ValueType # 0
29
+ """introduce undef so that the zero (default/unset) value of the enum is not a real
30
+ permission. undef is only present for this purpose and should not be used
31
+ to indicate any "real" value.
32
+ """
33
+ NoAuth: _AuthType.ValueType # 1
34
+ """No authorization need for this endpoint."""
35
+ KeyAuth: _AuthType.ValueType # 2
36
+ """This authorization requires API keys (both app-spceific keys and personal access tokens).
37
+ The endpoints that use this AuthType may also include a list of
38
+ clarifai.auth.utils.cl_depending_scopes.
39
+ """
40
+ SessionTokenAuth: _AuthType.ValueType # 3
41
+ """This uses a session token from your web browser. This is reserved for users/account level APIs
42
+ that are only needed in a browser.
43
+ """
44
+ AdminAuth: _AuthType.ValueType # 4
45
+ """This uses a special token for admin access to the APIs."""
46
+ PATAuth: _AuthType.ValueType # 5
47
+ """This authorization requires personal access tokens. This is used for endpoints such as
48
+ /users/{user_id}/apps which are not specific. An app-specific API key will not work
49
+ when PATAuth is used.
50
+ """
51
+
52
+ class AuthType(_AuthType, metaclass=_AuthTypeEnumTypeWrapper):
53
+ """Authorization type for endpoints."""
54
+
55
+ undef: AuthType.ValueType # 0
56
+ """introduce undef so that the zero (default/unset) value of the enum is not a real
57
+ permission. undef is only present for this purpose and should not be used
58
+ to indicate any "real" value.
59
+ """
60
+ NoAuth: AuthType.ValueType # 1
61
+ """No authorization need for this endpoint."""
62
+ KeyAuth: AuthType.ValueType # 2
63
+ """This authorization requires API keys (both app-spceific keys and personal access tokens).
64
+ The endpoints that use this AuthType may also include a list of
65
+ clarifai.auth.utils.cl_depending_scopes.
66
+ """
67
+ SessionTokenAuth: AuthType.ValueType # 3
68
+ """This uses a session token from your web browser. This is reserved for users/account level APIs
69
+ that are only needed in a browser.
70
+ """
71
+ AdminAuth: AuthType.ValueType # 4
72
+ """This uses a special token for admin access to the APIs."""
73
+ PATAuth: AuthType.ValueType # 5
74
+ """This authorization requires personal access tokens. This is used for endpoints such as
75
+ /users/{user_id}/apps which are not specific. An app-specific API key will not work
76
+ when PATAuth is used.
77
+ """
78
+ global___AuthType = AuthType
@@ -1,3 +1,4 @@
1
1
  # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
2
3
  import grpc
3
4
 
@@ -1,10 +1,10 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # source: proto/clarifai/auth/util/extension.proto
4
-
4
+ """Generated protocol buffer code."""
5
+ from google.protobuf.internal import builder as _builder
5
6
  from google.protobuf import descriptor as _descriptor
6
- from google.protobuf import message as _message
7
- from google.protobuf import reflection as _reflection
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
8
  from google.protobuf import symbol_database as _symbol_database
9
9
  # @@protoc_insertion_point(imports)
10
10
 
@@ -16,71 +16,17 @@ from clarifai_grpc.grpc.auth.types import types_pb2 as proto_dot_clarifai_dot_au
16
16
  from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor.FileDescriptor(
20
- name='proto/clarifai/auth/util/extension.proto',
21
- package='clarifai.auth.util',
22
- syntax='proto3',
23
- serialized_options=b'\n\033com.clarifai.grpc.auth.utilP\001Z\004util\242\002\004CAIP',
24
- serialized_pb=b'\n(proto/clarifai/auth/util/extension.proto\x12\x12\x63larifai.auth.util\x1a%proto/clarifai/auth/scope/scope.proto\x1a%proto/clarifai/auth/types/types.proto\x1a google/protobuf/descriptor.proto:9\n\x10\x63l_private_field\x12\x1d.google.protobuf.FieldOptions\x18\xc0\xf3\x04 \x01(\x08:8\n\x0e\x63l_private_rpc\x12\x1e.google.protobuf.MethodOptions\x18\xc1\xf3\x04 \x01(\x08:U\n\x13\x63l_depending_scopes\x12\x1e.google.protobuf.MethodOptions\x18\xc2\xf3\x04 \x03(\x0e\x32\x16.clarifai.auth.scope.S:U\n\x0c\x63l_auth_type\x12\x1e.google.protobuf.MethodOptions\x18\xc3\xf3\x04 \x01(\x0e\x32\x1d.clarifai.auth.types.AuthType:=\n\x12\x63l_private_message\x12\x1f.google.protobuf.MessageOptions\x18\xc4\xf3\x04 \x01(\x08\x42,\n\x1b\x63om.clarifai.grpc.auth.utilP\x01Z\x04util\xa2\x02\x04\x43\x41IPb\x06proto3'
25
- ,
26
- dependencies=[proto_dot_clarifai_dot_auth_dot_scope_dot_scope__pb2.DESCRIPTOR,proto_dot_clarifai_dot_auth_dot_types_dot_types__pb2.DESCRIPTOR,google_dot_protobuf_dot_descriptor__pb2.DESCRIPTOR,])
27
-
28
-
29
- CL_PRIVATE_FIELD_FIELD_NUMBER = 80320
30
- cl_private_field = _descriptor.FieldDescriptor(
31
- name='cl_private_field', full_name='clarifai.auth.util.cl_private_field', index=0,
32
- number=80320, type=8, cpp_type=7, label=1,
33
- has_default_value=False, default_value=False,
34
- message_type=None, enum_type=None, containing_type=None,
35
- is_extension=True, extension_scope=None,
36
- serialized_options=None, file=DESCRIPTOR)
37
- CL_PRIVATE_RPC_FIELD_NUMBER = 80321
38
- cl_private_rpc = _descriptor.FieldDescriptor(
39
- name='cl_private_rpc', full_name='clarifai.auth.util.cl_private_rpc', index=1,
40
- number=80321, type=8, cpp_type=7, label=1,
41
- has_default_value=False, default_value=False,
42
- message_type=None, enum_type=None, containing_type=None,
43
- is_extension=True, extension_scope=None,
44
- serialized_options=None, file=DESCRIPTOR)
45
- CL_DEPENDING_SCOPES_FIELD_NUMBER = 80322
46
- cl_depending_scopes = _descriptor.FieldDescriptor(
47
- name='cl_depending_scopes', full_name='clarifai.auth.util.cl_depending_scopes', index=2,
48
- number=80322, type=14, cpp_type=8, label=3,
49
- has_default_value=False, default_value=[],
50
- message_type=None, enum_type=None, containing_type=None,
51
- is_extension=True, extension_scope=None,
52
- serialized_options=None, file=DESCRIPTOR)
53
- CL_AUTH_TYPE_FIELD_NUMBER = 80323
54
- cl_auth_type = _descriptor.FieldDescriptor(
55
- name='cl_auth_type', full_name='clarifai.auth.util.cl_auth_type', index=3,
56
- number=80323, type=14, cpp_type=8, label=1,
57
- has_default_value=False, default_value=0,
58
- message_type=None, enum_type=None, containing_type=None,
59
- is_extension=True, extension_scope=None,
60
- serialized_options=None, file=DESCRIPTOR)
61
- CL_PRIVATE_MESSAGE_FIELD_NUMBER = 80324
62
- cl_private_message = _descriptor.FieldDescriptor(
63
- name='cl_private_message', full_name='clarifai.auth.util.cl_private_message', index=4,
64
- number=80324, type=8, cpp_type=7, label=1,
65
- has_default_value=False, default_value=False,
66
- message_type=None, enum_type=None, containing_type=None,
67
- is_extension=True, extension_scope=None,
68
- serialized_options=None, file=DESCRIPTOR)
69
-
70
- DESCRIPTOR.extensions_by_name['cl_private_field'] = cl_private_field
71
- DESCRIPTOR.extensions_by_name['cl_private_rpc'] = cl_private_rpc
72
- DESCRIPTOR.extensions_by_name['cl_depending_scopes'] = cl_depending_scopes
73
- DESCRIPTOR.extensions_by_name['cl_auth_type'] = cl_auth_type
74
- DESCRIPTOR.extensions_by_name['cl_private_message'] = cl_private_message
75
- _sym_db.RegisterFileDescriptor(DESCRIPTOR)
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(proto/clarifai/auth/util/extension.proto\x12\x12\x63larifai.auth.util\x1a%proto/clarifai/auth/scope/scope.proto\x1a%proto/clarifai/auth/types/types.proto\x1a google/protobuf/descriptor.proto:9\n\x10\x63l_private_field\x12\x1d.google.protobuf.FieldOptions\x18\xc0\xf3\x04 \x01(\x08:8\n\x0e\x63l_private_rpc\x12\x1e.google.protobuf.MethodOptions\x18\xc1\xf3\x04 \x01(\x08:U\n\x13\x63l_depending_scopes\x12\x1e.google.protobuf.MethodOptions\x18\xc2\xf3\x04 \x03(\x0e\x32\x16.clarifai.auth.scope.S:U\n\x0c\x63l_auth_type\x12\x1e.google.protobuf.MethodOptions\x18\xc3\xf3\x04 \x01(\x0e\x32\x1d.clarifai.auth.types.AuthType:=\n\x12\x63l_private_message\x12\x1f.google.protobuf.MessageOptions\x18\xc4\xf3\x04 \x01(\x08\x42\x65\n\x1b\x63om.clarifai.grpc.auth.utilP\x01Z=github.com/Clarifai/clarifai-go-grpc/proto/clarifai/auth/util\xa2\x02\x04\x43\x41IPb\x06proto3')
76
20
 
77
- google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(cl_private_field)
78
- google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(cl_private_rpc)
79
- cl_depending_scopes.enum_type = proto_dot_clarifai_dot_auth_dot_scope_dot_scope__pb2._S
80
- google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(cl_depending_scopes)
81
- cl_auth_type.enum_type = proto_dot_clarifai_dot_auth_dot_types_dot_types__pb2._AUTHTYPE
82
- google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(cl_auth_type)
83
- google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(cl_private_message)
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'proto.clarifai.auth.util.extension_pb2', globals())
23
+ if _descriptor._USE_C_DESCRIPTORS == False:
24
+ google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(cl_private_field)
25
+ google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(cl_private_rpc)
26
+ google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(cl_depending_scopes)
27
+ google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(cl_auth_type)
28
+ google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(cl_private_message)
84
29
 
85
- DESCRIPTOR._options = None
30
+ DESCRIPTOR._options = None
31
+ DESCRIPTOR._serialized_options = b'\n\033com.clarifai.grpc.auth.utilP\001Z=github.com/Clarifai/clarifai-go-grpc/proto/clarifai/auth/util\242\002\004CAIP'
86
32
  # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,68 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.descriptor_pb2
10
+ import google.protobuf.internal.containers
11
+ import google.protobuf.internal.extension_dict
12
+ import proto.clarifai.auth.scope.scope_pb2
13
+ import proto.clarifai.auth.types.types_pb2
14
+
15
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
16
+
17
+ CL_PRIVATE_FIELD_FIELD_NUMBER: builtins.int
18
+ CL_PRIVATE_RPC_FIELD_NUMBER: builtins.int
19
+ CL_DEPENDING_SCOPES_FIELD_NUMBER: builtins.int
20
+ CL_AUTH_TYPE_FIELD_NUMBER: builtins.int
21
+ CL_PRIVATE_MESSAGE_FIELD_NUMBER: builtins.int
22
+ cl_private_field: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[
23
+ google.protobuf.descriptor_pb2.FieldOptions, builtins.bool
24
+ ]
25
+ """indicates if this field should be private. If true, then internal use only. If False,
26
+ then publicly avaliable to world.
27
+ """
28
+ cl_private_rpc: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[
29
+ google.protobuf.descriptor_pb2.MethodOptions, builtins.bool
30
+ ]
31
+ """indicates if this rpc should be private. If true, then internal use only. If False,
32
+ then publicly available to world.
33
+ """
34
+ cl_depending_scopes: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[
35
+ google.protobuf.descriptor_pb2.MethodOptions,
36
+ google.protobuf.internal.containers.RepeatedScalarFieldContainer[
37
+ proto.clarifai.auth.scope.scope_pb2.S.ValueType
38
+ ],
39
+ ]
40
+ """For each grpc method we define a list of required low-level auth scopes that are needed
41
+ for the key that is issuing the request. These are checked at authorization time for the
42
+ request as one of the first things in the life of a request once it reaches out API
43
+ servers. There are additional checks for each scope when the resource is used throughout the
44
+ backend in order to protect that resource. For example, Inputs_Add protects the writes to the
45
+ inputs DB table. Since we know every PostInputs call needs to do that, we add Inputs_Add scope
46
+ to the cl_depending_scopes list for the PostInputs method.
47
+
48
+ This is only checked valid when used with KeyAuth cl_auth_type.
49
+
50
+ This should be the absolute minimum required scopes to make API calls with the method
51
+ that this options is used for. If there are some scopes that are needed some of the time
52
+ depending on the request, then leave those out as they will be checked at the tighest
53
+ possible portion of the codebase to protect that resource and won't effect every API call. For
54
+ example, the PostAnnotations call is often used to add concepts as well. If those concepts are
55
+ new, then the Concepts_Add scope will be needed. But since you don't always annotate with
56
+ concepts, it is not a hard requirements that Concepts_Add is used.
57
+ """
58
+ cl_auth_type: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[
59
+ google.protobuf.descriptor_pb2.MethodOptions,
60
+ proto.clarifai.auth.types.types_pb2.AuthType.ValueType,
61
+ ]
62
+ """This is the authorizer type for the endpoint our of multiple backend authorizers."""
63
+ cl_private_message: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[
64
+ google.protobuf.descriptor_pb2.MessageOptions, builtins.bool
65
+ ]
66
+ """indicates if this message should be private. If true, then internal use only. If False,
67
+ then publicly avaliable to world.
68
+ """
@@ -1,3 +1,4 @@
1
1
  # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
2
3
  import grpc
3
4
 
@@ -0,0 +1,124 @@
1
+ Metadata-Version: 2.4
2
+ Name: clarifai-grpc
3
+ Version: 11.10.3
4
+ Summary: Clarifai gRPC API Client
5
+ Home-page: https://github.com/Clarifai/clarifai-python-grpc
6
+ Author: Clarifai
7
+ Author-email: support@clarifai.com
8
+ License: Apache 2.0
9
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: License :: OSI Approved :: Apache Software License
12
+ Classifier: Operating System :: OS Independent
13
+ Requires-Python: >=3.8
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Requires-Dist: grpcio>=1.53.2; python_version < "3.13"
17
+ Requires-Dist: grpcio>=1.68.0; python_version >= "3.13"
18
+ Requires-Dist: protobuf>=5.29.5
19
+ Requires-Dist: googleapis-common-protos>=1.57.0
20
+ Dynamic: author
21
+ Dynamic: author-email
22
+ Dynamic: classifier
23
+ Dynamic: description
24
+ Dynamic: description-content-type
25
+ Dynamic: home-page
26
+ Dynamic: license
27
+ Dynamic: license-file
28
+ Dynamic: requires-dist
29
+ Dynamic: requires-python
30
+ Dynamic: summary
31
+
32
+ ![image](https://github.com/user-attachments/assets/e52874e7-9246-4d55-ad9d-18b1f44aee1a)
33
+
34
+
35
+ # Clarifai Python gRPC Client
36
+
37
+ This is the official Clarifai gRPC Python client for interacting with our powerful recognition
38
+ [API](https://docs.clarifai.com).
39
+ Clarifai provides a platform for data scientists, developers, researchers and enterprises to master the entire
40
+ artificial intelligence lifecycle. Gather valuable business insights from images, video and text using computer vision
41
+ and natural language processing.
42
+
43
+ * Try the Clarifai demo at: https://clarifai.com/demo
44
+ * Sign up for a free account at: https://portal.clarifai.com/signup
45
+ * Read the documentation at: https://docs.clarifai.com/
46
+
47
+
48
+ [![PyPI version](https://pypip.in/v/clarifai-grpc/badge.png)](https://pypi.python.org/pypi/clarifai-grpc)
49
+ [![Build](https://github.com/Clarifai/clarifai-python-grpc/workflows/Run%20tests/badge.svg)](https://github.com/Clarifai/clarifai-python-grpc/actions)
50
+
51
+ ## Installation
52
+
53
+ ```cmd
54
+ python -m pip install clarifai-grpc
55
+ ```
56
+
57
+ ## Versioning
58
+
59
+ This library doesn't use semantic versioning. The first two version numbers (`X.Y` out of `X.Y.Z`) follow the API (backend) versioning, and
60
+ whenever the API gets updated, this library follows it.
61
+
62
+ The third version number (`Z` out of `X.Y.Z`) is used by this library for any independent releases of library-specific improvements and bug fixes.
63
+
64
+ ## Getting started
65
+
66
+ Construct the `V2Stub` object using which you'll access all the Clarifai API functionality:
67
+
68
+ ```python
69
+ from clarifai_grpc.channel.clarifai_channel import ClarifaiChannel
70
+ from clarifai_grpc.grpc.api import service_pb2_grpc
71
+
72
+ stub = service_pb2_grpc.V2Stub(ClarifaiChannel.get_grpc_channel())
73
+ ```
74
+
75
+ > Alternatives to the encrypted gRPC channel (`ClarifaiChannel.get_grpc_channel()`) are:
76
+ > - the HTTPS+JSON channel (`ClarifaiChannel.get_json_channel()`), and
77
+ > - the unencrypted gRPC channel (`ClarifaiChannel.get_insecure_grpc_channel()`).
78
+ >
79
+ > We only recommend them in special cases.
80
+
81
+ Predict concepts in an image:
82
+
83
+ ```python
84
+ from clarifai_grpc.grpc.api import service_pb2, resources_pb2
85
+ from clarifai_grpc.grpc.api.status import status_code_pb2
86
+
87
+ YOUR_CLARIFAI_API_KEY = "???"
88
+ YOUR_APPLICATION_ID = "???"
89
+ SAMPLE_URL = "https://samples.clarifai.com/metro-north.jpg"
90
+
91
+ # This is how you authenticate.
92
+ metadata = (("authorization", f"Key {YOUR_CLARIFAI_API_KEY}"),)
93
+
94
+ request = service_pb2.PostModelOutputsRequest(
95
+ # This is the model ID of a publicly available General model. You may use any other public or custom model ID.
96
+ model_id="general-image-recognition",
97
+ user_app_id=resources_pb2.UserAppIDSet(app_id=YOUR_APPLICATION_ID),
98
+ inputs=[
99
+ resources_pb2.Input(
100
+ data=resources_pb2.Data(image=resources_pb2.Image(url=SAMPLE_URL))
101
+ )
102
+ ],
103
+ )
104
+ response = stub.PostModelOutputs(request, metadata=metadata)
105
+
106
+ if response.status.code != status_code_pb2.SUCCESS:
107
+ print(response)
108
+ raise Exception(f"Request failed, status code: {response.status}")
109
+
110
+ for concept in response.outputs[0].data.concepts:
111
+ print("%12s: %.2f" % (concept.name, concept.value))
112
+ ```
113
+
114
+ See [the Clarifai API documentation](https://docs.clarifai.com/) for all available functionality.
115
+
116
+ ## Troubleshooting
117
+
118
+ #### I get the following error when installing the library: `Failed building wheel for grpcio`
119
+
120
+ Try upgrading **setuptools** to a version `40.7.1` or higher.
121
+ ```
122
+ pip install --upgrade setuptools
123
+ ```
124
+ Source: https://github.com/grpc/grpc/issues/17829
@@ -0,0 +1,53 @@
1
+ clarifai_grpc/__init__.py,sha256=kVnsKERcMFhHiAajrKw2Kd1G7W4shJi5RDgE0paPcX8,1441
2
+ clarifai_grpc/channel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ clarifai_grpc/channel/clarifai_channel.py,sha256=fGqFlagWzKhRny-RAxbKlXT9_k9HohPs9yCKmkkQZ5c,5770
4
+ clarifai_grpc/channel/errors.py,sha256=VUoLZLLcIfI2nOGlz1dzbOKQJhGodOO98pSSjlsRD6s,183
5
+ clarifai_grpc/channel/exceptions.py,sha256=q7TXcei0nUQRF1H4tBIRxDVTJmFB1eCQcdeDxbEbTnY,45
6
+ clarifai_grpc/channel/grpc_json_channel.py,sha256=y8wY4HVz_9iKEReziqpwemmixZWiRgvRjBmQkSRzEhg,17317
7
+ clarifai_grpc/channel/http_client.py,sha256=JneyYYjTFiYTNKzxetGK26FkKpmunGOO8qulYHeUs_4,5746
8
+ clarifai_grpc/channel/custom_converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ clarifai_grpc/channel/custom_converters/custom_dict_to_message.py,sha256=aAOjcIGF-Dav0526URTDpq9NPP306zXjNsoHAOUVRpU,1790
10
+ clarifai_grpc/channel/custom_converters/custom_message_to_dict.py,sha256=w-GeM4wYO5WcmjDjykw2wbXVpfy-A0_mkO9-3bPW4FE,3699
11
+ clarifai_grpc/grpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ clarifai_grpc/grpc/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ clarifai_grpc/grpc/api/resources_pb2.py,sha256=vYa7_vfn_kMuFvjI25fUvJuHbP2fGBQZPwPpEqGJuO4,159000
14
+ clarifai_grpc/grpc/api/resources_pb2.pyi,sha256=43-4wT3UoDj1pbf3DIZQOAvNWOAbROJf6jfO8JBsGvo,657355
15
+ clarifai_grpc/grpc/api/resources_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
16
+ clarifai_grpc/grpc/api/service_pb2.py,sha256=R7xa7IGteMN-BJNco37cVMLi_SEGWVgtdi2hMpuXtZ0,348160
17
+ clarifai_grpc/grpc/api/service_pb2.pyi,sha256=0CyEcJzpJ63TWjvMRTocLXEZfOUhJPeBAL0cGr2Dv-Q,643799
18
+ clarifai_grpc/grpc/api/service_pb2_grpc.py,sha256=HHsaS9HkwevisJUoWTdaJzmlS9YfL_nZzFMdK4pcbDE,521648
19
+ clarifai_grpc/grpc/api/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ clarifai_grpc/grpc/api/status/status_code_pb2.py,sha256=kZDMaRt8egpCvMFiYI3qgQw-N4J7OTX14WIC57LJ3Wo,26113
21
+ clarifai_grpc/grpc/api/status/status_code_pb2.pyi,sha256=JjSmzQZ-zoFos1TjYPt9jTjgmKx28wwG_dvOjKlpmtE,65414
22
+ clarifai_grpc/grpc/api/status/status_code_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
23
+ clarifai_grpc/grpc/api/status/status_pb2.py,sha256=dfwA6ovKn4fmkin32wMeU3zt5m0l6Yoi_638vaHO13k,3027
24
+ clarifai_grpc/grpc/api/status/status_pb2.pyi,sha256=A0jP_QC-kXOuDuGOOf9WKtoI4d-2rmx1HlMFj8expnM,5730
25
+ clarifai_grpc/grpc/api/status/status_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
26
+ clarifai_grpc/grpc/api/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ clarifai_grpc/grpc/api/utils/extensions_pb2.py,sha256=Yf47zH0OUjtLpYUPYBfyO57L2NMHGHjsCrMQH2fBHJ8,2033
28
+ clarifai_grpc/grpc/api/utils/extensions_pb2.pyi,sha256=ISBnBiBi_sgiGANuNj7SiekqpfR353C6TyoWhZS1GAE,1667
29
+ clarifai_grpc/grpc/api/utils/extensions_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
30
+ clarifai_grpc/grpc/api/utils/matrix_pb2.py,sha256=nFwor71OXdgfoLcqMxdREWg316r1JR3qwRin_ZGiMqc,1294
31
+ clarifai_grpc/grpc/api/utils/matrix_pb2.pyi,sha256=N7N15tIHDbBmGN0TvFc4xTRMrmI2f-pRRxtrBU03gY8,1608
32
+ clarifai_grpc/grpc/api/utils/matrix_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
33
+ clarifai_grpc/grpc/api/utils/test_proto_pb2.py,sha256=ViEUFtuEYwV2yoJNnur8aC5TaiVx-I9uxshzsazeWjQ,2362
34
+ clarifai_grpc/grpc/api/utils/test_proto_pb2.pyi,sha256=AJAufd_C14CjPTF9ANkLR44vfL_pUS5Za0MlNFHsovU,2959
35
+ clarifai_grpc/grpc/api/utils/test_proto_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
36
+ clarifai_grpc/grpc/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ clarifai_grpc/grpc/auth/scope/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ clarifai_grpc/grpc/auth/scope/scope_pb2.py,sha256=w0zWKaIRouOoXFt0IXIwvqFKWwGdrWvfrgnqRlotYQg,27494
39
+ clarifai_grpc/grpc/auth/scope/scope_pb2.pyi,sha256=LeNZMnqami7NHG9EVLcpOyBPuBJnY1__XSE_0qqabjA,21082
40
+ clarifai_grpc/grpc/auth/scope/scope_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
41
+ clarifai_grpc/grpc/auth/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ clarifai_grpc/grpc/auth/types/types_pb2.py,sha256=009fUNv2HGn-RikE5Bljy7N6RC_Y28vAypyRE2D08zg,1460
43
+ clarifai_grpc/grpc/auth/types/types_pb2.pyi,sha256=X5hx07e6UKKB_UQmLnWPBz6fhiQncnf3JmLu-O1JlCw,3012
44
+ clarifai_grpc/grpc/auth/types/types_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
45
+ clarifai_grpc/grpc/auth/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ clarifai_grpc/grpc/auth/util/extension_pb2.py,sha256=Fnx7qS6aB9HsjxzALVRrGZm_1RAvUnWN-ZG3P6_AurA,2612
47
+ clarifai_grpc/grpc/auth/util/extension_pb2.pyi,sha256=k4sOr3PHePx3u7zP2ZghKMLc_xF2O4E-vKYsQO1ZdSw,3288
48
+ clarifai_grpc/grpc/auth/util/extension_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
49
+ clarifai_grpc-11.10.3.dist-info/licenses/LICENSE,sha256=GuQZ4iPZUwh44duTbVr7ZzYp_SaJDLR9MvzU7YqlZXM,555
50
+ clarifai_grpc-11.10.3.dist-info/METADATA,sha256=co0uRQyaM79C_9nDmAMAivQ4b1ayiN5hExb_uyZdrE0,4428
51
+ clarifai_grpc-11.10.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
52
+ clarifai_grpc-11.10.3.dist-info/top_level.txt,sha256=azOUiixWkDpdb3gn_YNgz8sbAfhNvZuC3_9qI7hNQac,14
53
+ clarifai_grpc-11.10.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.34.2)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,3 +1 @@
1
1
  clarifai_grpc
2
- scripts
3
- tests
@@ -1,88 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: clarifai-grpc
3
- Version: 6.4.0
4
- Summary: Clarifai gRPC API Client
5
- Home-page: https://github.com/Clarifai/clarifai-python-grpc
6
- Author: Clarifai
7
- Author-email: support@clarifai.com
8
- License: Apache 2.0
9
- Platform: UNKNOWN
10
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
11
- Classifier: Programming Language :: Python :: 3
12
- Classifier: License :: OSI Approved :: Apache Software License
13
- Classifier: Operating System :: OS Independent
14
- Requires-Python: >=3.6
15
- Description-Content-Type: text/markdown
16
- Requires-Dist: grpcio (>=1.25.0)
17
- Requires-Dist: protobuf (>=3.10.0)
18
- Requires-Dist: googleapis-common-protos (>=1.6.0)
19
- Requires-Dist: requests (>=2.22.0)
20
-
21
- ![Clarifai logo](docs/logo.png)
22
-
23
- # Clarifai Python gRPC Client
24
-
25
- This is the official Clarifai gRPC Python client for interacting with our powerful recognition
26
- [API](https://docs.clarifai.com).
27
- The Clarifai API offers image and video recognition as a service. Whether you have one image or
28
- billions, you are only steps away from using artificial intelligence to recognize your visual
29
- content.
30
-
31
- * Try the Clarifai demo at: https://clarifai.com/demo
32
- * Sign up for a free account at: https://portal.clarifai.com/signup
33
- * Read the documentation at: https://docs.clarifai.com/
34
-
35
-
36
- ![Build](https://github.com/Clarifai/clarifai-python-grpc/workflows/Run%20tests/badge.svg)
37
- [![PyPI version](https://pypip.in/v/clarifai-grpc/badge.png)](https://pypi.python.org/pypi/clarifai-grpc)
38
-
39
- ## Installation
40
-
41
- ```cmd
42
- pip install clarifai-grpc
43
- ```
44
-
45
- ## Getting started
46
-
47
- Alternatively to using the gRPC channel, it is also possible to use the HTTP+JSON channel with the
48
- exact same request / response handling code.
49
-
50
- Construct the channel you want to use:
51
-
52
- ```python
53
- from clarifai_grpc.channel.clarifai_channel import ClarifaiChannel
54
-
55
- # Construct one of the channels you want to use
56
- channel = ClarifaiChannel.get_json_channel()
57
- channel = ClarifaiChannel.get_insecure_grpc_channel()
58
-
59
- # Note: You can also use a secure (encrypted) ClarifaiChannel.get_grpc_channel() however
60
- # it is currently not possible to use it with the latest gRPC version.
61
- ```
62
-
63
- Predict concepts in an image:
64
-
65
- ```python
66
- from clarifai_grpc.grpc.api import service_pb2_grpc, service_pb2, resources_pb2
67
- from clarifai_grpc.grpc.api.status import status_code_pb2
68
-
69
- stub = service_pb2_grpc.V2Stub(channel)
70
-
71
- request = service_pb2.PostModelOutputsRequest(
72
- model_id='aaa03c23b3724a16a56b629203edc62c',
73
- inputs=[
74
- resources_pb2.Input(data=resources_pb2.Data(image=resources_pb2.Image(url='YOUR_IMAGE_URL')))
75
- ])
76
- metadata = (('authorization', 'Key YOUR_CLARIFAI_API_KEY'),)
77
-
78
- response = stub.PostModelOutputs(request, metadata=metadata)
79
-
80
- if response.status.code != status_code_pb2.SUCCESS:
81
- raise Exception("Request failed, status code: " + str(response.status.code))
82
-
83
-
84
- for concept in response.outputs[0].data.concepts:
85
- print('%12s: %.2f' % (concept.name, concept.value))
86
- ```
87
-
88
-
@@ -1,46 +0,0 @@
1
- clarifai_grpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- clarifai_grpc/channel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- clarifai_grpc/channel/clarifai_channel.py,sha256=johfSlSBB0k2pyHBsjgKDi7rbDCiPhwWrqMDhnAxVTs,1724
4
- clarifai_grpc/channel/errors.py,sha256=0TdxPnRjpqyL_l4mV-oRd5nuLZz9CFWO8uf9z-q6-Iw,76
5
- clarifai_grpc/channel/exceptions.py,sha256=LFqT9nYkSGV6VSO56oWyjIwY27UA7_XA12v06cRCEOI,43
6
- clarifai_grpc/channel/grpc_json_channel.py,sha256=g45-ESPt0hOZWpC7PIpBk2kiX-m662k7nMOebVsdYmg,11052
7
- clarifai_grpc/channel/http_client.py,sha256=qawVHq5yzNT1CAflwW5XaKCABIxG2EmhVQAzyFltar0,4713
8
- clarifai_grpc/channel/custom_converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- clarifai_grpc/channel/custom_converters/custom_dict_to_message.py,sha256=vWb_T10nFB-M5U9dK7D3Bned1_ojr645WHAOjRXUgzA,1732
10
- clarifai_grpc/channel/custom_converters/custom_message_to_dict.py,sha256=UN9-iSU0S76r8xADuXKSZqFjYJRIoBmWFurgEaQzQKY,3207
11
- clarifai_grpc/grpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- clarifai_grpc/grpc/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- clarifai_grpc/grpc/api/resources_pb2.py,sha256=8a3AwKEpKsOlTJUOnWS1koKMS0fXOrZa5dKztcuMyZs,318656
14
- clarifai_grpc/grpc/api/resources_pb2_grpc.py,sha256=s9KvvTKGqObFxOBLz6ktRK2g4c8yLiOXt7p2M71egTM,83
15
- clarifai_grpc/grpc/api/service_pb2.py,sha256=VrqjhZLewdkGNbs-AbahBCFpuFxNKm9xkyH8SQ-zgvM,421430
16
- clarifai_grpc/grpc/api/service_pb2_grpc.py,sha256=LLi_QRbbGCcrXDir_QFjasG4nQ0ZfFKQxHKoS9-qSMQ,100657
17
- clarifai_grpc/grpc/api/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- clarifai_grpc/grpc/api/status/status_code_pb2.py,sha256=QDSdTw3Q-LlodFIMx5perGS8zr-ChJFRkf6jQqPAamk,62471
19
- clarifai_grpc/grpc/api/status/status_code_pb2_grpc.py,sha256=s9KvvTKGqObFxOBLz6ktRK2g4c8yLiOXt7p2M71egTM,83
20
- clarifai_grpc/grpc/api/status/status_pb2.py,sha256=jqdUveUTa9H9NJeTbx_j59D8O4HGZssUoIvwq-eDF5I,7213
21
- clarifai_grpc/grpc/api/status/status_pb2_grpc.py,sha256=s9KvvTKGqObFxOBLz6ktRK2g4c8yLiOXt7p2M71egTM,83
22
- clarifai_grpc/grpc/api/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- clarifai_grpc/grpc/api/utils/extensions_pb2.py,sha256=ZK2VfQJMzb--UNlR0r_RE3noPR8PYJAS8-btTufZ3rs,3112
24
- clarifai_grpc/grpc/api/utils/extensions_pb2_grpc.py,sha256=s9KvvTKGqObFxOBLz6ktRK2g4c8yLiOXt7p2M71egTM,83
25
- clarifai_grpc/grpc/api/utils/test_proto_pb2.py,sha256=6EkxyTkSRvp05DLHNf4teuRitgkEKC7JqyttFaPVnY8,7682
26
- clarifai_grpc/grpc/api/utils/test_proto_pb2_grpc.py,sha256=s9KvvTKGqObFxOBLz6ktRK2g4c8yLiOXt7p2M71egTM,83
27
- clarifai_grpc/grpc/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- clarifai_grpc/grpc/auth/scope/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- clarifai_grpc/grpc/auth/scope/scope_pb2.py,sha256=FBFaATEJFkFpIvX2b-UnqYnYaMrR5Wq5CZLKatwiCdo,22110
30
- clarifai_grpc/grpc/auth/scope/scope_pb2_grpc.py,sha256=s9KvvTKGqObFxOBLz6ktRK2g4c8yLiOXt7p2M71egTM,83
31
- clarifai_grpc/grpc/auth/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- clarifai_grpc/grpc/auth/types/types_pb2.py,sha256=yG6owDhqA0bKs_xFg76NeGRi37pSVDPer4eDrcz9kSo,2464
33
- clarifai_grpc/grpc/auth/types/types_pb2_grpc.py,sha256=s9KvvTKGqObFxOBLz6ktRK2g4c8yLiOXt7p2M71egTM,83
34
- clarifai_grpc/grpc/auth/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- clarifai_grpc/grpc/auth/util/extension_pb2.py,sha256=5Ox3UhQpgOb2RKdWer2xMOH87UqFKMsi_Lipu4B_L4k,5116
36
- clarifai_grpc/grpc/auth/util/extension_pb2_grpc.py,sha256=s9KvvTKGqObFxOBLz6ktRK2g4c8yLiOXt7p2M71egTM,83
37
- scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- scripts/app_and_key_for_tests.py,sha256=tNBK1SSUwfmx1TvosUBlolIOiD0sbkCTHDpLc2G9bZA,5772
39
- tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- tests/helpers.py,sha256=OdK1B6NyGw21t5uAwZkK8W_ivpQACU6BGc3ih1Tyc3s,3765
41
- tests/test_integration.py,sha256=Qh4EGN-jsLgRq-d8JtXy1ZG0hY76SbtanNsIM3aNjio,7503
42
- clarifai_grpc-6.4.0.dist-info/LICENSE,sha256=GuQZ4iPZUwh44duTbVr7ZzYp_SaJDLR9MvzU7YqlZXM,555
43
- clarifai_grpc-6.4.0.dist-info/METADATA,sha256=YUD-NAtbVF-eexe_7fvVnyfJbnwc3xrI5_bPGB2K0O4,2915
44
- clarifai_grpc-6.4.0.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
45
- clarifai_grpc-6.4.0.dist-info/top_level.txt,sha256=xYwE7KtA-nm0DbV0hUQBoiA-dhTz0Ha_NdNFl8zXcGk,28
46
- clarifai_grpc-6.4.0.dist-info/RECORD,,
scripts/__init__.py DELETED
File without changes