# 18. Forbid Private Member Access in Production Code Date: 2024-07-02 ## Status Accepted ## Context Most programming languages forbid access to private member variables at compile time to guarantee encapsulation. Python only does this by convention. Ruff now provides a rule (SLF001) that forbids it. See https://github.com/DiamondLightSource/python-copier-template/issues/154 for further discussion. ## Decision We will enable SLF001 for the `src` directory but not the `tests` directory, as we want to keep production code clean without raising the barrier to entry for writing tests. ## Consequences Any private member access in `src` will cause CI to fail, the ultimate override of `noqa` remains available.