[MAIN]

# Generated by setuptools_scm and git-ignored
ignore=_version.py

# OCP is a compiled (pybind11) extension pylint cannot introspect, so every
# `from OCP.X import Y` is reported as no-name-in-module
ignored-modules=OCP

[BASIC]

# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,x,y,z,ex,Run,_,X,Y,Z,XY,YZ,ZX,XZ,YX,ZY,GAP

# ISO / ASME / DIN drawing dimension labels: D, d1, B13, Ah, Re, E, K ...
good-names-rgxs=^[A-Z][a-z]?[0-9]{0,2}$

[DESIGN]

# Geometry construction is long by nature (many named dimensions)
max-branches=20
max-statements=100

[SIMILARITIES]

# build123d object constructors share unavoidable super().__init__ boilerplate
min-similarity-lines=12

[TYPECHECK]

# pylint infers ShapeList indexing as ShapeList rather than its element type
ignored-classes=ShapeList

[MESSAGES CONTROL]

disable=
    unsubscriptable-object,          # False positives
    protected-access,                # _variable to be hiddened from external users
    too-many-arguments,              # CAD is complex
    too-many-positional-arguments,   # ... a part is defined by many dimensions
    too-many-locals,                 # ... which become many named locals
    too-many-instance-attributes,    # ... and many attributes on the part
    too-many-public-methods,         # ... each exposed as a property
    too-few-public-methods,          # Objects and Operations will not have methods outside of _init
    too-many-lines,                  # One module per part family
    redefined-outer-name,            # build123d's operations (section, offset, face ...) are natural parameter names
    invalid-unary-operand-type       # -face (Face.__neg__ reverses a Face) is not seen by pylint
