config_stubs.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. from pathlib import Path
  2. from typing import Optional, Dict, Union, Tuple, Callable, Pattern, Type, Any, List
  3. from mypy_extensions import TypedDict
  4. SimpleConfigValue = Union[str, bool, int, None, Pattern, Dict[str, Any]]
  5. SimpleConfigValueDict = Dict[str, SimpleConfigValue]
  6. SimpleConfigValueGetter = Callable[[], SimpleConfigValue]
  7. ConfigValue = Union[SimpleConfigValue, SimpleConfigValueDict, SimpleConfigValueGetter]
  8. SHArgs = List[str] # shell command args list e.g. ["--something=1", "--someotherarg"]
  9. class BaseConfig(TypedDict):
  10. pass
  11. class ConfigDict(BaseConfig, total=False):
  12. """
  13. # Regenerate by pasting this quine into `archivebox shell` 🥚
  14. from archivebox.config import ConfigDict, CONFIG_SCHEMA
  15. print('class ConfigDict(BaseConfig, total=False):')
  16. print(' ' + '"'*3 + ConfigDict.__doc__ + '"'*3)
  17. for section, configs in CONFIG_SCHEMA.items():
  18. for key, attrs in configs.items():
  19. Type, default = attrs['type'], attrs['default']
  20. if default is None:
  21. print(f' {key}: Optional[{Type.__name__}]')
  22. else:
  23. print(f' {key}: {Type.__name__}')
  24. print()
  25. """
  26. IS_TTY: bool
  27. USE_COLOR: bool
  28. SHOW_PROGRESS: bool
  29. IN_DOCKER: bool
  30. IN_QEMU: bool
  31. PUID: int
  32. PGID: int
  33. OUTPUT_DIR: Optional[str]
  34. CONFIG_FILE: Optional[str]
  35. ONLY_NEW: bool
  36. TIMEOUT: int
  37. MEDIA_TIMEOUT: int
  38. OUTPUT_PERMISSIONS: str
  39. RESTRICT_FILE_NAMES: str
  40. URL_DENYLIST: str
  41. URL_ALLOWLIST: Optional[str]
  42. ADMIN_USERNAME: Optional[str]
  43. ADMIN_PASSWORD: Optional[str]
  44. ENFORCE_ATOMIC_WRITES: bool
  45. TAG_SEPARATOR_PATTERN: str
  46. SECRET_KEY: Optional[str]
  47. BIND_ADDR: str
  48. ALLOWED_HOSTS: str
  49. DEBUG: bool
  50. PUBLIC_INDEX: bool
  51. PUBLIC_SNAPSHOTS: bool
  52. PUBLIC_ADD_VIEW: bool
  53. FOOTER_INFO: str
  54. SNAPSHOTS_PER_PAGE: int
  55. CUSTOM_TEMPLATES_DIR: Optional[str]
  56. TIME_ZONE: str
  57. TIMEZONE: str
  58. REVERSE_PROXY_USER_HEADER: str
  59. REVERSE_PROXY_WHITELIST: str
  60. LOGOUT_REDIRECT_URL: str
  61. PREVIEW_ORIGINALS: bool
  62. LDAP: bool
  63. LDAP_SERVER_URI: Optional[str]
  64. LDAP_BIND_DN: Optional[str]
  65. LDAP_BIND_PASSWORD: Optional[str]
  66. LDAP_USER_BASE: Optional[str]
  67. LDAP_USER_FILTER: Optional[str]
  68. LDAP_USERNAME_ATTR: Optional[str]
  69. LDAP_FIRSTNAME_ATTR: Optional[str]
  70. LDAP_LASTNAME_ATTR: Optional[str]
  71. LDAP_EMAIL_ATTR: Optional[str]
  72. LDAP_CREATE_SUPERUSER: bool
  73. SAVE_TITLE: bool
  74. SAVE_FAVICON: bool
  75. SAVE_WGET: bool
  76. SAVE_WGET_REQUISITES: bool
  77. SAVE_SINGLEFILE: bool
  78. SAVE_READABILITY: bool
  79. SAVE_MERCURY: bool
  80. SAVE_HTMLTOTEXT: bool
  81. SAVE_PDF: bool
  82. SAVE_SCREENSHOT: bool
  83. SAVE_DOM: bool
  84. SAVE_HEADERS: bool
  85. SAVE_WARC: bool
  86. SAVE_GIT: bool
  87. SAVE_MEDIA: bool
  88. SAVE_ARCHIVE_DOT_ORG: bool
  89. SAVE_ALLOWLIST: dict
  90. SAVE_DENYLIST: dict
  91. RESOLUTION: str
  92. GIT_DOMAINS: str
  93. CHECK_SSL_VALIDITY: bool
  94. MEDIA_MAX_SIZE: str
  95. CURL_USER_AGENT: str
  96. WGET_USER_AGENT: str
  97. CHROME_USER_AGENT: str
  98. COOKIES_FILE: Optional[str]
  99. CHROME_USER_DATA_DIR: Optional[str]
  100. CHROME_TIMEOUT: int
  101. CHROME_HEADLESS: bool
  102. CHROME_SANDBOX: bool
  103. YOUTUBEDL_ARGS: list
  104. WGET_ARGS: list
  105. CURL_ARGS: list
  106. GIT_ARGS: list
  107. SINGLEFILE_ARGS: Optional[list]
  108. FAVICON_PROVIDER: str
  109. USE_INDEXING_BACKEND: bool
  110. USE_SEARCHING_BACKEND: bool
  111. SEARCH_BACKEND_ENGINE: str
  112. SEARCH_BACKEND_HOST_NAME: str
  113. SEARCH_BACKEND_PORT: int
  114. SEARCH_BACKEND_PASSWORD: str
  115. SEARCH_PROCESS_HTML: bool
  116. SONIC_COLLECTION: str
  117. SONIC_BUCKET: str
  118. SEARCH_BACKEND_TIMEOUT: int
  119. FTS_SEPARATE_DATABASE: bool
  120. FTS_TOKENIZERS: str
  121. FTS_SQLITE_MAX_LENGTH: int
  122. USE_CURL: bool
  123. USE_WGET: bool
  124. USE_SINGLEFILE: bool
  125. USE_READABILITY: bool
  126. USE_MERCURY: bool
  127. USE_GIT: bool
  128. USE_CHROME: bool
  129. USE_NODE: bool
  130. USE_YOUTUBEDL: bool
  131. USE_RIPGREP: bool
  132. CURL_BINARY: str
  133. GIT_BINARY: str
  134. WGET_BINARY: str
  135. SINGLEFILE_BINARY: str
  136. READABILITY_BINARY: str
  137. MERCURY_BINARY: str
  138. YOUTUBEDL_BINARY: str
  139. NODE_BINARY: str
  140. RIPGREP_BINARY: str
  141. CHROME_BINARY: Optional[str]
  142. POCKET_CONSUMER_KEY: Optional[str]
  143. POCKET_ACCESS_TOKENS: dict
  144. READWISE_READER_TOKENS: dict
  145. ConfigDefaultValueGetter = Callable[[ConfigDict], ConfigValue]
  146. ConfigDefaultValue = Union[ConfigValue, ConfigDefaultValueGetter]
  147. ConfigDefault = TypedDict('ConfigDefault', {
  148. 'default': ConfigDefaultValue,
  149. 'type': Optional[Type],
  150. 'aliases': Optional[Tuple[str, ...]],
  151. }, total=False)
  152. ConfigDefaultDict = Dict[str, ConfigDefault]