Stores the information necessary to expose API calls within this module externally
| 507 | |
| 508 | |
| 509 | class API(object, metaclass=ModuleSingleton): |
| 510 | """Stores the information necessary to expose API calls within this module externally""" |
| 511 | |
| 512 | __slots__ = ( |
| 513 | "module", |
| 514 | "_directives", |
| 515 | "_http", |
| 516 | "_cli", |
| 517 | "_context", |
| 518 | "_context_factory", |
| 519 | "_delete_context", |
| 520 | "_startup_handlers", |
| 521 | "started", |
| 522 | "name", |
| 523 | "doc", |
| 524 | "future", |
| 525 | "cli_error_exit_codes", |
| 526 | ) |
| 527 | |
| 528 | def __init__(self, module=None, name="", doc="", cli_error_exit_codes=False, future=False): |
| 529 | self.module = module |
| 530 | if module: |
| 531 | self.name = name or module.__name__ or "" |
| 532 | self.doc = doc or module.__doc__ or "" |
| 533 | else: |
| 534 | self.name = name |
| 535 | self.doc = doc |
| 536 | self.started = False |
| 537 | self.cli_error_exit_codes = cli_error_exit_codes |
| 538 | self.future = future |
| 539 | |
| 540 | def directives(self): |
| 541 | """Returns all directives applicable to this Hug API""" |
| 542 | directive_sources = chain( |
| 543 | hug.defaults.directives.items(), getattr(self, "_directives", {}).items() |
| 544 | ) |
| 545 | return { |
| 546 | "hug_" + directive_name: directive for directive_name, directive in directive_sources |
| 547 | } |
| 548 | |
| 549 | def directive(self, name, default=None): |
| 550 | """Returns the loaded directive with the specified name, or default if passed name is not present""" |
| 551 | return getattr(self, "_directives", {}).get( |
| 552 | name, hug.defaults.directives.get(name, default) |
| 553 | ) |
| 554 | |
| 555 | def add_directive(self, directive): |
| 556 | self._directives = getattr(self, "_directives", {}) |
| 557 | self._directives[directive.__name__] = directive |
| 558 | |
| 559 | def handlers(self): |
| 560 | """Returns all registered handlers attached to this API""" |
| 561 | if getattr(self, "_http", None): |
| 562 | yield from self.http.handlers() |
| 563 | if getattr(self, "_cli", None): |
| 564 | yield from self.cli.handlers() |
| 565 | |
| 566 | @property |
no outgoing calls