diff --git a/.pylintrc b/.pylintrc index 58097c3..6a9303c 100644 --- a/.pylintrc +++ b/.pylintrc @@ -19,7 +19,7 @@ disable= max-line-length=130 -good-names=id,on +good-names=id,on,pl,t,A,B,C,D,E,F [TYPECHECK] diff --git a/bfxapi/tests/__init__.py b/bfxapi/tests/__init__.py index 057c2c0..3084e94 100644 --- a/bfxapi/tests/__init__.py +++ b/bfxapi/tests/__init__.py @@ -13,6 +13,6 @@ def suite(): unittest.makeSuite(TestLabeler), unittest.makeSuite(TestNotification), ]) - + if __name__ == "__main__": - unittest.TextTestRunner().run(suite()) \ No newline at end of file + unittest.TextTestRunner().run(suite()) diff --git a/bfxapi/tests/test_labeler.py b/bfxapi/tests/test_labeler.py index 9ee8ea0..a586380 100644 --- a/bfxapi/tests/test_labeler.py +++ b/bfxapi/tests/test_labeler.py @@ -25,24 +25,24 @@ class TestLabeler(unittest.TestCase): self.assertListEqual(serializer.get_labels(), [ "A", "B", "C" ], msg="_Serializer::get_labels() should return the right list of labels.") - with self.assertRaises(LabelerSerializerException, + with self.assertRaises(LabelerSerializerException, msg="_Serializer should raise LabelerSerializerException if given fewer arguments than the serializer labels."): - serializer.parse(5, 65.0, "X") + serializer.parse(5, 65.0, "X") def test_generate_recursive_serializer(self): @dataclass - class Outer(_Type): + class Outer(_Type): A: int B: float C: "Middle" @dataclass - class Middle(_Type): + class Middle(_Type): D: str E: "Inner" @dataclass - class Inner(_Type): + class Inner(_Type): F: bool inner = generate_labeler_serializer("Inner", Inner, ["F"]) @@ -53,4 +53,4 @@ class TestLabeler(unittest.TestCase): msg="_RecursiveSerializer should produce the right result.") if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main() diff --git a/bfxapi/tests/test_notification.py b/bfxapi/tests/test_notification.py index f71df60..0d3cb59 100644 --- a/bfxapi/tests/test_notification.py +++ b/bfxapi/tests/test_notification.py @@ -11,15 +11,19 @@ class TestNotification(unittest.TestCase): A: int B: float C: str - - test = generate_labeler_serializer("Test", Test, + + test = generate_labeler_serializer("Test", Test, [ "A", "_PLACEHOLDER", "B", "_PLACEHOLDER", "C" ]) notification = _Notification[Test](test) - self.assertEqual(notification.parse(*[1675787861506, "test", None, None, [ 5, None, 65.0, None, "X" ], 0, "SUCCESS", "This is just a test notification."]), - Notification[Test](1675787861506, "test", None, Test(5, 65.0, "X"), 0, "SUCCESS", "This is just a test notification."), - msg="_Notification should produce the right notification.") - + actual = notification.parse(*[ 1675787861506, "test", None, None, [ 5, None, 65.0, None, "X" ], \ + 0, "SUCCESS", "This is just a test notification." ]) + + expected = Notification[Test](1675787861506, "test", None, Test(5, 65.0, "X"), + 0, "SUCCESS", "This is just a test notification.") + + self.assertEqual(actual, expected, msg="_Notification should produce the right notification.") + if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main() diff --git a/bfxapi/tests/test_rest_serializers.py b/bfxapi/tests/test_rest_serializers.py index 4c24992..17c3d98 100644 --- a/bfxapi/tests/test_rest_serializers.py +++ b/bfxapi/tests/test_rest_serializers.py @@ -1,3 +1,5 @@ +#pylint: disable=duplicate-code + import unittest from ..labeler import _Type @@ -7,11 +9,11 @@ from ..rest import serializers class TestRestSerializers(unittest.TestCase): def test_rest_serializers(self): for serializer in map(serializers.__dict__.get, serializers.__serializers__): - self.assertTrue(issubclass(serializer.klass, _Type), + self.assertTrue(issubclass(serializer.klass, _Type), f"_Serializer <{serializer.name}>: .klass field must be a subclass of _Type (got {serializer.klass}).") - - self.assertListEqual(serializer.get_labels(), list(serializer.klass.__annotations__), + + self.assertListEqual(serializer.get_labels(), list(serializer.klass.__annotations__), f"_Serializer <{serializer.name}> and _Type <{serializer.klass.__name__}> must have matching labels and fields.") if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main() diff --git a/bfxapi/tests/test_websocket_serializers.py b/bfxapi/tests/test_websocket_serializers.py index a559565..111cde4 100644 --- a/bfxapi/tests/test_websocket_serializers.py +++ b/bfxapi/tests/test_websocket_serializers.py @@ -1,3 +1,5 @@ +#pylint: disable=duplicate-code + import unittest from ..labeler import _Type @@ -7,11 +9,11 @@ from ..websocket import serializers class TestWebsocketSerializers(unittest.TestCase): def test_websocket_serializers(self): for serializer in map(serializers.__dict__.get, serializers.__serializers__): - self.assertTrue(issubclass(serializer.klass, _Type), + self.assertTrue(issubclass(serializer.klass, _Type), f"_Serializer <{serializer.name}>: .klass field must be a subclass of _Type (got {serializer.klass}).") - - self.assertListEqual(serializer.get_labels(), list(serializer.klass.__annotations__), + + self.assertListEqual(serializer.get_labels(), list(serializer.klass.__annotations__), f"_Serializer <{serializer.name}> and _Type <{serializer.klass.__name__}> must have matching labels and fields.") if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main() diff --git a/bfxapi/websocket/client/bfx_websocket_bucket.py b/bfxapi/websocket/client/bfx_websocket_bucket.py index c6f797d..2579c11 100644 --- a/bfxapi/websocket/client/bfx_websocket_bucket.py +++ b/bfxapi/websocket/client/bfx_websocket_bucket.py @@ -31,8 +31,7 @@ class BfxWebsocketBucket: self.handler = PublicChannelsHandler(event_emitter=self.event_emitter) - #pylint: disable-next=unused-argument - async def connect(self, index): + async def connect(self): reconnection = False async for websocket in websockets.connect(self.host): diff --git a/bfxapi/websocket/client/bfx_websocket_client.py b/bfxapi/websocket/client/bfx_websocket_client.py index 71ef5a1..7e5f2a6 100644 --- a/bfxapi/websocket/client/bfx_websocket_client.py +++ b/bfxapi/websocket/client/bfx_websocket_client.py @@ -75,7 +75,7 @@ class BfxWebsocketClient: for index in range(connections): self.buckets += [BfxWebsocketBucket(self.host, self.event_emitter, self.on_open_events[index])] - tasks = [ bucket.connect(index) for index, bucket in enumerate(self.buckets) ] + tasks = [ bucket.connect() for bucket in self.buckets ] tasks.append(self.__connect()) diff --git a/bfxapi/websocket/client/bfx_websocket_inputs.py b/bfxapi/websocket/client/bfx_websocket_inputs.py index 5ff0769..25ad8b4 100644 --- a/bfxapi/websocket/client/bfx_websocket_inputs.py +++ b/bfxapi/websocket/client/bfx_websocket_inputs.py @@ -1,4 +1,4 @@ -#pylint: disable=invalid-name,redefined-builtin,too-many-arguments +#pylint: disable=redefined-builtin,too-many-arguments from decimal import Decimal from datetime import datetime diff --git a/bfxapi/websocket/types.py b/bfxapi/websocket/types.py index 8951141..2909030 100644 --- a/bfxapi/websocket/types.py +++ b/bfxapi/websocket/types.py @@ -1,9 +1,13 @@ +#pylint: disable-next=wildcard-import,unused-wildcard-import from typing import * from dataclasses import dataclass -from .. labeler import _Type +#pylint: disable-next=unused-import from .. notification import Notification + +from .. labeler import _Type + from ..utils.json_encoder import JSON #region Type hinting for Websocket Public Channels @@ -40,43 +44,43 @@ class FundingCurrencyTicker(_Type): @dataclass class TradingPairTrade(_Type): - id: int - mts: int - amount: float + id: int + mts: int + amount: float price: float @dataclass class FundingCurrencyTrade(_Type): - id: int - mts: int - amount: float - rate: float + id: int + mts: int + amount: float + rate: float period: int @dataclass class TradingPairBook(_Type): - price: float - count: int + price: float + count: int amount: float @dataclass class FundingCurrencyBook(_Type): - rate: float - period: int - count: int + rate: float + period: int + count: int amount: float -@dataclass +@dataclass class TradingPairRawBook(_Type): order_id: int - price: float + price: float amount: float -@dataclass +@dataclass class FundingCurrencyRawBook(_Type): - offer_id: int - period: int - rate: float + offer_id: int + period: int + rate: float amount: float @dataclass @@ -154,14 +158,14 @@ class Position(_Type): @dataclass class Trade(_Type): - id: int - symbol: str + id: int + symbol: str mts_create: int - order_id: int - exec_amount: float - exec_price: float - order_type: str - order_price: float + order_id: int + exec_amount: float + exec_price: float + order_type: str + order_price: float maker:int fee: Optional[float] fee_currency: Optional[str] @@ -238,4 +242,4 @@ class Balance(_Type): aum: float aum_net: float -#endregion \ No newline at end of file +#endregion