optimizely-opal.opal-tools-sdk 0.1.1.dev0__tar.gz → 0.1.2.dev0__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.

Potentially problematic release.


This version of optimizely-opal.opal-tools-sdk might be problematic. Click here for more details.

Files changed (16) hide show
  1. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/PKG-INFO +1 -1
  2. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/opal_tools_sdk/decorators.py +5 -1
  3. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/opal_tools_sdk/service.py +20 -12
  4. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/optimizely_opal.opal_tools_sdk.egg-info/PKG-INFO +1 -1
  5. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/pyproject.toml +1 -1
  6. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/README.md +0 -0
  7. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/opal_tools_sdk/__init__.py +0 -0
  8. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/opal_tools_sdk/_registry.py +0 -0
  9. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/opal_tools_sdk/auth.py +0 -0
  10. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/opal_tools_sdk/models.py +0 -0
  11. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/optimizely_opal.opal_tools_sdk.egg-info/SOURCES.txt +0 -0
  12. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/optimizely_opal.opal_tools_sdk.egg-info/dependency_links.txt +0 -0
  13. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/optimizely_opal.opal_tools_sdk.egg-info/requires.txt +0 -0
  14. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/optimizely_opal.opal_tools_sdk.egg-info/top_level.txt +0 -0
  15. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/setup.cfg +0 -0
  16. {optimizely_opal_opal_tools_sdk-0.1.1.dev0 → optimizely_opal_opal_tools_sdk-0.1.2.dev0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optimizely-opal.opal-tools-sdk
3
- Version: 0.1.1.dev0
3
+ Version: 0.1.2.dev0
4
4
  Summary: SDK for creating Opal-compatible tools services
5
5
  Home-page: https://github.com/optimizely/opal-tools-sdk
6
6
  Author: Optimizely
@@ -75,7 +75,11 @@ def tool(name: str, description: str, auth_requirements: Optional[List[Dict[str,
75
75
  param_type = ParameterType.dictionary
76
76
 
77
77
  # Determine if required
78
- required = field_info.default is ... if hasattr(field_info, 'default') else True
78
+ field_info_extra = getattr(field_info, "json_schema_extra") or {}
79
+ if "required" in field_info_extra:
80
+ required = field_info_extra["required"]
81
+ else:
82
+ required = field_info.default is ... if hasattr(field_info, 'default') else True
79
83
 
80
84
  # Get description
81
85
  description_text = ""
@@ -132,6 +132,11 @@ class ToolsService:
132
132
  if auth_data:
133
133
  print(f"Auth data provided for provider: {auth_data.get('provider', 'unknown')}")
134
134
 
135
+ # Extract environment data if available
136
+ environment = body.get("environment", {})
137
+ if environment:
138
+ print(f"Environment data provided: {environment}")
139
+
135
140
  print(f"Extracted parameters: {params}")
136
141
 
137
142
  # Get the parameter model from handler's signature
@@ -139,24 +144,27 @@ class ToolsService:
139
144
  param_name = list(sig.parameters.keys())[0]
140
145
  param_type = get_type_hints(handler).get(param_name)
141
146
 
142
- # Check signature to see if it accepts auth data
143
- accepts_auth = len(sig.parameters) > 1
144
147
 
148
+ args = []
149
+ kwargs = {}
145
150
  if param_type:
146
151
  # Create instance of param model
147
152
  model_instance = param_type(**params)
148
- if accepts_auth:
149
- # Call with auth data if the handler accepts it
150
- result = await handler(model_instance, auth_data)
151
- else:
152
- # Call without auth data
153
- result = await handler(model_instance)
153
+ args.append(model_instance)
154
154
  else:
155
155
  # Fall back if type hints not available
156
- if accepts_auth:
157
- result = await handler(BaseModel(**params), auth_data)
158
- else:
159
- result = await handler(BaseModel(**params))
156
+ args.append(BaseModel(**params))
157
+
158
+ # Check signature to see if it accepts other values
159
+
160
+ # TODO: Change this to "auth"
161
+ if auth_param := sig.parameters.get("auth_data"):
162
+ kwargs[auth_param.name] = auth_data
163
+
164
+ if environment_param := sig.parameters.get("environment"):
165
+ kwargs[environment_param.name] = environment
166
+
167
+ result = await handler(*args, **kwargs)
160
168
 
161
169
  print(f"Tool {name} returned: {result}")
162
170
  return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optimizely-opal.opal-tools-sdk
3
- Version: 0.1.1.dev0
3
+ Version: 0.1.2.dev0
4
4
  Summary: SDK for creating Opal-compatible tools services
5
5
  Home-page: https://github.com/optimizely/opal-tools-sdk
6
6
  Author: Optimizely
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "optimizely-opal.opal-tools-sdk"
7
- version = "0.1.1-dev"
7
+ version = "0.1.2-dev"
8
8
  description = "SDK for creating Opal-compatible tools services"
9
9
  authors = [
10
10
  {name = "Optimizely", email = "opal-team@optimizely.com"}