content: [build-system]
  requires = [
  	"setuptools>=57",
  	"wheel>=0.36.0",
  	"build>=0.5.1",
  ]
  build-backend = "setuptools.build_meta"
  
  [tool.ruff]
  line-length = 106
  indent-width = 4
  
  [tool.ruff.format]
  quote-style = "single"
  indent-style = "tab"
  
  [tool.ruff.lint]
  ignore = [
  	"E401", # multiple imports per line
  	"E701", # multiple statements per line
  	"E721", # use isinstance()
  	"E731", # lambda instead of def
  	"E402", # module import not top of file
  	"E722", # bare except
  	"E713", # membership 'not in'
  	"E741", # ambiguous variable name
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "mmgen/proto/eth/pyethereum/*"  = [ "F401" ]         # imported but unused
  "mmgen/proto/eth/rlp/sedes/*"   = [ "F401" ]         # imported but unused
  "mmgen/addrgen.py"              = [ "F401" ]         # imported but unused
  "mmgen/tool/*"                  = [
  	"F722", # Syntax error in forward annotation
  	"F821"  # Undefined name `sstr`
  ]
  "test/include/common.py"        = [ "F821" ]         # undefined name 'cfg'
  "test/misc/input_func.py"       = [ "F401" ]         # imported but unused
  "test/modtest_d/cashaddr.py"    = [ "F841" ]         # assigned to but never used
  "test/modtest_d/dep.py"         = [ "F401" ]         # imported but unused
  "test/modtest_d/testdep.py"     = [ "F401" ]         # imported but unused
  "test/modtest_d/obj.py"         = [ "F841" ]         # assigned to but never used
  "test/objtest_d/*"              = [ "F401" ]         # imported but unused
  "test/objattrtest_d/*"          = [ "F401" ]         # imported but unused
  "test/overlay/fakemods/*"       = [ "F403", "F405" ] # `import *` used
  "test/*.py"                     = [ "F401" ]         # imported but unused
  "test/colortest.py"             = [ "F403", "F405" ] # `import *` used
  "test/tooltest2.py"             = [ "F403", "F405" ] # `import *` used
  "test/overlay/tree/*"           = [ "ALL" ]
  
  [tool.pylint.format]
  indent-string = "\t"
  indent-after-paren = 2
  max-line-length = 106
  
  [tool.pylint.main]
  recursive = true
  jobs = 0
  ignore = [
  	"data",
  	"wordlist",
  	"pyethereum",
  	"rlp",
  	"main_split.py",
  	"tx.py",
  ]
  ignored-modules = [ # ignored for no-member, otherwise checked
  	"mmgen.proto.secp256k1.secp256k1",
  	"mmgen.term",
  	"msvcrt",
  	"gmpy2",
  ]
  
  [tool.pylint."messages control"]
  disable = [
  	"raw-checker-failed",
  	"bad-inline-option",
  	"locally-disabled",
  	"file-ignored",
  	"suppressed-message",
  	"useless-suppression",
  	"deprecated-pragma",
  	"use-symbolic-message-instead",
  	"use-implicit-booleaness-not-comparison-to-string",
  	"use-implicit-booleaness-not-comparison-to-zero",
  	"not-async-context-manager",
  # non-default:
  	"no-method-argument",
  	"function-redefined",
  	"method-hidden",
  ]
  
  [tool.pylint.miscellaneous]
  notes = ["FIXME", "TODO", "DEBUG", "WIP"]
  
  [tool.pylint.typecheck]
  mixin-class-rgx = """.*[Mm]ixin|\
  	^(Hilite|InitErrors|DummyWIF|\
  	cfg_file|cfg_file_sample|\
  	MoneroMMGenFile|keygen_base|xmr_signable|\
  	CmdTestShared|CmdTestSwapMethods|HTTPD|\
  	RPC|TxProxyClient|Contract)$"""
  
  ignored-classes = [ # ignored for no-member, otherwise checked
  	"argparse.Namespace",
  	"optparse.Values",
  	"thread._local",
  	"_thread._local",
  # mmgen:
  	"baseconv",
  	"deserialized_tx",
  	"mmgen.autosign.Signable.base",
  	"mmgen.autosign.Autosign", # tx_dir, etc. created dynamically
  	"mmgen.rpc.local.RPCClient",
  	"mmgen.proto.eth.tx.transaction.Transaction",
  	"mmgen.proto.eth.tw.view.EthereumTwView",
  	"mmgen.xmrwallet.file.MoneroMMGenTX.Base",
  	"mmgen.xmrwallet.file.MoneroWalletOutputsFile.Base",
  	"mmgen.xmrwallet.ops.sweep.OpSweep",
  	"mmgen.xmrwallet.ops.wallet.OpWallet",
  	"mmgen.xmrwallet.ops.label.OpLabel",
  	"mmgen.xmrwallet.ops.new.OpNew",
  	"mmgen.xmrwallet.ops.txview.OpTxview",
  	"mmgen.xmrwallet.file.outputs.MoneroWalletOutputsFile.Base",
  	"mmgen.xmrwallet.file.tx.MoneroMMGenTX.Base",
  	"MMGenObjectDevTools",
  	"MnemonicEntry",
  	"MnEntryMode",
  	"Sha2",
  	"TwRPC",
  	"TxInfo",
  # test suite:
  	"CmdGroupMgr",
  	"CmdTestEthBumpMethods",
  	"CmdTestEthdevMethods",
  	"CmdTestEthSwapMethods",
  	"FFI_override",
  	"GenTool",
  	"Help",
  	"Opts",
  	"SwapMgrBase",
  	"TestHashFunc",
  	"VirtBlockDeviceBase",
  ]
  