When authoring OOP code, it is very common to have a file that only
contains one class, and nothing else.
This is common in some languages, and may be enforced, like in Java. However, it has very little to do with OOP and more to do with the fact that Java is a popular OOP language. I write/modify several classes in a single file every day (I'm a Python dev), it's a pretty common practice.
PEP8 says that all modules and all classes should have docstrings
outlining what they do. But in this case, the module is simply a
container for the class. If you put a description of the class, then
the information is duplicated
Yes it would be duplicated if you're following a one class per file rule. You have some choices:
Stop following the rule and allow multiple classes per file (especially if you're only following it because it is a perceived best practice)
Just put the docstring in the class and forget the module level docstring. If it's only one class per module (and you strictly follow OOP), then everything will be in the class, so the module docstring will be fairly meaningless. It's perfectly okay to not follow PEP8 to the letter, and in general, it's better to just do what's best for your particular situation than blindly/dogmatically following a standard or best practice.
HTH.
P.S. If a linter is complaining, and this in turn is ruining your builds, there's usually options to turn off certain PEP8 requirements. For example, ignoring E501 (line length greater than 80 chars) is a common one I see that teams choose to ignore (if the pep8
module is your linter, you can do pep8 --ignore=E501
, for instance)