From 8a3d31aec5ef899d168b0066065b1b5a3118a421 Mon Sep 17 00:00:00 2001 From: Hector Espert Date: Thu, 20 Jan 2022 23:09:34 +0100 Subject: [PATCH 1/2] Requests are an optional dependency --- README.md | 6 +++++- demo/arduino_watthourmeter.py | 4 ++-- oligo/__init__.py | 5 ++++- oligo/asyncio/asynciber.py | 2 +- oligo/requests/__init__.py | 1 + oligo/{ => requests}/iber.py | 7 +++++-- setup.py | 5 ++--- 7 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 oligo/requests/__init__.py rename oligo/{ => requests}/iber.py (97%) diff --git a/README.md b/README.md index 6a3d123..8636fb3 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,18 @@ ## [ES] Cliente Python (NO OFICIAL) para i-DE (Iberdrola distribución). ### Instalación: +#### Requests support: + ``` -pip install oligo +pip install oligo[requests] ``` + #### Async support: ``` pip install oligo[asyncio] ``` + ### Ejemplos: #### Consultar consumo actual (Sync): diff --git a/demo/arduino_watthourmeter.py b/demo/arduino_watthourmeter.py index b0a0e63..c87e0b9 100644 --- a/demo/arduino_watthourmeter.py +++ b/demo/arduino_watthourmeter.py @@ -1,12 +1,12 @@ import PyCmdMessenger import time -from oligo import iber +from oligo import Iber arduino = PyCmdMessenger.ArduinoBoard("/dev/ttyACM0", baud_rate=9600) commands = [["watt", "d"]] c = PyCmdMessenger.CmdMessenger(arduino, commands) -connection = iber.Iber() +connection = Iber() connection.login("user", "password") while True: diff --git a/oligo/__init__.py b/oligo/__init__.py index 9c04639..fa5789d 100644 --- a/oligo/__init__.py +++ b/oligo/__init__.py @@ -1 +1,4 @@ -from .iber import Iber +try: + from .requests.iber import Iber +except ImportError as error: + print(error.message) diff --git a/oligo/asyncio/asynciber.py b/oligo/asyncio/asynciber.py index ecd2d7c..96bed94 100644 --- a/oligo/asyncio/asynciber.py +++ b/oligo/asyncio/asynciber.py @@ -4,7 +4,7 @@ try: import aiohttp except ImportError: - raise RuntimeError("AsyncIber requires aiohttp") + raise RuntimeError("AsyncIber requires aiohttp module") from datetime import datetime from typing import Union, Optional diff --git a/oligo/requests/__init__.py b/oligo/requests/__init__.py new file mode 100644 index 0000000..9c04639 --- /dev/null +++ b/oligo/requests/__init__.py @@ -0,0 +1 @@ +from .iber import Iber diff --git a/oligo/iber.py b/oligo/requests/iber.py similarity index 97% rename from oligo/iber.py rename to oligo/requests/iber.py index ba6e9c0..64724ee 100644 --- a/oligo/iber.py +++ b/oligo/requests/iber.py @@ -1,8 +1,11 @@ from datetime import datetime -from requests import Session +try: + from requests import Session +except ImportError: + raise RuntimeError("Iber requires requests module") -from .exception import LoginException, ResponseException, NoResponseException, SelectContractException, SessionException +from oligo.exception import LoginException, ResponseException, NoResponseException, SelectContractException, SessionException class Iber: diff --git a/setup.py b/setup.py index 131df5d..96d90e6 100644 --- a/setup.py +++ b/setup.py @@ -14,10 +14,9 @@ long_description_content_type="text/markdown", url="https://github.com/hectorespert/python-oligo", packages=find_packages(), - install_requires=[ - 'requests' - ], + install_requires=[], extras_require={ + 'requests': ['requests'], 'asyncio': ['aiohttp'] }, classifiers=[ From 4a5f18e639995b90728840c9424c8f00f67fb71e Mon Sep 17 00:00:00 2001 From: Hector Espert Date: Thu, 20 Jan 2022 23:17:44 +0100 Subject: [PATCH 2/2] Change imports --- oligo/__init__.py | 4 +++- oligo/asyncio/asynciber.py | 2 +- oligo/requests/iber.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/oligo/__init__.py b/oligo/__init__.py index fa5789d..afd128c 100644 --- a/oligo/__init__.py +++ b/oligo/__init__.py @@ -1,4 +1,6 @@ +from sys import stderr + try: from .requests.iber import Iber except ImportError as error: - print(error.message) + print(error.message, file=stderr) diff --git a/oligo/asyncio/asynciber.py b/oligo/asyncio/asynciber.py index 96bed94..db14a78 100644 --- a/oligo/asyncio/asynciber.py +++ b/oligo/asyncio/asynciber.py @@ -1,4 +1,4 @@ -from oligo.exception import SessionException, ResponseException, NoResponseException, LoginException, \ +from ..exception import SessionException, ResponseException, NoResponseException, LoginException, \ SelectContractException try: diff --git a/oligo/requests/iber.py b/oligo/requests/iber.py index 64724ee..46234ba 100644 --- a/oligo/requests/iber.py +++ b/oligo/requests/iber.py @@ -5,7 +5,8 @@ except ImportError: raise RuntimeError("Iber requires requests module") -from oligo.exception import LoginException, ResponseException, NoResponseException, SelectContractException, SessionException +from ..exception import LoginException, ResponseException, NoResponseException, SelectContractException, \ + SessionException class Iber: