Skip to content

Commit a908d25

Browse files
Merge branch 'multi_user_requirements_update' of https://github.com/Orchius83/api-client-py into Orchius83-multi_user_requirements_update
2 parents f94935c + 78f51f6 commit a908d25

File tree

11 files changed

+259
-30
lines changed

11 files changed

+259
-30
lines changed

Pipfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
[[source]]
2+
url = "https://pypi.org/simple"
3+
verify_ssl = true
4+
name = "pypi"
5+
6+
[packages]
7+
python-dateutil = "*"
8+
urllib3 = "*"
9+
pydantic = "*"
10+
aenum = "*"
11+
websocket-client = "*"
12+
13+
[dev-packages]
14+
15+
[requires]
16+
python_version = "3.11"

Pipfile.lock

Lines changed: 202 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cheshire_cat_api/cat_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,12 @@ def url(self):
4646
return f"{secure}{self.settings.base_url}{port}"
4747

4848
def _connect(self):
49+
connection_url = f"ws{self.url}/{self.settings.ws.path}"
50+
if self.settings.ws.user_id is not None:
51+
connection_url += f"/{self.settings.ws.user_id}"
4952
""""Connect to the WebSocket in a separate thread"""
5053
self._ws = WebSocketApp(
51-
f"ws{self.url}/{self.settings.ws.path}",
54+
connection_url,
5255
on_message=self.on_ws_message,
5356
on_error=self.on_ws_error,
5457
on_close=self.on_ws_close,

cheshire_cat_api/models/body_upload_url.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class BodyUploadUrl(BaseModel):
3232

3333
class Config:
3434
"""Pydantic configuration"""
35-
allow_population_by_field_name = True
35+
populate_by_name = True
3636
validate_assignment = True
3737

3838
def to_str(self) -> str:

cheshire_cat_api/models/http_validation_error.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class HTTPValidationError(BaseModel):
3131

3232
class Config:
3333
"""Pydantic configuration"""
34-
allow_population_by_field_name = True
34+
populate_by_name = True
3535
validate_assignment = True
3636

3737
def to_str(self) -> str:

cheshire_cat_api/models/location_inner.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import re # noqa: F401
2020

2121
from typing import Optional
22-
from pydantic import BaseModel, Field, StrictInt, StrictStr, ValidationError, validator
22+
from pydantic import BaseModel, Field, StrictInt, StrictStr, ValidationError, validator, field_validator
2323
from typing import Union, Any, List, TYPE_CHECKING
2424
from pydantic import StrictStr, Field
2525

@@ -38,7 +38,7 @@ class LocationInner(BaseModel):
3838
actual_instance: Union[int, str]
3939
else:
4040
actual_instance: Any
41-
any_of_schemas: List[str] = Field(LOCATIONINNER_ANY_OF_SCHEMAS, const=True)
41+
any_of_schemas: List[str] = Field(LOCATIONINNER_ANY_OF_SCHEMAS, Literal=True)
4242

4343
class Config:
4444
validate_assignment = True
@@ -53,7 +53,7 @@ def __init__(self, *args, **kwargs):
5353
else:
5454
super().__init__(**kwargs)
5555

56-
@validator('actual_instance')
56+
@field_validator('actual_instance')
5757
def actual_instance_must_validate_anyof(cls, v):
5858
instance = LocationInner.construct()
5959
error_messages = []

cheshire_cat_api/models/setting_body.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class SettingBody(BaseModel):
3333

3434
class Config:
3535
"""Pydantic configuration"""
36-
allow_population_by_field_name = True
36+
populate_by_name = True
3737
validate_assignment = True
3838

3939
def to_str(self) -> str:

cheshire_cat_api/models/validation_error.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class ValidationError(BaseModel):
3333

3434
class Config:
3535
"""Pydantic configuration"""
36-
allow_population_by_field_name = True
36+
populate_by_name = True
3737
validate_assignment = True
3838

3939
def to_str(self) -> str:

cheshire_cat_api/models/value.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import re # noqa: F401
2020

2121
from typing import Any, Dict, List, Optional
22-
from pydantic import BaseModel, Field, StrictStr, ValidationError, conlist, validator
22+
from pydantic import BaseModel, Field, StrictStr, ValidationError, conlist, validator, field_validator
2323
from typing import Union, Any, List, TYPE_CHECKING
2424
from pydantic import StrictStr, Field
2525

@@ -38,7 +38,7 @@ class Value(BaseModel):
3838
actual_instance: Union[List[object], object]
3939
else:
4040
actual_instance: Any
41-
any_of_schemas: List[str] = Field(VALUE_ANY_OF_SCHEMAS, const=True)
41+
any_of_schemas: List[str] = Field(VALUE_ANY_OF_SCHEMAS, Literal=True)
4242

4343
class Config:
4444
validate_assignment = True
@@ -53,7 +53,7 @@ def __init__(self, *args, **kwargs):
5353
else:
5454
super().__init__(**kwargs)
5555

56-
@validator('actual_instance')
56+
@field_validator('actual_instance')
5757
def actual_instance_must_validate_anyof(cls, v):
5858
instance = Value.construct()
5959
error_messages = []

cheshire_cat_api/utils.py

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,34 +24,44 @@ class WebSocketSettings:
2424
Class containing the WebSocket configuration options and variables used by ccat-api package
2525
"""
2626

27-
def __init__(self):
27+
def __init__(self, path='ws', retries=3, delay=5000, on_failed=None, user_id=None):
2828
# Websocket path to use to communicate with the CCat
29-
self.path = 'ws'
29+
self.path = path
3030
# The maximum number of retries before calling on_failed
31-
self.retries = 3
31+
self.retries = retries
3232
# The delay for reconnect, in milliseconds
33-
self.delay = 5000
33+
self.delay = delay
3434
# The function to call after failing to reconnect
35-
self.on_failed = None
35+
self.on_failed = on_failed
36+
# User to connect with
37+
self.user_id = user_id
3638

3739

3840
class Settings:
3941
"""
4042
Class containing all the configuration options and variables used by ccat-api package
4143
"""
4244

43-
def __init__(self):
45+
def __init__(self,
46+
base_url='localhost',
47+
auth_key='',
48+
port=1865,
49+
secure=False,
50+
timeout=10000,
51+
instant=True,
52+
ws=WebSocketSettings(),
53+
):
4454
# The URL to which connect to the Cat
45-
self.base_url = 'localhost'
55+
self.base_url = base_url
4656
# The key to authenticate the Cat endpoints
47-
self.auth_key = ''
57+
self.auth_key = auth_key
4858
# The port to which connect to the Cat
49-
self.port = 1865
59+
self.port = port
5060
# Choose to either use the secure protocol or not
51-
self.secure = False
61+
self.secure = secure
5262
# Timeout for the endpoints, in milliseconds
53-
self.timeout = 10000
63+
self.timeout = timeout
5464
# Choose to either instantly initialize websocket and api client or not
55-
self.instant = True
65+
self.instant = instant
5666
# WebSocket Settings
57-
self.ws = WebSocketSettings()
67+
self.ws = ws

0 commit comments

Comments
 (0)