Skip to main content

de-multiple-inheritance; squash class inheritance

Project description

demi - de-multiple-inheritance; squash class inheritance

Did you make a mistake in designing a mess of classes with multiple inheritance everywhere?

Do you want to understand deeply nested class hierarchies without navigating many different source code files?

Will you avoid making such mistakes in the future?

... well, my answers to the above questions are "yes :(", "yes!", and "probably not", respectively.

In any case -

This repo is a proof-of-concept of a tool that may have the potential to help with the above. It probably won't help you just yet.

Requirements

  • Python 3.9+ (for ast.unparse)

Usage

Install

$ pip install demi

Try with a provided test class:

$ demi import demi.tests.cls_ab.C

Or preferrably, reformat with black at the same time:

$ demi import demi.tests.cls_ab.C |black -
class C:
    """A Docstring

    B Docstring

    C Docstring"""

    a_value = "A"

    def afunc(self) -> str:
        return "A"

    def superfunc(self) -> int:
        def _super_A() -> int:
            b = ord(self.afunc())
            a = b + 2
            return a

        return _super_A() + 1

    b_value = "B"
    c_value = "C"

    def bfunc(self) -> str:
        return "B"

    def cfunc(self) -> str:
        return "C"

Or maybe try something from the standard library:

demi import argparse.BooleanOptionalAction
demi import tkinter.Widget
...

Maybe TODO

  • Properties have the same name twice, so only the setter gets shown
  • Switch to redbaron to retain comments?
  • Automatically invoke black to reformat the output?
  • Test suite?
  • For returns at the end of the method, simplify code?
  • Consider astor for Python below 3.9?

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

demi-0.0.0.tar.gz (32.5 kB view details)

Uploaded Source

File details

Details for the file demi-0.0.0.tar.gz.

File metadata

  • Download URL: demi-0.0.0.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

File hashes

Hashes for demi-0.0.0.tar.gz
Algorithm Hash digest
SHA256 36e2c9b4568a59e8656e45b130cb16407f31669e8a0abcd7900ba7e4957885d1
MD5 28c76f950b46498be60d5e00cbc9cc49
BLAKE2b-256 089c7b33e8a5ddf43c31413ab8a6ec1adac2b74a22c6cb639fd28a035b42a102

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page