Compare commits

..

3 Commits
dev ... master

22 changed files with 67 additions and 64 deletions

View File

@ -15,7 +15,7 @@ jobs:
container: catthehacker/ubuntu:act-latest container: catthehacker/ubuntu:act-latest
strategy: strategy:
matrix: matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] python-version: ["3.8", "3.9", "3.10", "3.11"]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3

View File

@ -3,6 +3,15 @@
"extends": [ "extends": [
"config:base" "config:base"
], ],
"baseBranches": [
"dev"
],
"pip_requirements": {
"fileMatch": [
"requirements/.*\\.txt$"
],
"enabled": true
},
"packageRules": [ "packageRules": [
{ {
"matchUpdateTypes": [ "matchUpdateTypes": [

View File

@ -1,3 +1,3 @@
requests~=2.32.3 requests~=2.32.3
xmltodict~=0.14.0 xmltodict~=0.13.0
isodate~=0.7.0 isodate~=0.6.1

View File

@ -1,10 +1,10 @@
black~=24.8.0 black~=24.8.0
isort==5.13.2 isort==5.13.2
mypy~=1.13.0 mypy~=1.11.2
pylint==3.2.7,<3.3.0 pylint==3.2.7
pytest-cov~=6.0.0 pytest-cov~=5.0.0
pytest~=8.3.2 pytest~=8.3.2
tox==4.23.2 tox==4.18.1
types-ujson~=5.10.0.20240515 types-ujson~=5.10.0.20240515
# Disabled async libraries for now # Disabled async libraries for now

View File

@ -1,2 +1,2 @@
build==1.2.2.post1 build==1.2.2
twine~=5.1.1 twine~=5.1.1

View File

@ -1,10 +1,10 @@
from datetime import datetime from datetime import datetime
from typing import Any, List, Mapping, Union from typing import Any, List, Mapping, Union
from ..classes.journey import Journey from pyrmv.classes.journey import Journey
from ..classes.message import Message from pyrmv.classes.message import Message
from ..classes.stop import Stop from pyrmv.classes.stop import Stop
from ..utility import ref_upgrade from pyrmv.utility import ref_upgrade
class LineArrival: class LineArrival:

View File

@ -1,7 +1,7 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from typing import List, OrderedDict, Union from typing import List, OrderedDict, Union
from ..classes import ( from pyrmv.classes import (
BoardArrival, BoardArrival,
BoardDeparture, BoardDeparture,
Journey, Journey,
@ -10,7 +10,7 @@ from ..classes import (
StopTrip, StopTrip,
Trip, Trip,
) )
from ..enums import ( from pyrmv.enums import (
AffectedJourneyMode, AffectedJourneyMode,
AffectedJourneyStopMode, AffectedJourneyStopMode,
BoardArrivalType, BoardArrivalType,
@ -22,15 +22,15 @@ from ..enums import (
SearchMode, SearchMode,
SelectionMode, SelectionMode,
) )
from ..raw import board_arrival as raw_board_arrival from pyrmv.raw import board_arrival as raw_board_arrival
from ..raw import board_departure as raw_board_departure from pyrmv.raw import board_departure as raw_board_departure
from ..raw import him_search as raw_him_search from pyrmv.raw import him_search as raw_him_search
from ..raw import journey_detail as raw_journey_detail from pyrmv.raw import journey_detail as raw_journey_detail
from ..raw import stop_by_coords as raw_stop_by_coords from pyrmv.raw import stop_by_coords as raw_stop_by_coords
from ..raw import stop_by_name as raw_stop_by_name from pyrmv.raw import stop_by_name as raw_stop_by_name
from ..raw import trip_find as raw_trip_find from pyrmv.raw import trip_find as raw_trip_find
from ..raw import trip_recon as raw_trip_recon from pyrmv.raw import trip_recon as raw_trip_recon
from ..utility import find_exception from pyrmv.utility import find_exception
try: try:
from typing import Literal from typing import Literal
@ -150,7 +150,7 @@ class Client:
boardType=board_type.code, boardType=board_type.code,
) )
find_exception(board_raw.copy()) find_exception(board_raw)
return BoardArrival( return BoardArrival(
board_raw, board_raw,
@ -219,7 +219,7 @@ class Client:
boardType=board_type.code, boardType=board_type.code,
) )
find_exception(board_raw.copy()) find_exception(board_raw)
return BoardDeparture( return BoardDeparture(
board_raw, board_raw,
@ -343,7 +343,7 @@ class Client:
minprio=priority_min, minprio=priority_min,
) )
find_exception(messages_raw.copy()) find_exception(messages_raw)
if "Message" in messages_raw: if "Message" in messages_raw:
messages.extend(Message(message) for message in messages_raw["Message"]) messages.extend(Message(message) for message in messages_raw["Message"])
@ -402,7 +402,7 @@ class Client:
toIdx=to_index, toIdx=to_index,
) )
find_exception(journey_raw.copy()) find_exception(journey_raw)
return Journey(journey_raw) return Journey(journey_raw)
@ -481,7 +481,7 @@ class Client:
locationSelectionMode=selection_mode, # type: ignore locationSelectionMode=selection_mode, # type: ignore
) )
find_exception(stops_raw.copy()) find_exception(stops_raw)
if "stopLocationOrCoordLocation" in stops_raw: if "stopLocationOrCoordLocation" in stops_raw:
for stop in stops_raw["stopLocationOrCoordLocation"]: for stop in stops_raw["stopLocationOrCoordLocation"]:
@ -536,7 +536,7 @@ class Client:
accessId=self.access_id, inputString=query, lang=lang.code, maxNo=1 accessId=self.access_id, inputString=query, lang=lang.code, maxNo=1
) )
find_exception(stops_raw.copy()) find_exception(stops_raw)
if len(stops_raw["stopLocationOrCoordLocation"]) <= 0: if len(stops_raw["stopLocationOrCoordLocation"]) <= 0:
return None return None
@ -642,7 +642,7 @@ class Client:
filterMode=filter_mode.code, filterMode=filter_mode.code,
) )
find_exception(stops_raw.copy()) find_exception(stops_raw)
if "stopLocationOrCoordLocation" in stops_raw: if "stopLocationOrCoordLocation" in stops_raw:
for stop in stops_raw["stopLocationOrCoordLocation"]: for stop in stops_raw["stopLocationOrCoordLocation"]:
@ -833,7 +833,7 @@ class Client:
withFreq=frequency, withFreq=frequency,
) )
find_exception(trips_raw.copy()) find_exception(trips_raw)
if "Trip" in trips_raw: if "Trip" in trips_raw:
trips.extend(Trip(trip) for trip in trips_raw["Trip"]) trips.extend(Trip(trip) for trip in trips_raw["Trip"])
@ -913,7 +913,7 @@ class Client:
trafficMessages=messages, trafficMessages=messages,
) )
find_exception(trips_raw.copy()) find_exception(trips_raw)
if "Trip" in trips_raw: if "Trip" in trips_raw:
trips.extend(Trip(trip) for trip in trips_raw["Trip"]) trips.extend(Trip(trip) for trip in trips_raw["Trip"])

View File

@ -1,8 +1,8 @@
from typing import Any, List, Mapping, Union from typing import Any, List, Mapping, Union
from ..classes.message import Message from pyrmv.classes.message import Message
from ..classes.stop import Stop from pyrmv.classes.stop import Stop
from ..utility import ref_upgrade from pyrmv.utility import ref_upgrade
class Journey: class Journey:

View File

@ -3,9 +3,9 @@ from typing import Any, List, Mapping, Union
from isodate import Duration, parse_duration from isodate import Duration, parse_duration
from ..classes.gis import Gis from pyrmv.classes.gis import Gis
from ..classes.message import Message from pyrmv.classes.message import Message
from ..classes.stop import StopTrip from pyrmv.classes.stop import StopTrip
class Leg: class Leg:

View File

@ -3,7 +3,7 @@ from typing import Any, List, Mapping, Union
from isodate import Duration, parse_duration from isodate import Duration, parse_duration
from ..classes.stop import Stop from pyrmv.classes.stop import Stop
class Url: class Url:
@ -59,9 +59,9 @@ class Message:
self.channels.extend(Channel(channel) for channel in data["channel"]) self.channels.extend(Channel(channel) for channel in data["channel"])
self.id: str = data["id"] self.id: str = data["id"]
self.active: bool = data["act"] self.active: bool = data["act"]
self.head: str = "" if "head" not in data else data["head"] self.head: str = data["head"]
self.lead: str = "" if "lead" not in data else data["lead"] self.lead: str = data["lead"]
self.text: str = "" if "text" not in data else data["text"] self.text: str = data["text"]
self.company: Union[str, None] = data.get("company") self.company: Union[str, None] = data.get("company")
self.category: Union[str, None] = data.get("category") self.category: Union[str, None] = data.get("category")
self.priority: Union[int, None] = data.get("priority") self.priority: Union[int, None] = data.get("priority")

View File

@ -1,6 +1,6 @@
from typing import Any, Mapping, Union from typing import Any, Mapping, Union
from ..enums.platform_type_type import PlatformTypeType from pyrmv.enums.platform_type_type import PlatformTypeType
class PlatformType: class PlatformType:

View File

@ -3,8 +3,8 @@ from typing import List, Union
from isodate import Duration, parse_duration from isodate import Duration, parse_duration
from ..classes.leg import Leg from pyrmv.classes.leg import Leg
from ..classes.stop import StopTrip from pyrmv.classes.stop import StopTrip
class Trip: class Trip:
@ -19,10 +19,8 @@ class Trip:
self.index: int = data["idx"] self.index: int = data["idx"]
self.id: str = data["tripId"] self.id: str = data["tripId"]
self.ctx_recon: str = data["ctxRecon"] self.ctx_recon: str = data["ctxRecon"]
self.duration: Union[Duration, timedelta, None] = ( self.duration: Union[Duration, timedelta] = parse_duration(data["duration"])
None if "duration" not in data else parse_duration(data["duration"]) self.real_time_duration: Union[Duration, timedelta] = (
)
self.real_time_duration: Union[Duration, timedelta, None] = (
None if "rtDuration" not in data else parse_duration(data["rtDuration"]) None if "rtDuration" not in data else parse_duration(data["rtDuration"])
) )
self.checksum: str = data["checksum"] self.checksum: str = data["checksum"]

View File

@ -3,7 +3,7 @@
from enum import Enum from enum import Enum
from ..const import PRODUCTS from pyrmv.const import PRODUCTS
class AutoName(Enum): class AutoName(Enum):

View File

@ -64,7 +64,7 @@ def board_arrival(
payload = {} payload = {}
headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"} headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"}
for var, val in locals().copy().items(): for var, val in locals().items():
if str(var) == "date": if str(var) == "date":
if val != None: if val != None:
if isinstance(val, datetime): if isinstance(val, datetime):

View File

@ -65,7 +65,7 @@ def board_departure(
payload = {} payload = {}
headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"} headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"}
for var, val in locals().copy().items(): for var, val in locals().items():
if str(var) == "date": if str(var) == "date":
if val != None: if val != None:
if isinstance(val, datetime): if isinstance(val, datetime):

View File

@ -4,7 +4,7 @@ from typing import OrderedDict, Union
from requests import get from requests import get
from xmltodict import parse as xmlparse from xmltodict import parse as xmlparse
from ..utility import weekdays_bitmask from pyrmv.utility import weekdays_bitmask
try: try:
from typing import Literal from typing import Literal
@ -97,7 +97,7 @@ def him_search(
payload = {} payload = {}
headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"} headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"}
for var, val in locals().copy().items(): for var, val in locals().items():
if str(var) in {"dateB", "dateE"}: if str(var) in {"dateB", "dateE"}:
if val != None: if val != None:
if isinstance(val, datetime): if isinstance(val, datetime):

View File

@ -55,7 +55,7 @@ def journey_detail(
payload = {} payload = {}
headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"} headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"}
for var, val in locals().copy().items(): for var, val in locals().items():
if str(var) == "rtMode": if str(var) == "rtMode":
if val != None: if val != None:
payload["rtMode"] = val.upper() payload["rtMode"] = val.upper()

View File

@ -54,7 +54,7 @@ def stop_by_coords(
payload = {} payload = {}
headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"} headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"}
for var, val in locals().copy().items(): for var, val in locals().items():
if str(var) == "stopType": if str(var) == "stopType":
if val != None: if val != None:
payload["type"] = val.upper() payload["type"] = val.upper()

View File

@ -65,7 +65,7 @@ def stop_by_name(
payload = {} payload = {}
headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"} headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"}
for var, val in locals().copy().items(): for var, val in locals().items():
if str(var) == "inputString": if str(var) == "inputString":
if val != None: if val != None:
payload["input"] = val payload["input"] = val

View File

@ -201,7 +201,7 @@ def trip_find(
payload = {} payload = {}
headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"} headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"}
for var, val in locals().copy().items(): for var, val in locals().items():
if str(var) == "date": if str(var) == "date":
if val != None: if val != None:
if isinstance(val, datetime): if isinstance(val, datetime):

View File

@ -87,7 +87,7 @@ def trip_recon(
payload = {} payload = {}
headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"} headers = {"Accept": "application/json"} if json else {"Accept": "application/xml"}
for var, val in locals().copy().items(): for var, val in locals().items():
if str(var) == "date": if str(var) == "date":
if val != None: if val != None:
if isinstance(val, datetime): if isinstance(val, datetime):

View File

@ -1,4 +1,4 @@
from ..errors import ( from pyrmv.errors import (
ApiAuthError, ApiAuthError,
ApiFormatError, ApiFormatError,
ApiParamError, ApiParamError,
@ -26,7 +26,6 @@ from ..errors import (
SvcNoResultError, SvcNoResultError,
SvcProductError, SvcProductError,
SvcSearchError, SvcSearchError,
SvcParamError,
UnknownError, UnknownError,
) )
@ -87,9 +86,6 @@ def find_exception(data: dict):
elif data["errorCode"] == "SVC_CTX": elif data["errorCode"] == "SVC_CTX":
raise SvcContextError() raise SvcContextError()
elif data["errorCode"] == "SVC_PARAM":
raise SvcParamError(errorCode=data["errorCode"], errorText=data["errorText"])
elif data["errorCode"] == "SVC_NO_RESULT": elif data["errorCode"] == "SVC_NO_RESULT":
raise SvcNoResultError() raise SvcNoResultError()