| 44 | |
| 45 | |
| 46 | class Config: |
| 47 | |
| 48 | def __init__(self, usage=None, prog=None): |
| 49 | self.settings = make_settings() |
| 50 | self._forwarded_allow_networks = None |
| 51 | self._proxy_allow_networks = None |
| 52 | self.usage = usage |
| 53 | self.prog = prog or os.path.basename(sys.argv[0]) |
| 54 | self.env_orig = os.environ.copy() |
| 55 | |
| 56 | def __str__(self): |
| 57 | lines = [] |
| 58 | kmax = max(len(k) for k in self.settings) |
| 59 | for k in sorted(self.settings): |
| 60 | v = self.settings[k].value |
| 61 | if callable(v): |
| 62 | v = class="st">"<{}()>".format(v.__qualname__) |
| 63 | lines.append(class="st">"{k:{kmax}} = {v}".format(k=k, v=v, kmax=kmax)) |
| 64 | return class="st">"\n".join(lines) |
| 65 | |
| 66 | def __getattr__(self, name): |
| 67 | if name == class="st">"settings": |
| 68 | raise AttributeError() |
| 69 | if name not in self.settings: |
| 70 | raise AttributeError(class="st">"No configuration setting for: %s" % name) |
| 71 | return self.settings[name].get() |
| 72 | |
| 73 | def __setattr__(self, name, value): |
| 74 | if name != class="st">"settings" and name in self.settings: |
| 75 | raise AttributeError(class="st">"Invalid access!") |
| 76 | super().__setattr__(name, value) |
| 77 | |
| 78 | def set(self, name, value): |
| 79 | if name not in self.settings: |
| 80 | raise AttributeError(class="st">"No configuration setting for: %s" % name) |
| 81 | self.settings[name].set(value) |
| 82 | |
| 83 | def get_cmd_args_from_env(self): |
| 84 | if &class="cm">#x27;GUNICORN_CMD_ARGS' in self.env_orig: |
| 85 | return shlex.split(self.env_orig[&class="cm">#x27;GUNICORN_CMD_ARGS']) |
| 86 | return [] |
| 87 | |
| 88 | def parser(self): |
| 89 | kwargs = { |
| 90 | class="st">"usage": self.usage, |
| 91 | class="st">"prog": self.prog |
| 92 | } |
| 93 | parser = argparse.ArgumentParser(**kwargs) |
| 94 | parser.add_argument(class="st">"-v", class="st">"--version", |
| 95 | action=class="st">"version", default=argparse.SUPPRESS, |
| 96 | version=class="st">"%(prog)s (version " + __version__ + class="st">")\n", |
| 97 | help=class="st">"show program&class="cm">#x27;s version number and exit") |
| 98 | parser.add_argument(class="st">"args", nargs=class="st">"*", help=argparse.SUPPRESS) |
| 99 | |
| 100 | keys = sorted(self.settings, key=self.settings.__getitem__) |
| 101 | for k in keys: |
| 102 | self.settings[k].add_option(parser) |
| 103 |
no outgoing calls