Skip to content

Commit e3e7cb3

Browse files
Merge pull request #109 from deep-compute/feature-env-file
Support for custom global env variables
2 parents 562ff01 + 0de7349 commit e3e7cb3

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

basescript/basescript.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import argparse
55
import socket
66

7-
from .log import init_logger, pretty_print
7+
from .log import init_logger, pretty_print, ReadEnv
88
from deeputil import Dummy
99

1010

@@ -59,6 +59,9 @@ def __init__(self, args=None):
5959
self._flush_metrics_q = log._force_flush_q
6060
self.log = log.bind(name=self.args.name)
6161

62+
if self.args.env_file:
63+
ReadEnv(self.args.env_file)
64+
6265
self.stats = Dummy()
6366

6467
args = {n: getattr(self.args, n) for n in vars(self.args)}
@@ -174,6 +177,11 @@ def define_baseargs(self, parser):
174177
action="store_true",
175178
help="Hide log keys such as id, host",
176179
)
180+
parser.add_argument(
181+
"--env-file",
182+
default=None,
183+
help="Writes logs to log file if specified, default: %(default)s",
184+
)
177185

178186
def define_args(self, parser):
179187
"""

basescript/log.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import logging
88
import numbers
99
import signal
10+
import yaml
1011
from six.moves import queue
1112
from threading import Thread, Lock
1213
from datetime import datetime
@@ -69,6 +70,22 @@ def __sighandler__(self, signum, frame):
6970
self.f = open(self.fpath, "a")
7071

7172

73+
class ReadEnv:
74+
def __init__(self, envfile):
75+
self.envfile = envfile
76+
self.env = self.read()
77+
setattr(structlog.BoundLoggerBase, "env_context", self.env)
78+
signal.signal(signal.SIGUSR1, self.__sighandler__)
79+
80+
def read(self):
81+
with open(self.envfile) as f:
82+
return yaml.full_load(f.read())
83+
84+
def __sighandler__(self, signum, frame):
85+
self.env = self.read()
86+
setattr(structlog.BoundLoggerBase, "env_context", self.env)
87+
88+
7289
class StderrConsoleRenderer(object):
7390
BACKUP_KEYS = ("timestamp", "level", "event", "logger", "stack", "exception")
7491

@@ -163,6 +180,8 @@ def _add_base_info(self, event_dict):
163180
f = sys._getframe()
164181
level_method_frame = f.f_back
165182
caller_frame = level_method_frame.f_back
183+
if hasattr(self, "env_context"):
184+
event_dict.update(self.env_context)
166185
return event_dict
167186

168187
def debug(self, event=None, *args, **kw):

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def get_long_description():
2525

2626
long_description = get_long_description()
2727

28-
version = "0.3.8"
28+
version = "0.3.9"
2929
setup(
3030
name="basescript",
3131
version=version,
@@ -43,6 +43,7 @@ def get_long_description():
4343
"structlog==18.1.0",
4444
"colorama==0.3.9",
4545
"deeputil>=0.2.7",
46+
"PyYAML==5.1.1"
4647
],
4748
package_dir={"basescript": "basescript"},
4849
packages=find_packages(".", exclude=["tests*"]),

0 commit comments

Comments
 (0)