pyproject.toml 3.0 KB

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