Compare commits

..

No commits in common. "d629e8fb710cdc4fdcdf81c0c686f691eaa29ad1" and "fd8ed776d4f1e3a05f733516df51a90ba7fca0e4" have entirely different histories.

3 changed files with 8 additions and 39 deletions

3
.gitignore vendored
View file

@ -1,4 +1 @@
__pycache__ __pycache__
wp-cal-integration
*.c
*.o

View file

@ -1,21 +0,0 @@
CC ?= cc
CFLAGS ?= $(shell python-config --embed --cflags)
LDFLAGS ?= $(shell python-config --embed --ldflags)
SRC := main.py adapters/*.py
OBJ := $(SRC:%.py=%.o)
wp-cal-integration: $(OBJ)
$(CC) $(LDFLAGS) -o $@ $^
clean:
$(RM) $(OBJ)
main.c: main.py
cython -3 --embed -o $@ $<
%.c: %.py
cython -3 -o $@ $<
%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<

23
main.py
View file

@ -39,12 +39,12 @@ class BaseConfig(dict):
def _load(self): def _load(self):
try: try:
if self.file == '-': if self.file == '-':
config = yaml.safe_load(sys.stdin) config = yaml.load(sys.stdin, Loader=Loader)
else: else:
if os.stat(self.file).st_mode & 0o777 & ~0o600: if os.stat(self.file).st_mode & 0o777 & ~0o600:
raise Exception('refusing to load insecure configuration file, file must have permission 0o600') raise Exception('refusing to load insecure configuration file, file must have permission 0o600')
with open(self.file) as fp: with open(self.file) as fp:
config = yaml.safe_load(fp) config = yaml.load(fp, Loader=Loader)
if config is None: if config is None:
config = {} config = {}
for k, v in config.items(): for k, v in config.items():
@ -65,7 +65,7 @@ class BaseConfig(dict):
def _save(self): def _save(self):
with open(self.file, 'w') as fp: with open(self.file, 'w') as fp:
yaml.safe_dump(dict(self), fp) yaml.dump(self, fp, Dumper=Dumper)
def exception(self): def exception(self):
return self._ex return self._ex
@ -164,23 +164,16 @@ def init_logging():
def set_logging_level(level: str): def set_logging_level(level: str):
levels = { allowed_values = {'NOTSET', 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'}
'NOTSET': logging.NOTSET,
'DEBUG': logging.DEBUG,
'INFO': logging.INFO,
'WARNING': logging.WARNING,
'WARN': logging.WARNING,
'ERROR': logging.ERROR,
'CRITICAL': logging.CRITICAL,
}
log_levels = [x.split(':') for x in level.split(',')] log_levels = [x.split(':') for x in level.split(',')]
for module, level in log_levels: for module, level in log_levels:
module = module.strip() if module else None module = module.strip() if module else None
level = level.strip().upper() level = level.strip().upper()
if level not in levels: if level not in allowed_values:
raise ValueError(f'invalid log level, allowed values: {repr(set(levels.keys()))}') raise ValueError(f'invalid log level, allowed values: {repr(allowed_values)}')
logging.getLogger(module).setLevel(levels[level]) level = getattr(logging, level)
logging.getLogger(module).setLevel(level)
@click.command() @click.command()
@click.option('--config', '-c', envvar='WP_CAL_CONFIG', default='-', help='The configuration file') @click.option('--config', '-c', envvar='WP_CAL_CONFIG', default='-', help='The configuration file')