Skip to content

Commit cbbdce4

Browse files
committed
logging and typing improvements
1 parent 2767a52 commit cbbdce4

File tree

7 files changed

+18
-17
lines changed

7 files changed

+18
-17
lines changed

src/pyff/builtins.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ def publish(req: Plumbing.Request, *opts):
512512
try:
513513
validate_document(req.t)
514514
except DocumentInvalid as ex:
515-
log.error(ex.error_log)
515+
log.error(f'Got an error from validate_document {ex.error_log}')
516516
raise PipeException("XML schema validation failed")
517517

518518
def _nop(x):

src/pyff/repo.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import random
2+
from typing import Iterable, Optional
3+
4+
from lxml.etree import Element
25

36
from pyff.constants import NS, config
47
from pyff.logs import get_log
58
from pyff.resource import Resource, ResourceOpts
69
from pyff.samlmd import entitiesdescriptor, root
7-
from pyff.store import make_icon_store_instance, make_store_instance
10+
from pyff.store import SAMLStoreBase, make_icon_store_instance, make_store_instance
811
from pyff.utils import is_text, make_default_scheduler
912

1013
log = get_log(__name__)
@@ -43,17 +46,14 @@ def _lookup(self, member, store=None):
4346
log.debug("calling store lookup %s" % member)
4447
return store.lookup(member)
4548

46-
def lookup(self, member, xp=None, store=None):
49+
def lookup(self, member: str, xp: str = None, store: Optional[SAMLStoreBase] = None) -> Iterable[Element]:
4750
"""
4851
Lookup elements in the working metadata repository
4952
5053
:param member: A selector (cf below)
51-
:type member: basestring
5254
:param xp: An optional xpath filter
53-
:type xp: basestring
5455
:param store: the store to operate on
5556
:return: An iterable of EntityDescriptor elements
56-
:rtype: etree.Element
5757
5858
5959
**Selector Syntax**
@@ -67,7 +67,7 @@ def lookup(self, member, xp=None, store=None):
6767
The first form results in the intersection of the results of doing a lookup on the selectors. The second form
6868
results in the EntityDescriptor elements from the source (defaults to all EntityDescriptors) that match the
6969
xpath expression. The attribute-value forms results in the EntityDescriptors that contain the specified entity
70-
attribute pair. If non of these forms apply, the lookup is done using either source ID (normally @Name from
70+
attribute pair. If none of these forms apply, the lookup is done using either source ID (normally @Name from
7171
the EntitiesDescriptor) or the entityID of single EntityDescriptors. If member is a URI but isn't part of
7272
the metadata repository then it is fetched an treated as a list of (one per line) of selectors. If all else
7373
fails an empty list is returned.

src/pyff/resource.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from datetime import datetime
1212
from enum import Enum
1313
from threading import Condition, Lock
14-
from typing import Any, Callable, Deque, Dict, Iterable, List, Mapping, Optional, TYPE_CHECKING, Tuple
14+
from typing import TYPE_CHECKING, Any, Callable, Deque, Dict, Iterable, List, Mapping, Optional, Tuple
1515
from urllib.parse import quote as urlescape
1616

1717
import requests

src/pyff/samlmd.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from distutils.util import strtobool
55
from io import BytesIO
66
from itertools import chain
7-
from typing import Any, Dict, List, Optional, Union
7+
from typing import Any, Dict, List, Optional, Sequence, Union
88

99
from lxml import etree
1010
from lxml.builder import ElementMaker
@@ -364,7 +364,7 @@ def filter_or_validate(
364364
return t
365365

366366

367-
def resolve_entities(entities, lookup_fn=None):
367+
def resolve_entities(entities: Sequence[str], lookup_fn: str = None) -> List[Element]:
368368
"""
369369
370370
:param entities: a set of entities specifiers (lookup is used to find entities from this set)
@@ -384,7 +384,7 @@ def _resolve(m, l_fn):
384384
entity_id = entity.get('entityID', None)
385385
if entity is not None and entity_id is not None:
386386
resolved_entities[entity_id] = entity
387-
return resolved_entities.values()
387+
return list(resolved_entities.values())
388388

389389

390390
def entitiesdescriptor(

src/pyff/test/__init__.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ def run_cmdline(script, *args):
9696

9797
def _pstart(args, outf=None, ignore_exit=False):
9898
env = {}
99-
logging.debug(" ".join(args))
99+
_cmdstr = ' '.join(args)
100+
logging.debug(f'Invoking external command via pipe: {_cmdstr}')
100101
proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env)
101102
return proc
102103

@@ -105,13 +106,14 @@ def _p(args, outf=None, ignore_exit=False):
105106
proc = _pstart(args)
106107
out, err = proc.communicate()
107108
if err is not None and len(err) > 0:
108-
logging.error(err)
109+
logging.error(f'stderr from command: {err}')
109110
if outf is not None:
110111
with open(outf, "w") as fd:
111112
fd.write(out.decode('UTF-8'))
112113
else:
113114
if out is not None and len(out) > 0:
114-
logging.debug(out.decode('UTF-8'))
115+
_outstr = out.decode('UTF-8')
116+
logging.debug(f'stdout from command: {_outstr}')
115117
rv = proc.wait()
116118
if rv and not ignore_exit:
117119
raise RuntimeError("command exited with code != 0: %d" % rv)

src/pyff/test/test_utils.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from pyff import utils
1010
from pyff.constants import NS, as_list_of_string
11+
from pyff.merge_strategies import remove, replace_existing
1112
from pyff.resource import Resource, ResourceOpts
1213
from pyff.samlmd import entities_list, find_entity
1314
from pyff.utils import (
@@ -24,8 +25,6 @@
2425
url_get,
2526
)
2627

27-
from pyff.merge_strategies import remove, replace_existing
28-
2928

3029
class TestMetadata(TestCase):
3130
def setUp(self):

src/pyff/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import threading
1919
import time
2020
import traceback
21-
from _collections_abc import Mapping, MutableMapping
2221
from copy import copy
2322
from datetime import datetime, timedelta, timezone
2423
from email.utils import parsedate
@@ -30,6 +29,7 @@
3029
import pkg_resources
3130
import requests
3231
import xmlsec
32+
from _collections_abc import Mapping, MutableMapping
3333
from apscheduler.executors.pool import ThreadPoolExecutor
3434
from apscheduler.jobstores.memory import MemoryJobStore
3535
from apscheduler.jobstores.redis import RedisJobStore

0 commit comments

Comments
 (0)