pyproject.toml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. [build-system]
  2. requires = ['setuptools>=61.0']
  3. build-backend = 'setuptools.build_meta'
  4. [project]
  5. name = 'sievemgr'
  6. authors = [{name = 'Odin Kroeger'}]
  7. description = 'Fully-featured ManageSieve command-line client and library'
  8. keywords = [
  9. 'managesieve',
  10. 'sieve',
  11. 'mail',
  12. 'filter'
  13. ]
  14. readme = 'README.rst'
  15. requires-python = '>=3.9'
  16. dependencies = [
  17. 'dnspython>=2',
  18. 'cryptography>=2.4'
  19. ]
  20. classifiers = [
  21. 'Development Status :: 4 - Beta',
  22. 'Environment :: Console',
  23. 'Intended Audience :: End Users/Desktop',
  24. 'Intended Audience :: System Administrators',
  25. 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
  26. 'Programming Language :: Python :: 3 :: Only',
  27. 'Programming Language :: Python :: 3.9',
  28. 'Programming Language :: Python :: 3.10',
  29. 'Programming Language :: Python :: 3.11',
  30. 'Programming Language :: Python :: 3.12',
  31. 'Programming Language :: Python :: 3.13',
  32. 'Natural Language :: English',
  33. 'Operating System :: POSIX',
  34. 'Topic :: Communications :: Email :: Filters'
  35. ]
  36. dynamic = ['version']
  37. [project.scripts]
  38. sievemgr = 'sievemgr:main'
  39. [project.urls]
  40. homepage = 'https://odkr.codeberg.page/sievemgr'
  41. repository = 'https://codeberg.org/odkr/sievemgr'
  42. issues = 'https://github.com/odkr/sievemgr/issues'
  43. [tool.bandit]
  44. skips = ['B101', 'B603']
  45. [tool.mypy]
  46. cache_fine_grained = true
  47. check_untyped_defs = true
  48. ignore_missing_imports = true
  49. no_error_summary = true
  50. [tool.pylint.main]
  51. jobs = 8
  52. load-plugins = [
  53. #'pylint.extensions.code_style',
  54. 'pylint.extensions.for_any_all',
  55. 'pylint.extensions.consider_ternary_expression',
  56. #'pylint.extensions.bad_builtin',
  57. 'pylint.extensions.dict_init_mutate',
  58. 'pylint.extensions.docstyle',
  59. 'pylint.extensions.dunder',
  60. 'pylint.extensions.check_elif',
  61. 'pylint.extensions.eq_without_hash',
  62. 'pylint.extensions.overlapping_exceptions',
  63. 'pylint.extensions.docparams',
  64. 'pylint.extensions.redefined_loop_name'
  65. ]
  66. reports = false
  67. score = false
  68. [tool.pylint.design]
  69. max-args = 7
  70. max-attributes = 20
  71. max-branches = 20
  72. max-locals = 35
  73. max-parents = 7
  74. max-public-methods = 20
  75. [tool.pylint.'messages control']
  76. disable = [
  77. 'locally-disabled',
  78. 'raw-checker-failed',
  79. 'suppressed-message',
  80. 'too-few-public-methods',
  81. 'too-many-lines',
  82. 'unspecified-encoding',
  83. 'wrong-import-position'
  84. ]
  85. [tool.pylint.refactoring]
  86. max-nested-blocks = 7
  87. [tool.pylint.string]
  88. check-quote-consistency = true
  89. [tool.pyright]
  90. typeCheckingMode = 'strict'
  91. reportPossiblyUnboundVariable = false
  92. reportMissingParameterType = false
  93. reportMissingTypeArgument = false
  94. # Already checked by PyLint.
  95. reportPrivateUsage = false
  96. reportUnknownArgumentType = false
  97. reportUnknownLambdaType = false
  98. reportUnknownMemberType = false
  99. reportUnknownParameterType = false
  100. reportUnknownVariableType = false
  101. [tool.ruff.lint]
  102. ignore = ['E402']
  103. [tool.vulture]
  104. ignore_names = ['complete_*', 'do_*']
  105. min_confidence = 80
  106. [tool.setuptools]
  107. py-modules = ['sievemgr']
  108. [tool.setuptools.dynamic]
  109. version = {attr = 'sievemgr.__version__'}