{"id":20687996,"url":"https://github.com/engineerjoe440/py-ladder-diagram","last_synced_at":"2026-04-21T11:04:40.406Z","repository":{"id":239229574,"uuid":"798890408","full_name":"engineerjoe440/Py-Ladder-Diagram","owner":"engineerjoe440","description":"Ladder Logic Diagrams written in Python","archived":false,"fork":false,"pushed_at":"2024-05-13T22:29:47.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-07T01:01:50.402Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/engineerjoe440.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-10T17:33:20.000Z","updated_at":"2024-05-13T22:29:51.000Z","dependencies_parsed_at":"2024-05-13T22:52:34.014Z","dependency_job_id":"ce492d3a-4d33-423a-9eb7-db45225a673d","html_url":"https://github.com/engineerjoe440/Py-Ladder-Diagram","commit_stats":null,"previous_names":["engineerjoe440/pyladderdiag","engineerjoe440/pyld","engineerjoe440/py-ladder-diagram"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2FPy-Ladder-Diagram","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2FPy-Ladder-Diagram/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2FPy-Ladder-Diagram/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2FPy-Ladder-Diagram/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/engineerjoe440","download_url":"https://codeload.github.com/engineerjoe440/Py-Ladder-Diagram/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242945837,"owners_count":20210762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-16T22:58:50.537Z","updated_at":"2026-04-21T11:04:40.361Z","avatar_url":"https://github.com/engineerjoe440.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Py-Ladder-Diagram\n\nLadder Logic Diagrams written in Python.\n\n## Installation\n\nInstall with `pip`:\n\n```shell\npip install py-ladder-diagram\n```\n\n## Usage\n\nA simple, two-rung system can be modeled with the following code:\n\n```python\nfrom pyld import Ladder, Rung\nfrom pyld.elements import Coil, Contact, NegatedContact\n\nLadder(\n    Rung(\n        Contact(\"In1\"),\n        Contact(\"In2\"),\n        Coil(\"Out1\"),\n    ),\n    Rung(\n        Contact(\"In1\"),\n        NegatedContact(\"In2\"),\n        Coil(\"Out2\"),\n    )\n)\n# Renders:\n# █\n# █     In1    In2   Out1\n# █─────┤ ├────┤ ├────( )\n# █\n# █     In1    In2   Out2\n# █─────┤ ├────┤/├────( )\n# █\n```\n\nThe addition of a branch is relatively easy, and can render a few ways:\n\n```python\nfrom pyld import Ladder, Rung, Branch\nfrom pyld.elements import Coil, Contact, NegatedContact\n\nLadder(\n    Rung(\n        Branch(\n            Rung(\n                Contact(\"In1\"),\n                Contact(\"In2\"),\n            ),\n            Rung(\n                Contact(\"In1\"),\n                NegatedContact(\"In2\"),\n            )\n        ),\n        Coil(\"Out3\"),\n    )\n)\n# Renders:\n# █\n# █         In1    In2      Out3\n# █─────┬───┤ ├────┤ ├──┬────( )\n# █     │               │       \n# █     │   In1    In2  │       \n# █     └───┤ ├────┤/├──┘       \n# █                             \n# █\n\nLadder(\n    Branch(\n        Rung(\n            Contact(\"In1\"),\n            Contact(\"In2\"),\n            Coil(\"Out1\"),\n        ),\n        Rung(\n            Contact(\"In1\"),\n            NegatedContact(\"In2\"),\n            Coil(\"Out2\"),\n        )\n    )\n)\n# Renders:\n# █\n# █       In1    In2   Out1\n# █───┬───┤ ├────┤ ├────( )\n# █   │                    \n# █   │   In1    In2   Out2\n# █   └───┤ ├────┤/├────( )\n# █                        \n# █\n```\n\n### YAML Format (Future Work)\n\nAt some point in the future, functionality will be built in to model ladder\ndiagrams from YAML.\n\n```yaml\nRung:\n  - Contact: In1\n  - Contact: In2\n  - Coil: Out1\nRung:\n  - Branch:\n    - Rung:\n      - Contact: In1\n      - Contact: In2\n    - Rung:\n      - Contact: In1\n      - NegatedContact: In2\n  - Coil: Out3\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineerjoe440%2Fpy-ladder-diagram","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengineerjoe440%2Fpy-ladder-diagram","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineerjoe440%2Fpy-ladder-diagram/lists"}