diff --git a/enviPath_python/enviPath.py b/enviPath_python/enviPath.py index 4315408..cc21d7b 100644 --- a/enviPath_python/enviPath.py +++ b/enviPath_python/enviPath.py @@ -15,12 +15,13 @@ # DEALINGS IN THE SOFTWARE. import copy from collections.abc import Iterable -from typing import Union, List +from typing import List import requests from requests import Session from requests.adapters import HTTPAdapter from requests.exceptions import * +from urllib3.util.retry import Retry from enviPath_python.objects import * @@ -288,7 +289,7 @@ def get_groups(self): """ return self.requester.get_objects(self.BASE_URL, Endpoint.GROUP) - def create_package(self, group: 'Group', name: str = None, description: str = None) -> Package: + def create_package(self, group: 'Group' = None, name: str = None, description: str = None) -> Package: """ Function that creates an enviPath package @@ -301,7 +302,7 @@ def create_package(self, group: 'Group', name: str = None, description: str = No :return: The created package :rtype: enviPath_python.objects.Package """ - return Package.create(self, group, name=name, description=description) + return Package.create(self, group=group, name=name, description=description) class enviPathRequester(object): @@ -335,7 +336,12 @@ def __init__(self, eP, proxies=None, adapter=None): """ if adapter is None: - adapter = HTTPAdapter() + retry = Retry( + total=3, + backoff_factor=1, + status_forcelist=[500, 502, 503, 504], + ) + adapter = HTTPAdapter(max_retries=retry) self.eP = eP self.session = Session() diff --git a/enviPath_python/objects.py b/enviPath_python/objects.py index 8f2e8bd..a9fc3bd 100644 --- a/enviPath_python/objects.py +++ b/enviPath_python/objects.py @@ -507,7 +507,7 @@ def set_access_for_user(self, obj: Union['Group', 'User'], perm: Permission) -> # TODO typing for ep or being consistent with eP.requester... @staticmethod - def create(ep, group: 'Group', name: str = None, description: str = None) -> 'Package': + def create(ep, group: 'Group' = None, name: str = None, description: str = None) -> 'Package': """ Creates the package @@ -519,7 +519,11 @@ def create(ep, group: 'Group', name: str = None, description: str = None) -> 'Pa """ # TODO add type hint for ep and get rid of cyclic import package_payload = dict() - package_payload['groupURI'] = group.get_id() + + # Legacy system expects a group + if ep.new_api is None or not ep.new_api: + package_payload['groupURI'] = group.get_id() + if name: package_payload['packageName'] = name if description: