From 0b4769289a4219d3e188d89801f51301634aa2a2 Mon Sep 17 00:00:00 2001 From: Zaar Hai Date: Tue, 2 Apr 2019 23:22:26 +1000 Subject: [PATCH] Drop dependency on disutils (#1544) * Drop dependency on distutils While distutils is part of stdlib, it feels odd to use distutils in main application code. I personally use a (lean)[https://hub.docker.com/r/haizaar/python-minimal/tags] Python distribution for running my applications that does not include distutils. * Flake8 fixes * "black" fixes * strtobool should actually return bool --- sanic/config.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/sanic/config.py b/sanic/config.py index a7183d77..e6503ac5 100644 --- a/sanic/config.py +++ b/sanic/config.py @@ -1,8 +1,6 @@ import os import types -from distutils.util import strtobool - from sanic.exceptions import PyFileError @@ -127,6 +125,23 @@ class Config(dict): self[config_key] = float(v) except ValueError: try: - self[config_key] = bool(strtobool(v)) + self[config_key] = strtobool(v) except ValueError: self[config_key] = v + + +def strtobool(val): + """ + This function was borrowed from distutils.utils. While distutils + is part of stdlib, it feels odd to use distutils in main application code. + + The function was modified to walk its talk and actually return bool + and not int. + """ + val = val.lower() + if val in ("y", "yes", "t", "true", "on", "1"): + return True + elif val in ("n", "no", "f", "false", "off", "0"): + return False + else: + raise ValueError("invalid truth value %r" % (val,))