chalk-remote-call-python 1.1.2__tar.gz → 1.2.0__tar.gz

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 (52) hide show
  1. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/PKG-INFO +1 -1
  2. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/auth/v1/permissions_pb2.py +99 -0
  3. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/auth/v1/permissions_pb2_grpc.py +4 -0
  4. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/common/__init__.py +0 -0
  5. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/common/v1/__init__.py +0 -0
  6. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/common/v1/chalk_error_pb2.py +33 -0
  7. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/common/v1/chalk_error_pb2_grpc.py +4 -0
  8. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/runtime/__init__.py +0 -0
  9. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/runtime/v1/__init__.py +0 -0
  10. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/runtime/v1/remote_python_call_pb2.py +64 -0
  11. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/runtime/v1/remote_python_call_pb2_grpc.py +260 -0
  12. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/utils/__init__.py +0 -0
  13. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/utils/v1/__init__.py +0 -0
  14. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/utils/v1/encoding_pb2.py +32 -0
  15. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/utils/v1/encoding_pb2_grpc.py +4 -0
  16. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/utils/v1/field_change_pb2.py +29 -0
  17. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/utils/v1/field_change_pb2_grpc.py +4 -0
  18. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/utils/v1/sensitive_pb2.py +26 -0
  19. chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/utils/v1/sensitive_pb2_grpc.py +4 -0
  20. chalk_remote_call_python-1.2.0/chalk_remote_call/_version.py +1 -0
  21. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/servicer.py +39 -0
  22. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call_python.egg-info/PKG-INFO +1 -1
  23. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call_python.egg-info/SOURCES.txt +16 -0
  24. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/tests/test_servicer.py +104 -1
  25. chalk_remote_call_python-1.1.2/chalk_remote_call/_gen/chalk/runtime/v1/remote_python_call_pb2.py +0 -31
  26. chalk_remote_call_python-1.1.2/chalk_remote_call/_gen/chalk/runtime/v1/remote_python_call_pb2_grpc.py +0 -66
  27. chalk_remote_call_python-1.1.2/chalk_remote_call/_version.py +0 -1
  28. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/README.md +0 -0
  29. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/__init__.py +0 -0
  30. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/__main__.py +0 -0
  31. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/_gen/__init__.py +0 -0
  32. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/_gen/chalk/__init__.py +0 -0
  33. {chalk_remote_call_python-1.1.2/chalk_remote_call/_gen/chalk/runtime → chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/auth}/__init__.py +0 -0
  34. {chalk_remote_call_python-1.1.2/chalk_remote_call/_gen/chalk/runtime → chalk_remote_call_python-1.2.0/chalk_remote_call/_gen/chalk/auth}/v1/__init__.py +0 -0
  35. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/_native.pyi +0 -0
  36. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/arrow_utils.py +0 -0
  37. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/cli.py +0 -0
  38. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/handler_loader.py +0 -0
  39. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/input_transform.py +0 -0
  40. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call/server.py +0 -0
  41. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call_python.egg-info/dependency_links.txt +0 -0
  42. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call_python.egg-info/entry_points.txt +0 -0
  43. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call_python.egg-info/requires.txt +0 -0
  44. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/chalk_remote_call_python.egg-info/top_level.txt +0 -0
  45. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/pyproject.toml +0 -0
  46. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/setup.cfg +0 -0
  47. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/setup.py +0 -0
  48. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/tests/test_arrow_utils.py +0 -0
  49. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/tests/test_end_to_end.py +0 -0
  50. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/tests/test_error_paths.py +0 -0
  51. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/tests/test_handler_loader.py +0 -0
  52. {chalk_remote_call_python-1.1.2 → chalk_remote_call_python-1.2.0}/tests/test_input_transform.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chalk-remote-call-python
3
- Version: 1.1.2
3
+ Version: 1.2.0
4
4
  Summary: Chalk remote call Python runtime interface client
5
5
  Author: Chalk AI, Inc.
6
6
  Project-URL: Homepage, https://chalk.ai
@@ -0,0 +1,99 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: chalk/auth/v1/permissions.proto
4
+ # Protobuf Python Version: 4.25.3
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from chalk_remote_call._gen.chalk.utils.v1 import encoding_pb2 as chalk_dot_utils_dot_v1_dot_encoding__pb2
16
+ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
17
+
18
+
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63halk/auth/v1/permissions.proto\x12\rchalk.auth.v1\x1a\x1d\x63halk/utils/v1/encoding.proto\x1a google/protobuf/descriptor.proto*\x9b\x1c\n\nPermission\x12R\n\x16PERMISSION_UNSPECIFIED\x10\x00\x1a\x36\xca>%Default value -- should never be set.\xd2>\x0bunspecified\x12O\n#PERMISSION_INSECURE_UNAUTHENTICATED\x10\x01\x1a&\xca>\x18Unauthenticated endpoint\xd2>\x08insecure\x12\x66\n\x18PERMISSION_AUTHENTICATED\x10\x02\x1aH\xca>5User is authenticated, but no permissions are checked\xd2>\rauthenticated\x12\x45\n\x17PERMISSION_QUERY_ONLINE\x10\x03\x1a(\xca>\x16Query online features.\xd2>\x0cquery.online\x12H\n\x18PERMISSION_QUERY_OFFLINE\x10\x04\x1a*\xca>\x17Query offline features.\xd2>\rquery.offline\x12T\n\x1cPERMISSION_MONITORING_CREATE\x10\x05\x1a\x32\xca>\x1b\x43reate a new chart or alert\xd2>\x11monitoring.create\x12J\n\x1aPERMISSION_MONITORING_READ\x10\x06\x1a*\xca>\x15See charts and alerts\xd2>\x0fmonitoring.read\x12L\n\x13PERMISSION_TEAM_ADD\x10\x07\x1a\x33\xca>%Add team members to your organization\xd2>\x08team.add\x12\x41\n\x16PERMISSION_TEAM_DELETE\x10\x08\x1a%\xca>\x14Remove a team member\xd2>\x0bteam.delete\x12R\n\x14PERMISSION_TEAM_LIST\x10\t\x1a\x38\xca>)See the team members in your organization\xd2>\tteam.list\x12\x61\n\x15PERMISSION_TEAM_ADMIN\x10\n\x1a\x46\xca>6Configure authentication options for your organization\xd2>\nteam.admin\x12P\n\x16PERMISSION_DEPLOY_READ\x10\x0b\x1a\x34\xca>#Read information about deployments.\xd2>\x0b\x64\x65ploy.read\x12I\n\x18PERMISSION_DEPLOY_CREATE\x10\x0c\x1a+\xca>\x18\x43reate a new deployment.\xd2>\rdeploy.create\x12R\n\x19PERMISSION_DEPLOY_PREVIEW\x10\r\x1a\x33\xca>\x1f\x43reate a new branch deployment.\xd2>\x0e\x64\x65ploy.preview\x12U\n\x1aPERMISSION_DEPLOY_REDEPLOY\x10\x0e\x1a\x35\xca> Redeploy an existing deployment.\xd2>\x0f\x64\x65ploy.redeploy\x12\x42\n\x14PERMISSION_LOGS_LIST\x10\x0f\x1a(\xca>\x19Read logs from resolvers.\xd2>\tlogs.list\x12\x41\n\x14PERMISSION_CRON_READ\x10\x10\x1a\'\xca>\x18Read the scheduled runs.\xd2>\tcron.read\x12I\n\x16PERMISSION_CRON_CREATE\x10\x11\x1a-\xca>\x1cTrigger a new scheduled run.\xd2>\x0b\x63ron.create\x12Y\n\x18PERMISSION_SECRETS_WRITE\x10\x12\x1a;\xca>(Create, modify, or delete secret values.\xd2>\rsecrets.write\x12K\n\x1aPERMISSION_SECRETS_DECRYPT\x10\x13\x1a+\xca>\x16\x44\x65\x63rypt secret values.\xd2>\x0fsecrets.decrypt\x12\x86\x01\n\x17PERMISSION_SECRETS_LIST\x10\x14\x1ai\xca>WSee the list of available secrets. Reading secrets is not allowed with this permission.\xd2>\x0csecrets.list\x12X\n\x17PERMISSION_TOKENS_WRITE\x10\x15\x1a;\xca>)Create, modify, or delete service tokens.\xd2>\x0ctokens.write\x12p\n\x16PERMISSION_TOKENS_LIST\x10\x16\x1aT\xca>CList the service tokens and see client ids, but not client secrets.\xd2>\x0btokens.list\x12Q\n\x17PERMISSION_MIGRATE_READ\x10\x17\x1a\x34\xca>\"View information about migrations.\xd2>\x0cmigrate.read\x12G\n\x17PERMISSION_MIGRATE_PLAN\x10\x18\x1a*\xca>\x18\x43reate a migration plan.\xd2>\x0cmigrate.plan\x12N\n\x1aPERMISSION_MIGRATE_EXECUTE\x10\x19\x1a.\xca>\x19\x45xecute a migration plan.\xd2>\x0fmigrate.execute\x12G\n\x19PERMISSION_PROJECT_CREATE\x10\x1a\x1a(\xca>\x14\x43reate a new project\xd2>\x0eproject.create\x12=\n\x16PERMISSION_CHALK_ADMIN\x10\x1b\x1a!\xca>\x10\x41\x64minister Chalk\xd2>\x0b\x63halk.admin\x12G\n\x17PERMISSION_BILLING_READ\x10\x1c\x1a*\xca>\x18Read billing information\xd2>\x0c\x62illing.read\x12R\n\x1fPERMISSION_AUTH_SERVICE_MANAGER\x10\x1d\x1a-\xca>\x13Manage Auth Service\xd2>\x14\x61uth_service.manager\x12Z\n\x1ePERMISSION_INFRASTRUCTURE_READ\x10\x1e\x1a\x36\xca>\x1dRead infrastructure workflows\xd2>\x13infrastructure.read\x12i\n\x1fPERMISSION_INFRASTRUCTURE_WRITE\x10\x1f\x1a\x44\xca>*Approve or cancel infrastructure workflows\xd2>\x14infrastructure.write\x12Y\n\x1dPERMISSION_ENVIRONMENT_CREATE\x10 \x1a\x36\xca>\x1e\x43reate and manage environments\xd2>\x12\x65nvironment.create\x12\x9e\x01\n+PERMISSION_INTERNAL_DATAPLANE_STATUS_UPDATE\x10!\x1am\xca>GUpdate container and scaling group status from the dataplane controller\xd2> internal.dataplane_status_update\x1a\x99\x05\xe2\xa1\'\x94\x05\n\x1c\x08\x01\x12\x18insecure_unauthenticated\n\x11\x08\x02\x12\rauthenticated\n\x10\x08\x03\x12\x0cquery.online\n\x11\x08\x04\x12\rquery.offline\n\x15\x08\x05\x12\x11monitoring.create\n\x13\x08\x06\x12\x0fmonitoring.read\n\x0c\x08\x07\x12\x08team.add\n\x0f\x08\x08\x12\x0bteam.delete\n\r\x08\t\x12\tteam.list\n\x0e\x08\n\x12\nteam.admin\n\x0f\x08\x0b\x12\x0b\x64\x65ploy.read\n\x11\x08\x0c\x12\rdeploy.create\n\x12\x08\r\x12\x0e\x64\x65ploy.preview\n\x13\x08\x0e\x12\x0f\x64\x65ploy.redeploy\n\r\x08\x0f\x12\tlogs.list\n\r\x08\x10\x12\tcron.read\n\x0f\x08\x11\x12\x0b\x63ron.create\n\x11\x08\x12\x12\rsecrets.write\n\x13\x08\x13\x12\x0fsecrets.decrypt\n\x10\x08\x14\x12\x0csecrets.list\n\x10\x08\x15\x12\x0ctokens.write\n\x0f\x08\x16\x12\x0btokens.list\n\x10\x08\x17\x12\x0cmigrate.read\n\x10\x08\x18\x12\x0cmigrate.plan\n\x13\x08\x19\x12\x0fmigrate.execute\n\x12\x08\x1a\x12\x0eproject.create\n\x0f\x08\x1b\x12\x0b\x63halk.admin\n\x10\x08\x1c\x12\x0c\x62illing.read\n\x18\x08\x1d\x12\x14\x61uth_service.manager\n\x17\x08\x1e\x12\x13infrastructure.read\n\x18\x08\x1f\x12\x14infrastructure.write\n\x16\x08 \x12\x12\x65nvironment.create\n$\x08!\x12 internal.dataplane_status_update:D\n\x0b\x64\x65scription\x12!.google.protobuf.EnumValueOptions\x18\xe9\x07 \x01(\tR\x0b\x64\x65scription:6\n\x04slug\x12!.google.protobuf.EnumValueOptions\x18\xea\x07 \x01(\tR\x04slug:Z\n\npermission\x12\x1e.google.protobuf.MethodOptions\x18\xd0\x0f \x01(\x0e\x32\x19.chalk.auth.v1.PermissionR\npermission:c\n\x0fteam_permission\x12\x1e.google.protobuf.MethodOptions\x18\xd1\x0f \x01(\x0e\x32\x19.chalk.auth.v1.PermissionR\x0eteamPermissionB\x8b\x01\n\x11\x63om.chalk.auth.v1B\x10PermissionsProtoP\x01Z\x0e\x61uth/v1;authv1\xa2\x02\x03\x43\x41X\xaa\x02\rChalk.Auth.V1\xca\x02\rChalk\\Auth\\V1\xe2\x02\x19\x43halk\\Auth\\V1\\GPBMetadata\xea\x02\x0f\x43halk::Auth::V1b\x06proto3')
20
+
21
+ _globals = globals()
22
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
23
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chalk.auth.v1.permissions_pb2', _globals)
24
+ if _descriptor._USE_C_DESCRIPTORS == False:
25
+ _globals['DESCRIPTOR']._options = None
26
+ _globals['DESCRIPTOR']._serialized_options = b'\n\021com.chalk.auth.v1B\020PermissionsProtoP\001Z\016auth/v1;authv1\242\002\003CAX\252\002\rChalk.Auth.V1\312\002\rChalk\\Auth\\V1\342\002\031Chalk\\Auth\\V1\\GPBMetadata\352\002\017Chalk::Auth::V1'
27
+ _globals['_PERMISSION']._options = None
28
+ _globals['_PERMISSION']._serialized_options = b'\342\241\'\224\005\n\034\010\001\022\030insecure_unauthenticated\n\021\010\002\022\rauthenticated\n\020\010\003\022\014query.online\n\021\010\004\022\rquery.offline\n\025\010\005\022\021monitoring.create\n\023\010\006\022\017monitoring.read\n\014\010\007\022\010team.add\n\017\010\010\022\013team.delete\n\r\010\t\022\tteam.list\n\016\010\n\022\nteam.admin\n\017\010\013\022\013deploy.read\n\021\010\014\022\rdeploy.create\n\022\010\r\022\016deploy.preview\n\023\010\016\022\017deploy.redeploy\n\r\010\017\022\tlogs.list\n\r\010\020\022\tcron.read\n\017\010\021\022\013cron.create\n\021\010\022\022\rsecrets.write\n\023\010\023\022\017secrets.decrypt\n\020\010\024\022\014secrets.list\n\020\010\025\022\014tokens.write\n\017\010\026\022\013tokens.list\n\020\010\027\022\014migrate.read\n\020\010\030\022\014migrate.plan\n\023\010\031\022\017migrate.execute\n\022\010\032\022\016project.create\n\017\010\033\022\013chalk.admin\n\020\010\034\022\014billing.read\n\030\010\035\022\024auth_service.manager\n\027\010\036\022\023infrastructure.read\n\030\010\037\022\024infrastructure.write\n\026\010 \022\022environment.create\n$\010!\022 internal.dataplane_status_update'
29
+ _globals['_PERMISSION'].values_by_name["PERMISSION_UNSPECIFIED"]._options = None
30
+ _globals['_PERMISSION'].values_by_name["PERMISSION_UNSPECIFIED"]._serialized_options = b'\312>%Default value -- should never be set.\322>\013unspecified'
31
+ _globals['_PERMISSION'].values_by_name["PERMISSION_INSECURE_UNAUTHENTICATED"]._options = None
32
+ _globals['_PERMISSION'].values_by_name["PERMISSION_INSECURE_UNAUTHENTICATED"]._serialized_options = b'\312>\030Unauthenticated endpoint\322>\010insecure'
33
+ _globals['_PERMISSION'].values_by_name["PERMISSION_AUTHENTICATED"]._options = None
34
+ _globals['_PERMISSION'].values_by_name["PERMISSION_AUTHENTICATED"]._serialized_options = b'\312>5User is authenticated, but no permissions are checked\322>\rauthenticated'
35
+ _globals['_PERMISSION'].values_by_name["PERMISSION_QUERY_ONLINE"]._options = None
36
+ _globals['_PERMISSION'].values_by_name["PERMISSION_QUERY_ONLINE"]._serialized_options = b'\312>\026Query online features.\322>\014query.online'
37
+ _globals['_PERMISSION'].values_by_name["PERMISSION_QUERY_OFFLINE"]._options = None
38
+ _globals['_PERMISSION'].values_by_name["PERMISSION_QUERY_OFFLINE"]._serialized_options = b'\312>\027Query offline features.\322>\rquery.offline'
39
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MONITORING_CREATE"]._options = None
40
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MONITORING_CREATE"]._serialized_options = b'\312>\033Create a new chart or alert\322>\021monitoring.create'
41
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MONITORING_READ"]._options = None
42
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MONITORING_READ"]._serialized_options = b'\312>\025See charts and alerts\322>\017monitoring.read'
43
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TEAM_ADD"]._options = None
44
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TEAM_ADD"]._serialized_options = b'\312>%Add team members to your organization\322>\010team.add'
45
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TEAM_DELETE"]._options = None
46
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TEAM_DELETE"]._serialized_options = b'\312>\024Remove a team member\322>\013team.delete'
47
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TEAM_LIST"]._options = None
48
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TEAM_LIST"]._serialized_options = b'\312>)See the team members in your organization\322>\tteam.list'
49
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TEAM_ADMIN"]._options = None
50
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TEAM_ADMIN"]._serialized_options = b'\312>6Configure authentication options for your organization\322>\nteam.admin'
51
+ _globals['_PERMISSION'].values_by_name["PERMISSION_DEPLOY_READ"]._options = None
52
+ _globals['_PERMISSION'].values_by_name["PERMISSION_DEPLOY_READ"]._serialized_options = b'\312>#Read information about deployments.\322>\013deploy.read'
53
+ _globals['_PERMISSION'].values_by_name["PERMISSION_DEPLOY_CREATE"]._options = None
54
+ _globals['_PERMISSION'].values_by_name["PERMISSION_DEPLOY_CREATE"]._serialized_options = b'\312>\030Create a new deployment.\322>\rdeploy.create'
55
+ _globals['_PERMISSION'].values_by_name["PERMISSION_DEPLOY_PREVIEW"]._options = None
56
+ _globals['_PERMISSION'].values_by_name["PERMISSION_DEPLOY_PREVIEW"]._serialized_options = b'\312>\037Create a new branch deployment.\322>\016deploy.preview'
57
+ _globals['_PERMISSION'].values_by_name["PERMISSION_DEPLOY_REDEPLOY"]._options = None
58
+ _globals['_PERMISSION'].values_by_name["PERMISSION_DEPLOY_REDEPLOY"]._serialized_options = b'\312> Redeploy an existing deployment.\322>\017deploy.redeploy'
59
+ _globals['_PERMISSION'].values_by_name["PERMISSION_LOGS_LIST"]._options = None
60
+ _globals['_PERMISSION'].values_by_name["PERMISSION_LOGS_LIST"]._serialized_options = b'\312>\031Read logs from resolvers.\322>\tlogs.list'
61
+ _globals['_PERMISSION'].values_by_name["PERMISSION_CRON_READ"]._options = None
62
+ _globals['_PERMISSION'].values_by_name["PERMISSION_CRON_READ"]._serialized_options = b'\312>\030Read the scheduled runs.\322>\tcron.read'
63
+ _globals['_PERMISSION'].values_by_name["PERMISSION_CRON_CREATE"]._options = None
64
+ _globals['_PERMISSION'].values_by_name["PERMISSION_CRON_CREATE"]._serialized_options = b'\312>\034Trigger a new scheduled run.\322>\013cron.create'
65
+ _globals['_PERMISSION'].values_by_name["PERMISSION_SECRETS_WRITE"]._options = None
66
+ _globals['_PERMISSION'].values_by_name["PERMISSION_SECRETS_WRITE"]._serialized_options = b'\312>(Create, modify, or delete secret values.\322>\rsecrets.write'
67
+ _globals['_PERMISSION'].values_by_name["PERMISSION_SECRETS_DECRYPT"]._options = None
68
+ _globals['_PERMISSION'].values_by_name["PERMISSION_SECRETS_DECRYPT"]._serialized_options = b'\312>\026Decrypt secret values.\322>\017secrets.decrypt'
69
+ _globals['_PERMISSION'].values_by_name["PERMISSION_SECRETS_LIST"]._options = None
70
+ _globals['_PERMISSION'].values_by_name["PERMISSION_SECRETS_LIST"]._serialized_options = b'\312>WSee the list of available secrets. Reading secrets is not allowed with this permission.\322>\014secrets.list'
71
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TOKENS_WRITE"]._options = None
72
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TOKENS_WRITE"]._serialized_options = b'\312>)Create, modify, or delete service tokens.\322>\014tokens.write'
73
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TOKENS_LIST"]._options = None
74
+ _globals['_PERMISSION'].values_by_name["PERMISSION_TOKENS_LIST"]._serialized_options = b'\312>CList the service tokens and see client ids, but not client secrets.\322>\013tokens.list'
75
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MIGRATE_READ"]._options = None
76
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MIGRATE_READ"]._serialized_options = b'\312>\"View information about migrations.\322>\014migrate.read'
77
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MIGRATE_PLAN"]._options = None
78
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MIGRATE_PLAN"]._serialized_options = b'\312>\030Create a migration plan.\322>\014migrate.plan'
79
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MIGRATE_EXECUTE"]._options = None
80
+ _globals['_PERMISSION'].values_by_name["PERMISSION_MIGRATE_EXECUTE"]._serialized_options = b'\312>\031Execute a migration plan.\322>\017migrate.execute'
81
+ _globals['_PERMISSION'].values_by_name["PERMISSION_PROJECT_CREATE"]._options = None
82
+ _globals['_PERMISSION'].values_by_name["PERMISSION_PROJECT_CREATE"]._serialized_options = b'\312>\024Create a new project\322>\016project.create'
83
+ _globals['_PERMISSION'].values_by_name["PERMISSION_CHALK_ADMIN"]._options = None
84
+ _globals['_PERMISSION'].values_by_name["PERMISSION_CHALK_ADMIN"]._serialized_options = b'\312>\020Administer Chalk\322>\013chalk.admin'
85
+ _globals['_PERMISSION'].values_by_name["PERMISSION_BILLING_READ"]._options = None
86
+ _globals['_PERMISSION'].values_by_name["PERMISSION_BILLING_READ"]._serialized_options = b'\312>\030Read billing information\322>\014billing.read'
87
+ _globals['_PERMISSION'].values_by_name["PERMISSION_AUTH_SERVICE_MANAGER"]._options = None
88
+ _globals['_PERMISSION'].values_by_name["PERMISSION_AUTH_SERVICE_MANAGER"]._serialized_options = b'\312>\023Manage Auth Service\322>\024auth_service.manager'
89
+ _globals['_PERMISSION'].values_by_name["PERMISSION_INFRASTRUCTURE_READ"]._options = None
90
+ _globals['_PERMISSION'].values_by_name["PERMISSION_INFRASTRUCTURE_READ"]._serialized_options = b'\312>\035Read infrastructure workflows\322>\023infrastructure.read'
91
+ _globals['_PERMISSION'].values_by_name["PERMISSION_INFRASTRUCTURE_WRITE"]._options = None
92
+ _globals['_PERMISSION'].values_by_name["PERMISSION_INFRASTRUCTURE_WRITE"]._serialized_options = b'\312>*Approve or cancel infrastructure workflows\322>\024infrastructure.write'
93
+ _globals['_PERMISSION'].values_by_name["PERMISSION_ENVIRONMENT_CREATE"]._options = None
94
+ _globals['_PERMISSION'].values_by_name["PERMISSION_ENVIRONMENT_CREATE"]._serialized_options = b'\312>\036Create and manage environments\322>\022environment.create'
95
+ _globals['_PERMISSION'].values_by_name["PERMISSION_INTERNAL_DATAPLANE_STATUS_UPDATE"]._options = None
96
+ _globals['_PERMISSION'].values_by_name["PERMISSION_INTERNAL_DATAPLANE_STATUS_UPDATE"]._serialized_options = b'\312>GUpdate container and scaling group status from the dataplane controller\322> internal.dataplane_status_update'
97
+ _globals['_PERMISSION']._serialized_start=116
98
+ _globals['_PERMISSION']._serialized_end=3727
99
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: chalk/common/v1/chalk_error.proto
4
+ # Protobuf Python Version: 4.25.3
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!chalk/common/v1/chalk_error.proto\x12\x0f\x63halk.common.v1\"\x8f\x01\n\x0e\x43halkException\x12\x12\n\x04kind\x18\x01 \x01(\tR\x04kind\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12\x1e\n\nstacktrace\x18\x03 \x01(\tR\nstacktrace\x12/\n\x13internal_stacktrace\x18\x04 \x01(\tR\x12internalStacktrace\"\xe6\x03\n\nChalkError\x12.\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1a.chalk.common.v1.ErrorCodeR\x04\x63ode\x12>\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32\".chalk.common.v1.ErrorCodeCategoryR\x08\x63\x61tegory\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\x12\x33\n\x13\x64isplay_primary_key\x18\x65 \x01(\tH\x00R\x11\x64isplayPrimaryKey\x88\x01\x01\x12:\n\x17\x64isplay_primary_key_fqn\x18\x66 \x01(\tH\x01R\x14\x64isplayPrimaryKeyFqn\x88\x01\x01\x12\x42\n\texception\x18g \x01(\x0b\x32\x1f.chalk.common.v1.ChalkExceptionH\x02R\texception\x88\x01\x01\x12\x1d\n\x07\x66\x65\x61ture\x18h \x01(\tH\x03R\x07\x66\x65\x61ture\x88\x01\x01\x12\x1f\n\x08resolver\x18i \x01(\tH\x04R\x08resolver\x88\x01\x01\x42\x16\n\x14_display_primary_keyB\x1a\n\x18_display_primary_key_fqnB\x0c\n\n_exceptionB\n\n\x08_featureB\x0b\n\t_resolver*\x99\x03\n\tErrorCode\x12\x30\n,ERROR_CODE_INTERNAL_SERVER_ERROR_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x45RROR_CODE_PARSE_FAILED\x10\x01\x12!\n\x1d\x45RROR_CODE_RESOLVER_NOT_FOUND\x10\x02\x12\x1c\n\x18\x45RROR_CODE_INVALID_QUERY\x10\x03\x12 \n\x1c\x45RROR_CODE_VALIDATION_FAILED\x10\x04\x12\x1e\n\x1a\x45RROR_CODE_RESOLVER_FAILED\x10\x05\x12!\n\x1d\x45RROR_CODE_RESOLVER_TIMED_OUT\x10\x06\x12\x1e\n\x1a\x45RROR_CODE_UPSTREAM_FAILED\x10\x07\x12\x1e\n\x1a\x45RROR_CODE_UNAUTHENTICATED\x10\x08\x12\x1b\n\x17\x45RROR_CODE_UNAUTHORIZED\x10\t\x12\x18\n\x14\x45RROR_CODE_CANCELLED\x10\n\x12 \n\x1c\x45RROR_CODE_DEADLINE_EXCEEDED\x10\x0b*\x80\x01\n\x11\x45rrorCodeCategory\x12+\n\'ERROR_CODE_CATEGORY_NETWORK_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x45RROR_CODE_CATEGORY_REQUEST\x10\x01\x12\x1d\n\x19\x45RROR_CODE_CATEGORY_FIELD\x10\x02\x42\x84\x01\n\x13\x63om.chalk.common.v1B\x0f\x43halkErrorProtoP\x01\xa2\x02\x03\x43\x43X\xaa\x02\x0f\x43halk.Common.V1\xca\x02\x0f\x43halk\\Common\\V1\xe2\x02\x1b\x43halk\\Common\\V1\\GPBMetadata\xea\x02\x11\x43halk::Common::V1b\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chalk.common.v1.chalk_error_pb2', _globals)
22
+ if _descriptor._USE_C_DESCRIPTORS == False:
23
+ _globals['DESCRIPTOR']._options = None
24
+ _globals['DESCRIPTOR']._serialized_options = b'\n\023com.chalk.common.v1B\017ChalkErrorProtoP\001\242\002\003CCX\252\002\017Chalk.Common.V1\312\002\017Chalk\\Common\\V1\342\002\033Chalk\\Common\\V1\\GPBMetadata\352\002\021Chalk::Common::V1'
25
+ _globals['_ERRORCODE']._serialized_start=690
26
+ _globals['_ERRORCODE']._serialized_end=1099
27
+ _globals['_ERRORCODECATEGORY']._serialized_start=1102
28
+ _globals['_ERRORCODECATEGORY']._serialized_end=1230
29
+ _globals['_CHALKEXCEPTION']._serialized_start=55
30
+ _globals['_CHALKEXCEPTION']._serialized_end=198
31
+ _globals['_CHALKERROR']._serialized_start=201
32
+ _globals['_CHALKERROR']._serialized_end=687
33
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,64 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: chalk/runtime/v1/remote_python_call.proto
4
+ # Protobuf Python Version: 4.25.3
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from chalk_remote_call._gen.chalk.auth.v1 import permissions_pb2 as chalk_dot_auth_dot_v1_dot_permissions__pb2
16
+ from chalk_remote_call._gen.chalk.common.v1 import chalk_error_pb2 as chalk_dot_common_dot_v1_dot_chalk__error__pb2
17
+ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
18
+
19
+
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)chalk/runtime/v1/remote_python_call.proto\x12\x10\x63halk.runtime.v1\x1a\x1f\x63halk/auth/v1/permissions.proto\x1a!chalk/common/v1/chalk_error.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"P\n\x13\x43\x61llFunctionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0e\x66\x65\x61ther_stream\x18\x02 \x01(\x0cR\rfeatherStream\"=\n\x14\x43\x61llFunctionResponse\x12%\n\x0e\x66\x65\x61ther_stream\x18\x01 \x01(\x0cR\rfeatherStream\"m\n\x0eRemoteCallArgs\x12%\n\rfeather_bytes\x18\x01 \x01(\x0cH\x00R\x0c\x66\x65\x61therBytes\x12,\n\x11storage_object_id\x18\x02 \x01(\tH\x00R\x0fstorageObjectIdB\x06\n\x04\x61rgs\"d\n\x18\x45nqueueRemoteCallRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x34\n\x04\x61rgs\x18\x02 \x01(\x0b\x32 .chalk.runtime.v1.RemoteCallArgsR\x04\x61rgs\"4\n\x19\x45nqueueRemoteCallResponse\x12\x17\n\x07\x63\x61ll_id\x18\x01 \x01(\tR\x06\x63\x61llId\"H\n\x15PollRemoteCallRequest\x12\x17\n\x07\x63\x61ll_id\x18\x01 \x01(\tR\x06\x63\x61llId\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor\"\xe3\x01\n\x16PollRemoteCallResponse\x12:\n\x06status\x18\x01 \x01(\x0e\x32\".chalk.runtime.v1.RemoteCallStatusR\x06status\x12@\n\x07results\x18\x02 \x03(\x0b\x32&.chalk.runtime.v1.CallFunctionResponseR\x07results\x12\x16\n\x06\x63ursor\x18\x03 \x01(\tR\x06\x63ursor\x12\x33\n\x06\x65rrors\x18\x04 \x03(\x0b\x32\x1b.chalk.common.v1.ChalkErrorR\x06\x65rrors\"\x8b\x02\n\x10\x46unctionCallInfo\x12\x17\n\x07\x63\x61ll_id\x18\x01 \x01(\tR\x06\x63\x61llId\x12#\n\rfunction_name\x18\x02 \x01(\tR\x0c\x66unctionName\x12;\n\x0b\x65nqueued_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nenqueuedAt\x12:\n\x06status\x18\x04 \x01(\x0e\x32\".chalk.runtime.v1.RemoteCallStatusR\x06status\x12%\n\x0eresult_summary\x18\x05 \x01(\tR\rresultSummary\x12\x19\n\x08trace_id\x18\x06 \x01(\tR\x07traceId\"R\n\x15GetRecentCallsRequest\x12#\n\rfunction_name\x18\x01 \x01(\tR\x0c\x66unctionName\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\"R\n\x16GetRecentCallsResponse\x12\x38\n\x05\x63\x61lls\x18\x01 \x03(\x0b\x32\".chalk.runtime.v1.FunctionCallInfoR\x05\x63\x61lls\":\n\x13GetCallCountRequest\x12#\n\rfunction_name\x18\x01 \x01(\tR\x0c\x66unctionName\",\n\x14GetCallCountResponse\x12\x14\n\x05\x63ount\x18\x01 \x01(\x04R\x05\x63ount*\xb7\x01\n\x10RemoteCallStatus\x12\"\n\x1eREMOTE_CALL_STATUS_UNSPECIFIED\x10\x00\x12\x1e\n\x1aREMOTE_CALL_STATUS_PENDING\x10\x01\x12\x1e\n\x1aREMOTE_CALL_STATUS_RUNNING\x10\x02\x12 \n\x1cREMOTE_CALL_STATUS_COMPLETED\x10\x03\x12\x1d\n\x19REMOTE_CALL_STATUS_FAILED\x10\x04\x32x\n\x11RemoteCallService\x12\x63\n\x0c\x43\x61llFunction\x12%.chalk.runtime.v1.CallFunctionRequest\x1a&.chalk.runtime.v1.CallFunctionResponse\"\x00(\x01\x30\x01\x32\xef\x01\n\x16\x41syncRemoteCallService\x12n\n\x11\x45nqueueRemoteCall\x12*.chalk.runtime.v1.EnqueueRemoteCallRequest\x1a+.chalk.runtime.v1.EnqueueRemoteCallResponse\"\x00\x12\x65\n\x0ePollRemoteCall\x12\'.chalk.runtime.v1.PollRemoteCallRequest\x1a(.chalk.runtime.v1.PollRemoteCallResponse\"\x00\x32\xe8\x01\n\x18\x46unctionQueueMetaService\x12h\n\x0eGetRecentCalls\x12\'.chalk.runtime.v1.GetRecentCallsRequest\x1a(.chalk.runtime.v1.GetRecentCallsResponse\"\x03\x80}\x03\x12\x62\n\x0cGetCallCount\x12%.chalk.runtime.v1.GetCallCountRequest\x1a&.chalk.runtime.v1.GetCallCountResponse\"\x03\x80}\x03\x42\x8f\x01\n\x14\x63om.chalk.runtime.v1B\x15RemotePythonCallProtoP\x01\xa2\x02\x03\x43RX\xaa\x02\x10\x43halk.Runtime.V1\xca\x02\x10\x43halk\\Runtime\\V1\xe2\x02\x1c\x43halk\\Runtime\\V1\\GPBMetadata\xea\x02\x12\x43halk::Runtime::V1b\x06proto3')
21
+
22
+ _globals = globals()
23
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
24
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chalk.runtime.v1.remote_python_call_pb2', _globals)
25
+ if _descriptor._USE_C_DESCRIPTORS == False:
26
+ _globals['DESCRIPTOR']._options = None
27
+ _globals['DESCRIPTOR']._serialized_options = b'\n\024com.chalk.runtime.v1B\025RemotePythonCallProtoP\001\242\002\003CRX\252\002\020Chalk.Runtime.V1\312\002\020Chalk\\Runtime\\V1\342\002\034Chalk\\Runtime\\V1\\GPBMetadata\352\002\022Chalk::Runtime::V1'
28
+ _globals['_FUNCTIONQUEUEMETASERVICE'].methods_by_name['GetRecentCalls']._options = None
29
+ _globals['_FUNCTIONQUEUEMETASERVICE'].methods_by_name['GetRecentCalls']._serialized_options = b'\200}\003'
30
+ _globals['_FUNCTIONQUEUEMETASERVICE'].methods_by_name['GetCallCount']._options = None
31
+ _globals['_FUNCTIONQUEUEMETASERVICE'].methods_by_name['GetCallCount']._serialized_options = b'\200}\003'
32
+ _globals['_REMOTECALLSTATUS']._serialized_start=1425
33
+ _globals['_REMOTECALLSTATUS']._serialized_end=1608
34
+ _globals['_CALLFUNCTIONREQUEST']._serialized_start=164
35
+ _globals['_CALLFUNCTIONREQUEST']._serialized_end=244
36
+ _globals['_CALLFUNCTIONRESPONSE']._serialized_start=246
37
+ _globals['_CALLFUNCTIONRESPONSE']._serialized_end=307
38
+ _globals['_REMOTECALLARGS']._serialized_start=309
39
+ _globals['_REMOTECALLARGS']._serialized_end=418
40
+ _globals['_ENQUEUEREMOTECALLREQUEST']._serialized_start=420
41
+ _globals['_ENQUEUEREMOTECALLREQUEST']._serialized_end=520
42
+ _globals['_ENQUEUEREMOTECALLRESPONSE']._serialized_start=522
43
+ _globals['_ENQUEUEREMOTECALLRESPONSE']._serialized_end=574
44
+ _globals['_POLLREMOTECALLREQUEST']._serialized_start=576
45
+ _globals['_POLLREMOTECALLREQUEST']._serialized_end=648
46
+ _globals['_POLLREMOTECALLRESPONSE']._serialized_start=651
47
+ _globals['_POLLREMOTECALLRESPONSE']._serialized_end=878
48
+ _globals['_FUNCTIONCALLINFO']._serialized_start=881
49
+ _globals['_FUNCTIONCALLINFO']._serialized_end=1148
50
+ _globals['_GETRECENTCALLSREQUEST']._serialized_start=1150
51
+ _globals['_GETRECENTCALLSREQUEST']._serialized_end=1232
52
+ _globals['_GETRECENTCALLSRESPONSE']._serialized_start=1234
53
+ _globals['_GETRECENTCALLSRESPONSE']._serialized_end=1316
54
+ _globals['_GETCALLCOUNTREQUEST']._serialized_start=1318
55
+ _globals['_GETCALLCOUNTREQUEST']._serialized_end=1376
56
+ _globals['_GETCALLCOUNTRESPONSE']._serialized_start=1378
57
+ _globals['_GETCALLCOUNTRESPONSE']._serialized_end=1422
58
+ _globals['_REMOTECALLSERVICE']._serialized_start=1610
59
+ _globals['_REMOTECALLSERVICE']._serialized_end=1730
60
+ _globals['_ASYNCREMOTECALLSERVICE']._serialized_start=1733
61
+ _globals['_ASYNCREMOTECALLSERVICE']._serialized_end=1972
62
+ _globals['_FUNCTIONQUEUEMETASERVICE']._serialized_start=1975
63
+ _globals['_FUNCTIONQUEUEMETASERVICE']._serialized_end=2207
64
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,260 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
5
+ from chalk_remote_call._gen.chalk.runtime.v1 import remote_python_call_pb2 as chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2
6
+
7
+
8
+ class RemoteCallServiceStub(object):
9
+ """Missing associated documentation comment in .proto file."""
10
+
11
+ def __init__(self, channel):
12
+ """Constructor.
13
+
14
+ Args:
15
+ channel: A grpc.Channel.
16
+ """
17
+ self.CallFunction = channel.stream_stream(
18
+ '/chalk.runtime.v1.RemoteCallService/CallFunction',
19
+ request_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionRequest.SerializeToString,
20
+ response_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionResponse.FromString,
21
+ )
22
+
23
+
24
+ class RemoteCallServiceServicer(object):
25
+ """Missing associated documentation comment in .proto file."""
26
+
27
+ def CallFunction(self, request_iterator, context):
28
+ """Missing associated documentation comment in .proto file."""
29
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
30
+ context.set_details('Method not implemented!')
31
+ raise NotImplementedError('Method not implemented!')
32
+
33
+
34
+ def add_RemoteCallServiceServicer_to_server(servicer, server):
35
+ rpc_method_handlers = {
36
+ 'CallFunction': grpc.stream_stream_rpc_method_handler(
37
+ servicer.CallFunction,
38
+ request_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionRequest.FromString,
39
+ response_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionResponse.SerializeToString,
40
+ ),
41
+ }
42
+ generic_handler = grpc.method_handlers_generic_handler(
43
+ 'chalk.runtime.v1.RemoteCallService', rpc_method_handlers)
44
+ server.add_generic_rpc_handlers((generic_handler,))
45
+
46
+
47
+ # This class is part of an EXPERIMENTAL API.
48
+ class RemoteCallService(object):
49
+ """Missing associated documentation comment in .proto file."""
50
+
51
+ @staticmethod
52
+ def CallFunction(request_iterator,
53
+ target,
54
+ options=(),
55
+ channel_credentials=None,
56
+ call_credentials=None,
57
+ insecure=False,
58
+ compression=None,
59
+ wait_for_ready=None,
60
+ timeout=None,
61
+ metadata=None):
62
+ return grpc.experimental.stream_stream(request_iterator, target, '/chalk.runtime.v1.RemoteCallService/CallFunction',
63
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionRequest.SerializeToString,
64
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionResponse.FromString,
65
+ options, channel_credentials,
66
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
67
+
68
+
69
+ class AsyncRemoteCallServiceStub(object):
70
+ """Missing associated documentation comment in .proto file."""
71
+
72
+ def __init__(self, channel):
73
+ """Constructor.
74
+
75
+ Args:
76
+ channel: A grpc.Channel.
77
+ """
78
+ self.EnqueueRemoteCall = channel.unary_unary(
79
+ '/chalk.runtime.v1.AsyncRemoteCallService/EnqueueRemoteCall',
80
+ request_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.EnqueueRemoteCallRequest.SerializeToString,
81
+ response_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.EnqueueRemoteCallResponse.FromString,
82
+ )
83
+ self.PollRemoteCall = channel.unary_unary(
84
+ '/chalk.runtime.v1.AsyncRemoteCallService/PollRemoteCall',
85
+ request_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.PollRemoteCallRequest.SerializeToString,
86
+ response_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.PollRemoteCallResponse.FromString,
87
+ )
88
+
89
+
90
+ class AsyncRemoteCallServiceServicer(object):
91
+ """Missing associated documentation comment in .proto file."""
92
+
93
+ def EnqueueRemoteCall(self, request, context):
94
+ """Accept a CallFunctionRequest and enqueue it for async execution.
95
+ """
96
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
97
+ context.set_details('Method not implemented!')
98
+ raise NotImplementedError('Method not implemented!')
99
+
100
+ def PollRemoteCall(self, request, context):
101
+ """Poll for results. The caller passes a cursor to resume from the
102
+ last position; the server returns any new result chunks plus an
103
+ updated cursor.
104
+ """
105
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
106
+ context.set_details('Method not implemented!')
107
+ raise NotImplementedError('Method not implemented!')
108
+
109
+
110
+ def add_AsyncRemoteCallServiceServicer_to_server(servicer, server):
111
+ rpc_method_handlers = {
112
+ 'EnqueueRemoteCall': grpc.unary_unary_rpc_method_handler(
113
+ servicer.EnqueueRemoteCall,
114
+ request_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.EnqueueRemoteCallRequest.FromString,
115
+ response_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.EnqueueRemoteCallResponse.SerializeToString,
116
+ ),
117
+ 'PollRemoteCall': grpc.unary_unary_rpc_method_handler(
118
+ servicer.PollRemoteCall,
119
+ request_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.PollRemoteCallRequest.FromString,
120
+ response_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.PollRemoteCallResponse.SerializeToString,
121
+ ),
122
+ }
123
+ generic_handler = grpc.method_handlers_generic_handler(
124
+ 'chalk.runtime.v1.AsyncRemoteCallService', rpc_method_handlers)
125
+ server.add_generic_rpc_handlers((generic_handler,))
126
+
127
+
128
+ # This class is part of an EXPERIMENTAL API.
129
+ class AsyncRemoteCallService(object):
130
+ """Missing associated documentation comment in .proto file."""
131
+
132
+ @staticmethod
133
+ def EnqueueRemoteCall(request,
134
+ target,
135
+ options=(),
136
+ channel_credentials=None,
137
+ call_credentials=None,
138
+ insecure=False,
139
+ compression=None,
140
+ wait_for_ready=None,
141
+ timeout=None,
142
+ metadata=None):
143
+ return grpc.experimental.unary_unary(request, target, '/chalk.runtime.v1.AsyncRemoteCallService/EnqueueRemoteCall',
144
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.EnqueueRemoteCallRequest.SerializeToString,
145
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.EnqueueRemoteCallResponse.FromString,
146
+ options, channel_credentials,
147
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
148
+
149
+ @staticmethod
150
+ def PollRemoteCall(request,
151
+ target,
152
+ options=(),
153
+ channel_credentials=None,
154
+ call_credentials=None,
155
+ insecure=False,
156
+ compression=None,
157
+ wait_for_ready=None,
158
+ timeout=None,
159
+ metadata=None):
160
+ return grpc.experimental.unary_unary(request, target, '/chalk.runtime.v1.AsyncRemoteCallService/PollRemoteCall',
161
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.PollRemoteCallRequest.SerializeToString,
162
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.PollRemoteCallResponse.FromString,
163
+ options, channel_credentials,
164
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
165
+
166
+
167
+ class FunctionQueueMetaServiceStub(object):
168
+ """Missing associated documentation comment in .proto file."""
169
+
170
+ def __init__(self, channel):
171
+ """Constructor.
172
+
173
+ Args:
174
+ channel: A grpc.Channel.
175
+ """
176
+ self.GetRecentCalls = channel.unary_unary(
177
+ '/chalk.runtime.v1.FunctionQueueMetaService/GetRecentCalls',
178
+ request_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetRecentCallsRequest.SerializeToString,
179
+ response_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetRecentCallsResponse.FromString,
180
+ )
181
+ self.GetCallCount = channel.unary_unary(
182
+ '/chalk.runtime.v1.FunctionQueueMetaService/GetCallCount',
183
+ request_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetCallCountRequest.SerializeToString,
184
+ response_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetCallCountResponse.FromString,
185
+ )
186
+
187
+
188
+ class FunctionQueueMetaServiceServicer(object):
189
+ """Missing associated documentation comment in .proto file."""
190
+
191
+ def GetRecentCalls(self, request, context):
192
+ """Return the most recent k calls to a function, ordered newest-first.
193
+ """
194
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
195
+ context.set_details('Method not implemented!')
196
+ raise NotImplementedError('Method not implemented!')
197
+
198
+ def GetCallCount(self, request, context):
199
+ """Return the number of calls submitted to a function in the past hour.
200
+ """
201
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
202
+ context.set_details('Method not implemented!')
203
+ raise NotImplementedError('Method not implemented!')
204
+
205
+
206
+ def add_FunctionQueueMetaServiceServicer_to_server(servicer, server):
207
+ rpc_method_handlers = {
208
+ 'GetRecentCalls': grpc.unary_unary_rpc_method_handler(
209
+ servicer.GetRecentCalls,
210
+ request_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetRecentCallsRequest.FromString,
211
+ response_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetRecentCallsResponse.SerializeToString,
212
+ ),
213
+ 'GetCallCount': grpc.unary_unary_rpc_method_handler(
214
+ servicer.GetCallCount,
215
+ request_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetCallCountRequest.FromString,
216
+ response_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetCallCountResponse.SerializeToString,
217
+ ),
218
+ }
219
+ generic_handler = grpc.method_handlers_generic_handler(
220
+ 'chalk.runtime.v1.FunctionQueueMetaService', rpc_method_handlers)
221
+ server.add_generic_rpc_handlers((generic_handler,))
222
+
223
+
224
+ # This class is part of an EXPERIMENTAL API.
225
+ class FunctionQueueMetaService(object):
226
+ """Missing associated documentation comment in .proto file."""
227
+
228
+ @staticmethod
229
+ def GetRecentCalls(request,
230
+ target,
231
+ options=(),
232
+ channel_credentials=None,
233
+ call_credentials=None,
234
+ insecure=False,
235
+ compression=None,
236
+ wait_for_ready=None,
237
+ timeout=None,
238
+ metadata=None):
239
+ return grpc.experimental.unary_unary(request, target, '/chalk.runtime.v1.FunctionQueueMetaService/GetRecentCalls',
240
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetRecentCallsRequest.SerializeToString,
241
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetRecentCallsResponse.FromString,
242
+ options, channel_credentials,
243
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
244
+
245
+ @staticmethod
246
+ def GetCallCount(request,
247
+ target,
248
+ options=(),
249
+ channel_credentials=None,
250
+ call_credentials=None,
251
+ insecure=False,
252
+ compression=None,
253
+ wait_for_ready=None,
254
+ timeout=None,
255
+ metadata=None):
256
+ return grpc.experimental.unary_unary(request, target, '/chalk.runtime.v1.FunctionQueueMetaService/GetCallCount',
257
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetCallCountRequest.SerializeToString,
258
+ chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.GetCallCountResponse.FromString,
259
+ options, channel_credentials,
260
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -0,0 +1,32 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: chalk/utils/v1/encoding.proto
4
+ # Protobuf Python Version: 4.25.3
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x63halk/utils/v1/encoding.proto\x12\x0e\x63halk.utils.v1\x1a google/protobuf/descriptor.proto\"\x93\x01\n\x0eStringEncoding\x12\x45\n\x07mapping\x18\x01 \x03(\x0b\x32+.chalk.utils.v1.StringEncoding.MappingEntryR\x07mapping\x1a:\n\x0cMappingEntry\x12\x10\n\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01:]\n\x08\x65ncoding\x12\x1c.google.protobuf.EnumOptions\x18\x9c\xf4\x04 \x01(\x0b\x32\x1e.chalk.utils.v1.StringEncodingR\x08\x65ncoding\x88\x01\x01\x42}\n\x12\x63om.chalk.utils.v1B\rEncodingProtoP\x01\xa2\x02\x03\x43UX\xaa\x02\x0e\x43halk.Utils.V1\xca\x02\x0e\x43halk\\Utils\\V1\xe2\x02\x1a\x43halk\\Utils\\V1\\GPBMetadata\xea\x02\x10\x43halk::Utils::V1b\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chalk.utils.v1.encoding_pb2', _globals)
23
+ if _descriptor._USE_C_DESCRIPTORS == False:
24
+ _globals['DESCRIPTOR']._options = None
25
+ _globals['DESCRIPTOR']._serialized_options = b'\n\022com.chalk.utils.v1B\rEncodingProtoP\001\242\002\003CUX\252\002\016Chalk.Utils.V1\312\002\016Chalk\\Utils\\V1\342\002\032Chalk\\Utils\\V1\\GPBMetadata\352\002\020Chalk::Utils::V1'
26
+ _globals['_STRINGENCODING_MAPPINGENTRY']._options = None
27
+ _globals['_STRINGENCODING_MAPPINGENTRY']._serialized_options = b'8\001'
28
+ _globals['_STRINGENCODING']._serialized_start=84
29
+ _globals['_STRINGENCODING']._serialized_end=231
30
+ _globals['_STRINGENCODING_MAPPINGENTRY']._serialized_start=173
31
+ _globals['_STRINGENCODING_MAPPINGENTRY']._serialized_end=231
32
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: chalk/utils/v1/field_change.proto
4
+ # Protobuf Python Version: 4.25.3
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!chalk/utils/v1/field_change.proto\x12\x0e\x63halk.utils.v1\"\xe0\x01\n\x0b\x46ieldChange\x12\x1d\n\nfield_name\x18\x01 \x01(\tR\tfieldName\x12*\n\x0eprevious_value\x18\x02 \x01(\tH\x00R\rpreviousValue\x88\x01\x01\x12 \n\tnew_value\x18\x03 \x01(\tH\x01R\x08newValue\x88\x01\x01\x12\x43\n\x0enested_changes\x18\x04 \x03(\x0b\x32\x1c.chalk.utils.v1.NestedChangeR\rnestedChangesB\x11\n\x0f_previous_valueB\x0c\n\n_new_value\"\x91\x01\n\x0cNestedChange\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12*\n\x0eprevious_value\x18\x02 \x01(\tH\x00R\rpreviousValue\x88\x01\x01\x12 \n\tnew_value\x18\x03 \x01(\tH\x01R\x08newValue\x88\x01\x01\x42\x11\n\x0f_previous_valueB\x0c\n\n_new_valueB\x80\x01\n\x12\x63om.chalk.utils.v1B\x10\x46ieldChangeProtoP\x01\xa2\x02\x03\x43UX\xaa\x02\x0e\x43halk.Utils.V1\xca\x02\x0e\x43halk\\Utils\\V1\xe2\x02\x1a\x43halk\\Utils\\V1\\GPBMetadata\xea\x02\x10\x43halk::Utils::V1b\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chalk.utils.v1.field_change_pb2', _globals)
22
+ if _descriptor._USE_C_DESCRIPTORS == False:
23
+ _globals['DESCRIPTOR']._options = None
24
+ _globals['DESCRIPTOR']._serialized_options = b'\n\022com.chalk.utils.v1B\020FieldChangeProtoP\001\242\002\003CUX\252\002\016Chalk.Utils.V1\312\002\016Chalk\\Utils\\V1\342\002\032Chalk\\Utils\\V1\\GPBMetadata\352\002\020Chalk::Utils::V1'
25
+ _globals['_FIELDCHANGE']._serialized_start=54
26
+ _globals['_FIELDCHANGE']._serialized_end=278
27
+ _globals['_NESTEDCHANGE']._serialized_start=281
28
+ _globals['_NESTEDCHANGE']._serialized_end=426
29
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: chalk/utils/v1/sensitive.proto
4
+ # Protobuf Python Version: 4.25.3
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x63halk/utils/v1/sensitive.proto\x12\x0e\x63halk.utils.v1\x1a google/protobuf/descriptor.proto:@\n\tsensitive\x12\x1d.google.protobuf.FieldOptions\x18\x9b\xf4\x04 \x01(\x08R\tsensitive\x88\x01\x01\x42~\n\x12\x63om.chalk.utils.v1B\x0eSensitiveProtoP\x01\xa2\x02\x03\x43UX\xaa\x02\x0e\x43halk.Utils.V1\xca\x02\x0e\x43halk\\Utils\\V1\xe2\x02\x1a\x43halk\\Utils\\V1\\GPBMetadata\xea\x02\x10\x43halk::Utils::V1b\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chalk.utils.v1.sensitive_pb2', _globals)
23
+ if _descriptor._USE_C_DESCRIPTORS == False:
24
+ _globals['DESCRIPTOR']._options = None
25
+ _globals['DESCRIPTOR']._serialized_options = b'\n\022com.chalk.utils.v1B\016SensitiveProtoP\001\242\002\003CUX\252\002\016Chalk.Utils.V1\312\002\016Chalk\\Utils\\V1\342\002\032Chalk\\Utils\\V1\\GPBMetadata\352\002\020Chalk::Utils::V1'
26
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1 @@
1
+ __version__ = "1.2.0"
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import dataclasses
3
4
  from collections.abc import Callable
4
5
  from typing import Any
5
6
 
@@ -9,6 +10,38 @@ from chalk_remote_call.arrow_utils import decode_ipc_stream, encode_record_batch
9
10
  from chalk_remote_call.input_transform import transform
10
11
 
11
12
 
13
+ def _is_structured(obj: Any) -> bool:
14
+ """Return True if *obj* is a recognised structured-type instance."""
15
+ if dataclasses.is_dataclass(obj) and not isinstance(obj, type):
16
+ return True
17
+ if hasattr(obj, "_asdict"): # namedtuple
18
+ return True
19
+ if hasattr(obj, "model_dump") and hasattr(obj, "model_fields"): # pydantic v2
20
+ return True
21
+ return hasattr(obj, "__attrs_attrs__") # attrs
22
+
23
+
24
+ def _to_dict(obj: Any) -> dict[str, Any]:
25
+ """Convert a single structured-type instance to a plain dict."""
26
+ if dataclasses.is_dataclass(obj) and not isinstance(obj, type):
27
+ return dataclasses.asdict(obj)
28
+ val: Any = obj
29
+ if hasattr(val, "_asdict"): # namedtuple
30
+ return val._asdict()
31
+ if hasattr(val, "model_dump") and hasattr(val, "model_fields"): # pydantic v2
32
+ return val.model_dump()
33
+ if hasattr(val, "__attrs_attrs__"): # attrs
34
+ return {a.name: getattr(val, a.name) for a in val.__attrs_attrs__}
35
+ raise TypeError(f"Cannot convert {type(val).__name__} to dict")
36
+
37
+
38
+ def _structured_list_to_dict(items: list[Any]) -> dict[str, list[Any]]:
39
+ """Transpose a list of structured instances into columnar form."""
40
+ dicts = [_to_dict(item) for item in items]
41
+ keys = list(dicts[0].keys())
42
+ return {key: [d[key] for d in dicts] for key in keys}
43
+
44
+
12
45
  def _coerce_to_record_batch(result: Any) -> pa.RecordBatch:
13
46
  """Convert a handler result to a RecordBatch for the response stream."""
14
47
  if isinstance(result, pa.RecordBatch):
@@ -26,6 +59,12 @@ def _coerce_to_record_batch(result: Any) -> pa.RecordBatch:
26
59
  return pa.record_batch([result.combine_chunks()], names=["result"])
27
60
  # For list, dict, scalar — convert via pa.array
28
61
  try:
62
+ # Convert structured types (dataclass, namedtuple, pydantic, attrs) to dicts
63
+ if isinstance(result, list) and len(result) > 0 and _is_structured(result[0]):
64
+ result = _structured_list_to_dict(result)
65
+ elif not isinstance(result, dict | list) and _is_structured(result):
66
+ result = {k: [v] for k, v in _to_dict(result).items()}
67
+
29
68
  if isinstance(result, dict):
30
69
  # dict of column_name -> values
31
70
  arrays = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chalk-remote-call-python
3
- Version: 1.1.2
3
+ Version: 1.2.0
4
4
  Summary: Chalk remote call Python runtime interface client
5
5
  Author: Chalk AI, Inc.
6
6
  Project-URL: Homepage, https://chalk.ai
@@ -13,10 +13,26 @@ chalk_remote_call/server.py
13
13
  chalk_remote_call/servicer.py
14
14
  chalk_remote_call/_gen/__init__.py
15
15
  chalk_remote_call/_gen/chalk/__init__.py
16
+ chalk_remote_call/_gen/chalk/auth/__init__.py
17
+ chalk_remote_call/_gen/chalk/auth/v1/__init__.py
18
+ chalk_remote_call/_gen/chalk/auth/v1/permissions_pb2.py
19
+ chalk_remote_call/_gen/chalk/auth/v1/permissions_pb2_grpc.py
20
+ chalk_remote_call/_gen/chalk/common/__init__.py
21
+ chalk_remote_call/_gen/chalk/common/v1/__init__.py
22
+ chalk_remote_call/_gen/chalk/common/v1/chalk_error_pb2.py
23
+ chalk_remote_call/_gen/chalk/common/v1/chalk_error_pb2_grpc.py
16
24
  chalk_remote_call/_gen/chalk/runtime/__init__.py
17
25
  chalk_remote_call/_gen/chalk/runtime/v1/__init__.py
18
26
  chalk_remote_call/_gen/chalk/runtime/v1/remote_python_call_pb2.py
19
27
  chalk_remote_call/_gen/chalk/runtime/v1/remote_python_call_pb2_grpc.py
28
+ chalk_remote_call/_gen/chalk/utils/__init__.py
29
+ chalk_remote_call/_gen/chalk/utils/v1/__init__.py
30
+ chalk_remote_call/_gen/chalk/utils/v1/encoding_pb2.py
31
+ chalk_remote_call/_gen/chalk/utils/v1/encoding_pb2_grpc.py
32
+ chalk_remote_call/_gen/chalk/utils/v1/field_change_pb2.py
33
+ chalk_remote_call/_gen/chalk/utils/v1/field_change_pb2_grpc.py
34
+ chalk_remote_call/_gen/chalk/utils/v1/sensitive_pb2.py
35
+ chalk_remote_call/_gen/chalk/utils/v1/sensitive_pb2_grpc.py
20
36
  chalk_remote_call_python.egg-info/PKG-INFO
21
37
  chalk_remote_call_python.egg-info/SOURCES.txt
22
38
  chalk_remote_call_python.egg-info/dependency_links.txt
@@ -1,6 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any
3
+ import dataclasses
4
+ from collections import namedtuple
5
+ from typing import Any, NamedTuple
4
6
 
5
7
  import pyarrow as pa
6
8
  import pytest
@@ -119,3 +121,104 @@ def test_add_handler_with_renamed_args(grpc_server_and_channel):
119
121
  result_batches = decode_ipc_stream(responses[0].feather_stream)
120
122
  result = result_batches[0]
121
123
  assert result.column(0).to_pylist() == [13, 27]
124
+
125
+
126
+ # ---------------------------------------------------------------------------
127
+ # Structured type coercion tests
128
+ # ---------------------------------------------------------------------------
129
+
130
+
131
+ @dataclasses.dataclass
132
+ class _Point:
133
+ x: int
134
+ y: str
135
+
136
+
137
+ @dataclasses.dataclass
138
+ class _Inner:
139
+ value: int
140
+
141
+
142
+ @dataclasses.dataclass
143
+ class _Outer:
144
+ name: str
145
+ inner: _Inner
146
+
147
+
148
+ @dataclasses.dataclass
149
+ class _WithList:
150
+ tags: list[str]
151
+ score: float
152
+
153
+
154
+ _Pair = namedtuple("_Pair", ["a", "b"])
155
+
156
+
157
+ class _TypedPair(NamedTuple):
158
+ a: int
159
+ b: int
160
+
161
+
162
+ class TestStructuredTypeCoercion:
163
+ def test_single_dataclass(self):
164
+ result = _coerce_to_record_batch(_Point(x=1, y="hello"))
165
+ assert result.num_columns == 2
166
+ assert result.num_rows == 1
167
+ assert result.schema.field("x").type == pa.int64()
168
+ assert result.column("x").to_pylist() == [1]
169
+ assert result.column("y").to_pylist() == ["hello"]
170
+
171
+ def test_list_of_dataclasses(self):
172
+ result = _coerce_to_record_batch([_Point(x=1, y="a"), _Point(x=2, y="b")])
173
+ assert result.num_columns == 2
174
+ assert result.num_rows == 2
175
+ assert result.column("x").to_pylist() == [1, 2]
176
+ assert result.column("y").to_pylist() == ["a", "b"]
177
+
178
+ def test_single_namedtuple(self):
179
+ result = _coerce_to_record_batch(_Pair(a=10, b=20))
180
+ assert result.num_columns == 2
181
+ assert result.column("a").to_pylist() == [10]
182
+ assert result.column("b").to_pylist() == [20]
183
+
184
+ def test_list_of_namedtuples(self):
185
+ result = _coerce_to_record_batch([_Pair(a=1, b=2), _Pair(a=3, b=4)])
186
+ assert result.num_columns == 2
187
+ assert result.num_rows == 2
188
+ assert result.column("a").to_pylist() == [1, 3]
189
+ assert result.column("b").to_pylist() == [2, 4]
190
+
191
+ def test_typing_namedtuple(self):
192
+ result = _coerce_to_record_batch(_TypedPair(a=5, b=6))
193
+ assert result.num_columns == 2
194
+ assert result.column("a").to_pylist() == [5]
195
+ assert result.column("b").to_pylist() == [6]
196
+
197
+ def test_nested_dataclass(self):
198
+ result = _coerce_to_record_batch(_Outer(name="x", inner=_Inner(value=42)))
199
+ assert result.num_columns == 2
200
+ assert result.column("name").to_pylist() == ["x"]
201
+ # Nested dataclass becomes a struct column
202
+ inner_col = result.column("inner")
203
+ assert pa.types.is_struct(inner_col.type)
204
+ assert inner_col.to_pylist() == [{"value": 42}]
205
+
206
+ def test_dataclass_with_list_field(self):
207
+ result = _coerce_to_record_batch(_WithList(tags=["a", "b"], score=0.9))
208
+ assert result.num_columns == 2
209
+ assert pa.types.is_list(result.column("tags").type)
210
+ assert result.column("tags").to_pylist() == [["a", "b"]]
211
+ assert result.column("score").to_pylist() == [0.9]
212
+
213
+ def test_empty_list_unchanged(self):
214
+ """Empty list still goes through the existing list path."""
215
+ result = _coerce_to_record_batch([])
216
+ assert result.num_columns == 1
217
+ assert result.num_rows == 0
218
+
219
+ def test_list_of_plain_dicts_unchanged(self):
220
+ """A list of plain dicts is not intercepted by the structured-type path."""
221
+ result = _coerce_to_record_batch([{"a": 1}, {"a": 2}])
222
+ # Goes through the existing list path → struct array in a "result" column
223
+ assert result.num_columns == 1
224
+ assert result.schema.field(0).name == "result"
@@ -1,31 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: chalk/runtime/v1/remote_python_call.proto
4
- # Protobuf Python Version: 4.25.3
5
- """Generated protocol buffer code."""
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import descriptor_pool as _descriptor_pool
8
- from google.protobuf import symbol_database as _symbol_database
9
- from google.protobuf.internal import builder as _builder
10
- # @@protoc_insertion_point(imports)
11
-
12
- _sym_db = _symbol_database.Default()
13
-
14
-
15
-
16
-
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)chalk/runtime/v1/remote_python_call.proto\x12\x10\x63halk.runtime.v1\"P\n\x13\x43\x61llFunctionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0e\x66\x65\x61ther_stream\x18\x02 \x01(\x0cR\rfeatherStream\"=\n\x14\x43\x61llFunctionResponse\x12%\n\x0e\x66\x65\x61ther_stream\x18\x01 \x01(\x0cR\rfeatherStream2x\n\x11RemoteCallService\x12\x63\n\x0c\x43\x61llFunction\x12%.chalk.runtime.v1.CallFunctionRequest\x1a&.chalk.runtime.v1.CallFunctionResponse\"\x00(\x01\x30\x01\x42\x8f\x01\n\x14\x63om.chalk.runtime.v1B\x15RemotePythonCallProtoP\x01\xa2\x02\x03\x43RX\xaa\x02\x10\x43halk.Runtime.V1\xca\x02\x10\x43halk\\Runtime\\V1\xe2\x02\x1c\x43halk\\Runtime\\V1\\GPBMetadata\xea\x02\x12\x43halk::Runtime::V1b\x06proto3')
18
-
19
- _globals = globals()
20
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chalk.runtime.v1.remote_python_call_pb2', _globals)
22
- if _descriptor._USE_C_DESCRIPTORS == False:
23
- _globals['DESCRIPTOR']._options = None
24
- _globals['DESCRIPTOR']._serialized_options = b'\n\024com.chalk.runtime.v1B\025RemotePythonCallProtoP\001\242\002\003CRX\252\002\020Chalk.Runtime.V1\312\002\020Chalk\\Runtime\\V1\342\002\034Chalk\\Runtime\\V1\\GPBMetadata\352\002\022Chalk::Runtime::V1'
25
- _globals['_CALLFUNCTIONREQUEST']._serialized_start=63
26
- _globals['_CALLFUNCTIONREQUEST']._serialized_end=143
27
- _globals['_CALLFUNCTIONRESPONSE']._serialized_start=145
28
- _globals['_CALLFUNCTIONRESPONSE']._serialized_end=206
29
- _globals['_REMOTECALLSERVICE']._serialized_start=208
30
- _globals['_REMOTECALLSERVICE']._serialized_end=328
31
- # @@protoc_insertion_point(module_scope)
@@ -1,66 +0,0 @@
1
- # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
- """Client and server classes corresponding to protobuf-defined services."""
3
- import grpc
4
-
5
- from chalk_remote_call._gen.chalk.runtime.v1 import remote_python_call_pb2 as chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2
6
-
7
-
8
- class RemoteCallServiceStub(object):
9
- """Missing associated documentation comment in .proto file."""
10
-
11
- def __init__(self, channel):
12
- """Constructor.
13
-
14
- Args:
15
- channel: A grpc.Channel.
16
- """
17
- self.CallFunction = channel.stream_stream(
18
- '/chalk.runtime.v1.RemoteCallService/CallFunction',
19
- request_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionRequest.SerializeToString,
20
- response_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionResponse.FromString,
21
- )
22
-
23
-
24
- class RemoteCallServiceServicer(object):
25
- """Missing associated documentation comment in .proto file."""
26
-
27
- def CallFunction(self, request_iterator, context):
28
- """Missing associated documentation comment in .proto file."""
29
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
30
- context.set_details('Method not implemented!')
31
- raise NotImplementedError('Method not implemented!')
32
-
33
-
34
- def add_RemoteCallServiceServicer_to_server(servicer, server):
35
- rpc_method_handlers = {
36
- 'CallFunction': grpc.stream_stream_rpc_method_handler(
37
- servicer.CallFunction,
38
- request_deserializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionRequest.FromString,
39
- response_serializer=chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionResponse.SerializeToString,
40
- ),
41
- }
42
- generic_handler = grpc.method_handlers_generic_handler(
43
- 'chalk.runtime.v1.RemoteCallService', rpc_method_handlers)
44
- server.add_generic_rpc_handlers((generic_handler,))
45
-
46
-
47
- # This class is part of an EXPERIMENTAL API.
48
- class RemoteCallService(object):
49
- """Missing associated documentation comment in .proto file."""
50
-
51
- @staticmethod
52
- def CallFunction(request_iterator,
53
- target,
54
- options=(),
55
- channel_credentials=None,
56
- call_credentials=None,
57
- insecure=False,
58
- compression=None,
59
- wait_for_ready=None,
60
- timeout=None,
61
- metadata=None):
62
- return grpc.experimental.stream_stream(request_iterator, target, '/chalk.runtime.v1.RemoteCallService/CallFunction',
63
- chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionRequest.SerializeToString,
64
- chalk_dot_runtime_dot_v1_dot_remote__python__call__pb2.CallFunctionResponse.FromString,
65
- options, channel_credentials,
66
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1 +0,0 @@
1
- __version__ = "1.1.2"