{"library":"python-interface","title":"Pythonic Interface Definitions","description":"The `python-interface` library provides a Pythonic way to define and enforce interfaces. It helps in creating clear contracts for classes, ensuring that implementations adhere to a specified structure. Currently at version 1.6.1, the library has a moderate release cadence, with updates addressing bugs, adding minor features like subinterfaces, and improving internal tooling.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install python-interface"],"cli":null},"imports":["from interface import Interface","from interface import abstractmethod","from interface import implements"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from interface import Interface, abstractmethod, implements\n\nclass MyInterface(Interface):\n    \"\"\"An example interface.\n\n    Requires a 'required_method' with specific arguments.\n    \"\"\"\n\n    @abstractmethod\n    def required_method(self, required_argument: str) -> bool:\n        \"\"\"This method must be implemented by any class implementing MyInterface.\"\"\"\n        pass\n\nclass MyImplementation(implements(MyInterface)):\n    \"\"\"A class correctly implementing MyInterface.\"\"\"\n    def required_method(self, required_argument: str) -> bool:\n        if isinstance(required_argument, str) and len(required_argument) > 0:\n            return True\n        return False\n\n# Attempting to instantiate a class that doesn't implement all methods will raise an error\nclass IncompleteImplementation(implements(MyInterface)):\n    pass\n\ntry:\n    print(\"Attempting to instantiate IncompleteImplementation...\")\n    IncompleteImplementation()\nexcept TypeError as e:\n    print(f\"Error as expected for incomplete implementation: {e}\")\n\n# Demonstrate successful implementation\nimpl = MyImplementation()\nprint(f\"MyImplementation.required_method('test'): {impl.required_method('test')}\")\nprint(f\"MyImplementation.required_method(''): {impl.required_method('')}\")\n\n# New in 1.6.0: Interface Subclassing\nclass ExtendedInterface(MyInterface):\n    \"\"\"An interface extending MyInterface with an additional method.\"\"\"\n    @abstractmethod\n    def another_required_method(self) -> int:\n        pass\n\nclass ExtendedImplementation(implements(ExtendedInterface)):\n    \"\"\"A class correctly implementing ExtendedInterface.\"\"\"\n    def required_method(self, required_argument: str) -> bool:\n        return True\n\n    def another_required_method(self) -> int:\n        return 42\n\nextended_impl = ExtendedImplementation()\nprint(f\"ExtendedImplementation.another_required_method(): {extended_impl.another_required_method()}\")\n","lang":"python","description":"This quickstart demonstrates how to define an interface using `Interface` and `abstractmethod`, and how to implement it using `implements`. It also shows the error raised for incomplete implementations and highlights the subinterface feature introduced in version 1.6.0.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"1.6.1","pypi_latest":"1.6.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.5,"avg_import_s":0.03,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"19.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.1,"import_time_s":0.01,"mem_mb":1.2,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"21.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.1,"disk_size":"11.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.1,"import_time_s":0.04,"mem_mb":1.1,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":2.8,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"19.1M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-interface","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"20M"}]}}