Skip to content

Commit 148f1da

Browse files
committed
Improved logging; added quiet option to read_tables; improved packaging
1 parent 334473e commit 148f1da

File tree

3 files changed

+53
-18
lines changed

3 files changed

+53
-18
lines changed

pds4_utils/__init__.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
# Set up the root logger
1010

1111
import logging
12-
import sys
13-
logging.basicConfig(format='%(levelname)s %(asctime)s (%(name)s): %(message)s',
14-
level=logging.INFO, stream=sys.stdout, datefmt='%Y-%m-%d %H:%M:%S')
12+
# import sys
13+
14+
# logging.basicConfig(format='%(levelname)s %(asctime)s (%(name)s): %(message)s',
15+
# level=logging.INFO, stream=sys.stdout, datefmt='%Y-%m-%d %H:%M:%S')
16+
17+
logging.getLogger(__name__).addHandler(logging.NullHandler())
1518

pds4_utils/pds4_utils.py

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,52 @@
44

55
from pds4_tools import pds4_read
66
from pds4_tools.reader.table_objects import TableManifest
7-
import pds4_tools
7+
# import pds4_tools
88
from pathlib import Path
99
from lxml import etree
10-
import numpy as np
1110
import pandas as pd
1211
import sys
1312
import yaml
1413
import os
14+
import logging
1515

1616
try:
1717
import cPickle as pickle
1818
except:
1919
import pickle
20-
2120

22-
import logging
23-
log = logging.getLogger(__name__)
21+
# set up module level logging
2422

2523
# only show warning or higher messages from PDS4 tools
2624
pds4_logger = logging.getLogger('PDS4ToolsLogger')
2725
pds4_logger.setLevel(logging.WARNING)
2826

27+
class DuplicateFilter(logging.Filter):
28+
29+
def filter(self, record):
30+
current_log = (record.module, record.levelno, record.msg)
31+
last = getattr(self, "last_log", None)
32+
if (last is None) or (last != current_log):
33+
self.last_log = current_log
34+
return True # i.e. log the message
35+
else:
36+
return False # i.e. do not log the message
37+
38+
log = logging.getLogger(__name__)
39+
handler = logging.StreamHandler(sys.stdout)
40+
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
41+
handler.setFormatter(formatter)
42+
log.addHandler(handler)
43+
log.setLevel(logging.WARNING)
44+
45+
2946
default_config = os.path.join(
3047
os.environ.get('APPDATA') or
3148
os.environ.get('XDG_CONFIG_HOME') or
3249
os.path.join(os.environ['HOME'], '.config'),
3350
"pds_dbase.yml")
3451

52+
3553
def index_products(directory='.', pattern='*.xml'):
3654
"""
3755
Accepts a directory containing PDS4 products, indexes the labels and returns a
@@ -222,7 +240,7 @@ def _constructor(self):
222240
return pds4_df
223241

224242

225-
def read_tables(label, label_directory='.', recursive=False, table_name=None, index_col=None, add_filename=False):
243+
def read_tables(label, label_directory='.', recursive=False, table_name=None, index_col=None, add_filename=False, quiet=False):
226244
"""
227245
Accepts a directory and file-pattern or list and attempts to load the specified table
228246
(or first table, if none is specified) into a merged DataFrane. If the tables
@@ -254,17 +272,22 @@ def read_tables(label, label_directory='.', recursive=False, table_name=None, in
254272
# de-dupe list
255273
file_list = list(set(file_list))
256274

275+
handler.addFilter(DuplicateFilter())
276+
filter_inst = log.handlers[0].filters[-1]
277+
257278
for f in file_list:
258279
if table is None:
259-
table = read_table(f, table_name=table_name, index_col=index_col)
280+
table = read_table(f, table_name=table_name, index_col=index_col, quiet=quiet)
260281
if add_filename:
261282
table['filename'] = table.filename
262283
else:
263-
temp_table = read_table(f, table_name=table_name, index_col=index_col)
284+
temp_table = read_table(f, table_name=table_name, index_col=index_col, quiet=quiet)
264285
if add_filename:
265286
temp_table['filename'] = temp_table.filename
266287
table = table.append(temp_table)
267288

289+
handler.removeFilter(filter_inst)
290+
268291
table.sort_index(inplace=True)
269292

270293
log.info('{:d} files read with {:d} total records'.format(len(file_list), len(table)))

setup.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
from setuptools import setup
22

3-
setup(name='pds4_utils',
4-
version='0.1',
5-
description='PDS4 utilities',
6-
author='Mark S. Bentley',
7-
author_email='mark@lunartech.org',
8-
packages=['pds4_utils'],
9-
zip_safe=False)
3+
with open("README.md", "r") as fh:
4+
long_description = fh.read()
105

6+
setup(name='pds4_utils',
7+
version='0.1',
8+
author='Mark S. Bentley',
9+
author_email='mark@lunartech.org',
10+
description='A collection of PDS4 utilities',
11+
long_description=long_description,
12+
long_description_content_type="text/markdown",
13+
url="https://github.com/msbentley/pds4_utils",
14+
download_url = 'https://github.com/msbentley/pds4_utils/archive/0.1.tar.gz',
15+
install_requires=['pandas','pyyaml','lxml','pds4-tools'],
16+
python_requires='>=3.0',
17+
keywords = ['PDS','archive','data'],
18+
packages=['pds4_utils'],
19+
zip_safe=False)

0 commit comments

Comments
 (0)