verify_config_reference.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from __future__ import print_function
  2. from fileinput import input
  3. from sys import exit, stderr
  4. from celery.app.defaults import NAMESPACES, flatten
  5. ignore = frozenset([
  6. "BROKER_INSIST",
  7. "CELERYD_POOL_PUTLOCKS",
  8. "CELERY_AMQP_TASK_RESULT_CONNECTION_MAX",
  9. "BROKER_HOST",
  10. "BROKER_USER",
  11. "BROKER_PASSWORD",
  12. "BROKER_VHOST",
  13. "BROKER_PORT",
  14. "CELERY_REDIS_HOST",
  15. "CELERY_REDIS_PORT",
  16. "CELERY_REDIS_DB",
  17. "CELERY_REDIS_PASSWORD",
  18. ])
  19. def is_ignored(setting, option):
  20. return setting in ignore or option.deprecate_by
  21. def find_undocumented_settings(directive=".. setting:: "):
  22. settings = dict(flatten(NAMESPACES))
  23. all = set(settings)
  24. documented = set(line.strip()[len(directive):].strip()
  25. for line in input()
  26. if line.strip().startswith(directive))
  27. return [setting for setting in all ^ documented
  28. if not is_ignored(setting, settings[setting])]
  29. if __name__ == "__main__":
  30. sep = """\n * """
  31. missing = find_undocumented_settings()
  32. if missing:
  33. print("Error: found undocumented settings:{0}{1}".format(
  34. sep, sep.join(sorted(missing))), file=sys.stderr)
  35. exit(1)
  36. print("OK: Configuration reference complete :-)")
  37. exit(0)