Skip to content

Commit ba192db

Browse files
committed
Add command line argument to specify no stream handler, add git_tag() function to be used when adding version in setup.py
1 parent 2bfd587 commit ba192db

File tree

6 files changed

+52
-17
lines changed

6 files changed

+52
-17
lines changed

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ options:
7575
Development pan number
7676
-L LOGDIR, --logdir LOGDIR
7777
Directory to save the output logfile to
78+
-NSH NO_STREAM_HANDLER, --no_stream_handler NO_STRAM_HANDLER
79+
Provide flag when we don't want a stream handler (prevents
80+
duplication of log messages to terminal if using another
81+
logging instance)
7882
```
7983
8084
### Testing

samplesheet_validator/__main__.py

+13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
import argparse
33
from .samplesheet_validator import SamplesheetCheck
4+
from .ss_logger import set_root_logger
45

56

67
def get_arguments():
@@ -58,6 +59,16 @@ def get_arguments():
5859
required=True,
5960
help="Directory to save the output logfile to",
6061
)
62+
parser.add_argument(
63+
"-NSH",
64+
"--no_stream_handler",
65+
action='store_true',
66+
required=False,
67+
help=(
68+
"Provide flag when we don't want a stream handler (prevents duplication of log messages "
69+
"to terminal if using another logging instance)"
70+
),
71+
)
6172
return parser.parse_args()
6273

6374

@@ -89,6 +100,8 @@ def is_valid_dir(parser: argparse.ArgumentParser, dir: str) -> str:
89100

90101
if __name__ == "__main__":
91102
parsed_args = get_arguments()
103+
if not parsed_args.no_stream_handler:
104+
set_root_logger() # Adds stream handler
92105
sscheck_obj = SamplesheetCheck(
93106
parsed_args.samplesheet_path,
94107
parsed_args.sequencer_ids,

samplesheet_validator/git_tag.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
import subprocess
3+
4+
5+
def git_tag() -> str:
6+
"""
7+
Obtain the git tag of the current commit
8+
:return (str): Git tag
9+
"""
10+
filepath = os.path.dirname(os.path.realpath(__file__))
11+
cmd = f"git -C {filepath} describe --tags"
12+
13+
proc = subprocess.Popen(
14+
[cmd], stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True,
15+
)
16+
out, _ = proc.communicate()
17+
# Return standard out, removing any new line characters
18+
return out.rstrip().decode("utf-8")

samplesheet_validator/samplesheet_validator.py

-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ def __init__(
101101
"""
102102
self.samplesheet_path = samplesheet_path
103103
self.logdir = logdir
104-
self.logger = False
105104
self.ss_obj = False
106105
self.pannumbers = []
107106
self.tso = False

samplesheet_validator/ss_logger.py

+15-15
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@
88
import logging.handlers
99

1010

11+
def set_root_logger():
12+
"""
13+
Set up root logger and add stream handler - we only want to add stream handler once
14+
else it will duplicate log messages to the terminal
15+
"""
16+
logger = logging.getLogger()
17+
logger.setLevel(logging.DEBUG)
18+
stream_handler = logging.StreamHandler(sys.stdout)
19+
stream_handler.setLevel(logging.DEBUG)
20+
stream_handler.setFormatter(logging.Formatter(config.LOGGING_FORMATTER))
21+
stream_handler.name = "stream_handler"
22+
logger.addHandler(stream_handler)
23+
24+
1125
def shutdown_logs(logger: object) -> None:
1226
"""
1327
To prevent duplicate filehandlers and system handlers close
@@ -21,7 +35,7 @@ def shutdown_logs(logger: object) -> None:
2135

2236
class SSLogger:
2337
"""
24-
Creates a python logging object with a file handler, syslog handler and stream handler
38+
Creates a python logging object with a file handler and syslog handler
2539
2640
Attributes
2741
timestamp (str): Timestamp from config
@@ -35,8 +49,6 @@ class SSLogger:
3549
Get file handler for the logger
3650
_get_syslog_handler()
3751
Get syslog handler for the logger
38-
_get_stream_handler()
39-
Get stream handler for the logger (sends to stdout)
4052
"""
4153

4254
def __init__(self, logfile_path: str):
@@ -58,7 +70,6 @@ def get_logger(self) -> logging.Logger:
5870
logger.filepath = self.logfile_path
5971
logger.setLevel(logging.DEBUG)
6072
logger.addHandler(self._get_file_handler())
61-
logger.addHandler(self._get_stream_handler())
6273
logger.addHandler(self._get_syslog_handler())
6374
logger.timestamp = self.timestamp
6475
logger.log_msgs = config.LOG_MSGS
@@ -85,14 +96,3 @@ def _get_syslog_handler(self) -> logging.handlers.SysLogHandler:
8596
syslog_handler.setFormatter(self.logging_formatter)
8697
syslog_handler.name = "syslog_handler"
8798
return syslog_handler
88-
89-
def _get_stream_handler(self) -> logging.StreamHandler:
90-
"""
91-
Get stream handler for the logger (sends to stdout)
92-
:return stream_handler (logging.StreamHandler): StreamHandler
93-
"""
94-
stream_handler = logging.StreamHandler(sys.stdout)
95-
stream_handler.setLevel(logging.DEBUG)
96-
stream_handler.setFormatter(self.logging_formatter)
97-
stream_handler.name = "stream_handler"
98-
return stream_handler

setup.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from setuptools import setup
2+
from samplesheet_validator.git_tag import git_tag
23

34
setup(
45
name="samplesheet_validator",
5-
version="1.1.0",
6+
version=git_tag(),
67
description="Python library for samplesheet validation",
78
url="http://github.com/moka-guys/samplesheet_validator",
89
author="Rachel Duffin",

0 commit comments

Comments
 (0)