:art: Diagram as Code for prototyping cloud system architectures

Overview

diagrams logo

Diagrams

license pypi version python version Run tests todos

on premise provider aws provider azure provider gcp provider kubernetes provider alibaba cloud provider oracle cloud provider openstack provider firebase provider outscale provider elastic provider generic provider programming provider saas provider

Buy Me A Coffee

Diagram as Code.

Diagrams lets you draw the cloud system architecture in Python code. It was born for prototyping a new system architecture design without any design tools. You can also describe or visualize the existing system architecture as well. Diagrams currently supports main major providers including: AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud etc... It also supports On-Premise nodes, SaaS and major Programming frameworks and languages.

Diagram as Code also allows you to track the architecture diagram changes in any version control system.

NOTE: It does not control any actual cloud resources nor does it generate cloud formation or terraform code. It is just for drawing the cloud system architecture diagrams.

Getting Started

It requires Python 3.6 or higher, check your Python version first.

It uses Graphviz to render the diagram, so you need to install Graphviz to use diagrams. After installing graphviz (or already have it), install the diagrams.

macOS users can download the Graphviz via brew install graphviz if you're using Homebrew.

# using pip (pip3)
$ pip install diagrams

# using pipenv
$ pipenv install diagrams

# using poetry
$ poetry add diagrams

You can start with quick start. Check out guides for more details, and you can find all available nodes list in here.

Examples

Event Processing Stateful Architecture Advanced Web Service
event processing stateful architecture advanced web service with on-premise

You can find all the examples on the examples page.

Contributing

To contribute to diagram, check out contribution guidelines.

Let me know if you are using diagrams! I'll add you in showcase page. (I'm working on it!) :)

Who uses it?

GitPitch

GitPitch is the perfect slide deck solution for Tech Conferences, Training, Developer Advocates, and Educators. Diagrams is now available as a dedicated Cloud Diagram Markdown Widget so you can use Diagrams directly on any slide for conferences, meetups, and training.

Cloudiscovery helps you to analyze resources in your cloud (AWS/GCP/Azure/Alibaba/IBM) account. It allows you to create a diagram of analyzed cloud resource map based on this Diagrams library, so you can draw the your existing cloud infrastructure with Cloudicovery.

Airflow Diagrams is an Airflow plugin that aims to easily visualise your Airflow DAGs on service level from providers like AWS, GCP, Azure, etc. via diagrams.

Other languages

  • If you are familiar to Go, you can use go-diagrams as well.

License

MIT

Comments
  • change the color for the clusters

    change the color for the clusters

    Hi Experts,

    I would like to change the color for the clusters like Tenancy, Compartment, VCN, OKE etc., Please refer below screenshots, Is that possible? If yes, can you pls guide me on that?

    Output from Diagram tool:

    diagram-screenshot

    Ideal output I would like to see:

    ideal_output

    kind/feature comp/cluster 
    opened by mumanoha 21
  • Update GCP Icons

    Update GCP Icons

    Hi there, I'm enjoying using Diagrams.

    But I've noticed a lot of the GCP icons appear to be outdated...

    There is a new GCP architecture icons pack available at this link: https://cloud.google.com/icons Is it possible to update the library to use these?

    Thanks, Soomin

    kind/feat/icon area/provider/gcp status/accepted 
    opened by soomineom 20
  • #90 #279 branded clusters [WIP]

    #90 #279 branded clusters [WIP]

    This is a PR based on https://github.com/mingrammer/diagrams/pull/90 add custom AWS clusters (see examples/aws.png for reference)

    I would love to here feedback before I will consider this to be ready.

    kind/feature status/need-to-review comp/cluster 
    opened by dan-ash 20
  • Basic support for C4 model primitives.

    Basic support for C4 model primitives.

    C4 is a model for visualizing software architecture. It defines a common terminology and a few core diagrams at different abstraction levels. We primarily use the System Landscape, System Context and Container diagrams so I started with just the entities needed for those.

    For a definition like this:

    from diagrams import Diagram
    from diagrams.c4 import Person, Container, Database, System, SystemBoundary, Relationship
    
    graph_attr = {
        "splines": "spline",
    }
    
    with Diagram("Container diagram for Internet Banking System", direction="TB", graph_attr=graph_attr):
        customer = Person(
            name="Personal Banking Customer", description="A customer of the bank, with personal bank accounts."
        )
    
        with SystemBoundary("Internet Banking System"):
            webapp = Container(
                name="Web Application",
                technology="Java and Spring MVC",
                description="Delivers the static content and the Internet banking single page application.",
            )
    
            spa = Container(
                name="Single-Page Application",
                technology="Javascript and Angular",
                description="Provides all of the Internet banking functionality to customers via their web browser.",
            )
    
            mobileapp = Container(
                name="Mobile App",
                technology="Xamarin",
                description="Provides a limited subset of the Internet banking functionality to customers via their mobile device.",
            )
    
            api = Container(
                name="API Application",
                technology="Java and Spring MVC",
                description="Provides Internet banking functionality via a JSON/HTTPS API.",
            )
    
            database = Database(
                name="Database",
                technology="Oracle Database Schema",
                description="Stores user registration information, hashed authentication credentials, access logs, etc.",
            )
    
        email = System(name="E-mail System", description="The internal Microsoft Exchange e-mail system.", external=True)
    
        mainframe = System(
            name="Mainframe Banking System",
            description="Stores all of the core banking information about customers, accounts, transactions, etc.",
            external=True,
        )
    
        customer >> Relationship("Visits bigbank.com/ib using [HTTPS]") >> webapp
        customer >> Relationship("Views account balances, and makes payments using") >> [spa, mobileapp]
        webapp >> Relationship("Delivers to the customer's web browser") >> spa
        spa >> Relationship("Make API calls to [JSON/HTTPS]") >> api
        mobileapp >> Relationship("Make API calls to [JSON/HTTPS]") >> api
    
        api >> Relationship("reads from and writes to") >> database
        api >> Relationship("Sends email using [SMTP]") >> email
        api >> Relationship("Makes API calls to [XML/HTTPS]") >> mainframe
        customer << Relationship("Sends e-mails to") << email
    

    It produces a diagram like this: container_diagram_for_internet_banking_system

    The implementation is a bit different from the other resources which are auto-generated based on images as far as I understand. If you'd prefer a different approach or would rather not have this upstream in diagrams, let me know! I also wasn't sure how to best integrate this in the documentation, but we could figure something out if this is a feature you'd like to see.

    Original discussion in #489.

    proposal comp/cluster comp/node comp/edge status/accepted 
    opened by mbruggmann 19
  • Label of edge misaligned

    Label of edge misaligned

    Hi there, Firstly, I love this project, thanks a lot! I am currently trying to create a diagram with labelled edges but the label position is incorrect.

    For example, when building this example from the doc. You can compare the position of label collect (on the right of the image, between metric and replica) with the one of the documentation (which seems correct).

    Tested with :

    • Ubuntu 18.04 and dot - graphviz version 2.40.1 (20161225.0304)
    • Ubuntu 20.04 and dot - graphviz version 2.43.0 (0)

    In both configurations, here is what I get: advanced_web_service_with_on-premise_(colored)

    Image from the documentation: image

    Any clue?

    bug comp/edge status/accepted 
    opened by tducret 16
  • How to change node color for OCI

    How to change node color for OCI

    First of all, Thanks a lot for this amazing innovative tool!! Great work!!

    I am new to this tool and still learning it, so please forgive me if I am wrong.

    Based on my research, there is no way to change the color of the node / cloud resources icon, lets say for OCI, it's always black, but Oracle is Red. Is that something that you guys can provide a resolution?

    Thanks in advance for the help / support!!

    kind/feat/icon comp/node area/provider/oci 
    opened by mumanoha 15
  • Update GCP icons

    Update GCP icons

    Update existing GCP icons using updated official GCP icons: see https://cloud.google.com/icons.

    Note, generic icons are updated with the corresponding new generic icon, except "ai-platform-data-labeling-service.png" since it now has its own unique icon.

    Closes #554.

    opened by DataDavD 14
  • Add icons to docs

    Add icons to docs

    Thought it could be useful to have an image showing what the icon looks like in the docs. Also fixes #466

    This is how the change looks:

    diagrams_docs_with_icons

    I couldn't decide how to handle the white icons from OCI, so they are currently not visible against the white background, but they all have a black icon alternative next to them which is visible so that shouldn't be much of an issue. Can update this though if there any any suggestions for handling the white icons.

    kind/docs status/accepted 
    opened by lrjball 14
  • Misaligned Node Labels

    Misaligned Node Labels

    By the way, excellent project!

    I've run the examples but the node labels are bad aligned. Maybe I'm using some incompatible graphviz version

    • graphviz: 2.40.1-2
    • diagrams: 0.2.1

    clustered_web_services

    bug 
    opened by bkmeneguello 14
  • Diagrams on the web #24 #177

    Diagrams on the web #24 #177

    Here a POC for a web generator.

    Instructions: Go in docker directory. Run docker-compose up --build Wait to complete then open your browser http://0.0.0.0:5000/

    It's an early version with bugs but basically you can build diagrams. Added fonts but only support Asian language CJK, and ascii + French (tested language). I mainly copy: http://webgraphviz.com/ :-)

    kind/feature proposal status/need-to-review 
    opened by gabriel-tessier 12
  • Add slack

    Add slack

    Motivation

    We sometimes do chatops with slack. We can potentially regard slack as a part of cloud architecture. So, it would be great to add the slack icon.

    Resources

    https://brandfolder.com/slack/logos

    Comment

    If it would be ok to add slack, I am not sure where it should be categorized.

    kind/feat/provider proposal status/accepted 
    opened by yu-iskw 11
  • Labels position on big diagram

    Labels position on big diagram

    Hi, we are using the lib to generate all diagrams in our project and it's working perfectly fine. But we have a small issue for our api diagram. Indeed, we have a lot of api route and we wanted to add the label on each edge but somehow the labels are misplacing and we have them at the bottom and not on label ( it's like they are "pushed" by the others edges to the bottom).

    Here is the img we get : api

    And here is the file use to generate it as pdf because it can't put it as .py file ( sorry if not really beautiful we generate it automatically) :

    from diagrams.aws.analytics import *
    from diagrams.aws.ar import *
    from diagrams.aws.blockchain import *
    from diagrams.aws.business import *
    from diagrams.aws.compute import *
    from diagrams.aws.cost import *
    from diagrams.aws.database import *
    from diagrams.aws.devtools import *
    from diagrams.aws.enablement import *
    from diagrams.aws.enduser import *
    from diagrams.aws.engagement import *
    from diagrams.aws.game import *
    from diagrams.aws.general import *
    from diagrams.aws.integration import *
    from diagrams.aws.iot import *
    from diagrams.aws.management import *
    from diagrams.aws.media import *
    from diagrams.aws.migration import *
    from diagrams.aws.ml import *
    from diagrams.aws.mobile import *
    from diagrams.aws.network import *
    from diagrams.aws.quantum import *
    from diagrams.aws.robotics import *
    from diagrams.aws.satellite import *
    from diagrams.aws.security import *
    from diagrams.aws.storage import *
    
    with Diagram(
        "api",
        filename=r"img/api",
        show=False,
        graph_attr={"fontsize": "20", "forcelabels": "true"},
        edge_attr={"fontsize": "12"},
        node_attr={"fontsize": "15", "fontname": "times"},
    ):
        clm_user_pool = Cognito("clm_user_pool")
        web_bucket = S3("web_bucket")
        clm_alb = ELB("clm_alb")
        reverse_proxy = Lambda("reverse_proxy")
        clm_record = Route53("clm_record")
        config = S3("config")
        authorizer = Lambda("authorizer")
        whoami = Lambda("whoami")
        clm_api = APIGateway("clm_api")
        load_balancer_to_api = Lambda("load_balancer_to_api")
        with Cluster("DB Mapping"):
            entity_mapping = DDB("entity_mapping")
            icao_customer_regions = DDB("icao_customer_regions")
            aircraft_family = DDB("aircraft_family")
        with Cluster("DB Cluster"):
            entities = DDB("entities")
            records = DDB("records")
            ingestion_status = DDB("ingestion_status")
            flags_table = DDB("flags_table")
        with Cluster("User Management"):
            user_role_region = DDB("user_role_region")
            role_permission = DDB("role_permission")
        with Cluster("filters"):
            filters = Lambda("filters")
            filter_contracts = Lambda("filter_contracts")
            get_list_buyers = Lambda("get_list_buyers")
            get_list_sub_category = Lambda("get_list_sub_category")
            get_list_entity = Lambda("get_list_entity")
        with Cluster("contracts"):
            get_contract_id_card = Lambda("get_contract_id_card")
            get_contracts_card = Lambda("get_contracts_card")
            get_text = Lambda("get_text")
            search = Lambda("search")
        with Cluster("flters"):
            get_list_category = Lambda("get_list_category")
        with Cluster("kpi"):
            get_kpi_entities = Lambda("get_kpi_entities")
            get_kpi_contracts = Lambda("get_kpi_contracts")
            get_kpi_contract_id = Lambda("get_kpi_contract_id")
            get_kpi_all_contract = Lambda("get_kpi_all_contract")
        with Cluster("flag"):
            flags_create = Lambda("flags_create")
            get_flags_data = Lambda("get_flags_data")
        with Cluster("support"):
            reextract_entity = Lambda("reextract_entity")
        with Cluster("tests"):
            tests_create_presigned = Lambda("tests_create_presigned")
        web_bucket >> Edge(label="") >> reverse_proxy
        clm_alb >> Edge(label="") << clm_user_pool
        clm_alb - Edge(label="default") - reverse_proxy
        clm_alb >> Edge(label="/api") << load_balancer_to_api
        clm_alb >> Edge(label="") << clm_record
        clm_user_pool - Edge(label="") - user_role_region
        clm_user_pool - Edge(label="") - role_permission
        user_role_region >> Edge(label="") >> whoami
        entities >> Edge(label="") >> filters
        entity_mapping >> Edge(label="") >> filters
        icao_customer_regions >> Edge(label="") >> filters
        entities >> Edge(label="") >> get_contract_id_card
        aircraft_family >> Edge(label="") >> get_contract_id_card
        icao_customer_regions >> Edge(label="") >> get_contract_id_card
        get_contracts_card >> Edge(label="") >> filter_contracts
        get_contracts_card >> Edge(label="") >> get_contract_id_card
        records >> Edge(label="") >> get_text
        entities >> Edge(label="") >> get_list_buyers
        icao_customer_regions >> Edge(label="") >> get_list_buyers
        entity_mapping >> Edge(label="") >> get_list_category
        entity_mapping >> Edge(label="") >> get_list_sub_category
        entity_mapping >> Edge(label="") >> get_list_entity
        entity_mapping >> Edge(label="") >> get_kpi_entities
        ingestion_status >> Edge(label="") >> get_kpi_entities
        entities >> Edge(label="") >> get_kpi_entities
        icao_customer_regions >> Edge(label="") >> get_kpi_contracts
        entity_mapping >> Edge(label="") >> get_kpi_contracts
        entities >> Edge(label="") >> get_kpi_contracts
        ingestion_status >> Edge(label="") >> get_kpi_contracts
        ingestion_status >> Edge(label="") >> get_kpi_all_contract
        icao_customer_regions >> Edge(label="") >> get_kpi_all_contract
        entities >> Edge(label="") >> search
        search >> Edge(label="") >> get_list_entity
        entity_mapping >> Edge(label="") >> search
        icao_customer_regions >> Edge(label="") >> search
        flags_table >> Edge(label="") >> search
        flags_create >> Edge(label="") >> flags_table
        config >> Edge(label="") >> tests_create_presigned
        entities >> Edge(label="") >> get_flags_data
        flags_table >> Edge(label="") >> get_flags_data
        entity_mapping >> Edge(label="") >> get_flags_data
        clm_api >> Edge(label="") >> authorizer
        clm_api >> Edge(label="/whoami") >> whoami
        clm_api >> Edge(label="/filters") >> filters
        clm_api >> Edge(label="/filters/buyer") >> get_list_buyers
        clm_api >> Edge(label="/filters/contracts") >> filter_contracts
        clm_api >> Edge(label="/filters/category") >> get_list_category
        clm_api >> Edge(label="/filters/sub_category") >> get_list_sub_category
        clm_api >> Edge(label="/filters/entity") >> get_list_entity
        clm_api >> Edge(label="/kpi/entities") >> get_kpi_entities
        clm_api >> Edge(label="/kpi/contracts") >> get_kpi_contracts
        clm_api >> Edge(label="/kpi/{contract_ID}") >> get_kpi_contract_id
        clm_api >> Edge(label="/kpi/all_contract") >> get_kpi_all_contract
        clm_api >> Edge(label="/contracts/{contract ID}/IDcard") >> get_contract_id_card
        clm_api >> Edge(label="/contracts/{contract ID}/search") >> search
        clm_api >> Edge(label="/contracts/IDcards") >> get_contracts_card
        clm_api >> Edge(label="/contracts/text/{text_uuid}") >> get_text
        clm_api >> Edge(label="/flag/entity") >> flags_create
        clm_api >> Edge(label="/tests/import") >> tests_create_presigned
        clm_api >> Edge(label="/support/reextract") >> reextract_entity
        load_balancer_to_api >> Edge(label="") << clm_api
    
    opened by AxelBayle 0
  • Node as cluster

    Node as cluster

    This is a PR to replace #438 to fix up the merge conflicts. Most of the work has been done by others but I am willing to address any comments in this PR and keep it up to date to get it merged.

    Not tested as #799 needs merged too.

    opened by lazzurs 0
  • chore(deps): bump setuptools from 59.6.0 to 65.5.1

    chore(deps): bump setuptools from 59.6.0 to 65.5.1

    Bumps setuptools from 59.6.0 to 65.5.1.

    Release notes

    Sourced from setuptools's releases.

    v65.5.1

    No release notes provided.

    v65.5.0

    No release notes provided.

    v65.4.1

    No release notes provided.

    v65.4.0

    No release notes provided.

    v65.3.0

    No release notes provided.

    v65.2.0

    No release notes provided.

    v65.1.1

    No release notes provided.

    v65.1.0

    No release notes provided.

    v65.0.2

    No release notes provided.

    v65.0.1

    No release notes provided.

    v65.0.0

    No release notes provided.

    v64.0.3

    No release notes provided.

    v64.0.2

    No release notes provided.

    v64.0.1

    No release notes provided.

    v64.0.0

    No release notes provided.

    v63.4.3

    No release notes provided.

    v63.4.2

    No release notes provided.

    ... (truncated)

    Changelog

    Sourced from setuptools's changelog.

    v65.5.1

    Misc ^^^^

    • #3638: Drop a test dependency on the mock package, always use :external+python:py:mod:unittest.mock -- by :user:hroncok
    • #3659: Fixed REDoS vector in package_index.

    v65.5.0

    Changes ^^^^^^^

    • #3624: Fixed editable install for multi-module/no-package src-layout projects.
    • #3626: Minor refactorings to support distutils using stdlib logging module.

    Documentation changes ^^^^^^^^^^^^^^^^^^^^^

    • #3419: Updated the example version numbers to be compliant with PEP-440 on the "Specifying Your Project’s Version" page of the user guide.

    Misc ^^^^

    • #3569: Improved information about conflicting entries in the current working directory and editable install (in documentation and as an informational warning).
    • #3576: Updated version of validate_pyproject.

    v65.4.1

    Misc ^^^^

    v65.4.0

    Changes ^^^^^^^

    v65.3.0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies python 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump isort from 4.3.21 to 5.11.4

    chore(deps-dev): bump isort from 4.3.21 to 5.11.4

    Bumps isort from 4.3.21 to 5.11.4.

    Release notes

    Sourced from isort's releases.

    5.11.4

    Changes

    :package: Dependencies

    5.11.3

    Changes

    :beetle: Fixes

    :construction_worker: Continuous Integration

    v5.11.3

    Changes

    :beetle: Fixes

    :construction_worker: Continuous Integration

    5.11.2

    Changes

    5.11.1

    Changes December 12 2022

    ... (truncated)

    Changelog

    Sourced from isort's changelog.

    5.11.4 December 21 2022

    5.11.3 December 16 2022

    5.11.2 December 12 2022

    5.11.1 December 12 2022

    5.11.0 December 12 2022

    ... (truncated)

    Commits
    • 98390f5 Merge pull request #2059 from PyCQA/version/5.11.4
    • df69a05 Bump version 5.11.4
    • f9add58 Merge pull request #2058 from PyCQA/deps/poetry-1.3.1
    • 36caa91 Bump Poetry 1.3.1
    • 3c2e2d0 Merge pull request #1978 from mgorny/toml-test
    • 45d6abd Remove obsolete toml import from the test suite
    • 3020e0b Merge pull request #2057 from mgorny/poetry-install
    • a6fdbfd Stop installing documentation files to top-level site-packages
    • ff306f8 Fix tag template to match old standard
    • 227c4ae Merge pull request #2052 from hugovk/main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump rope from 0.14.0 to 1.6.0

    chore(deps-dev): bump rope from 0.14.0 to 1.6.0

    Bumps rope from 0.14.0 to 1.6.0.

    Changelog

    Sourced from rope's changelog.

    Release 1.6.0

    New features & Enhancements

    • #559, #560 Improve handling of whitespace in import and from-import statements (@​lieryan)
    • #566, #567, #597 Fix variables in kwonlyargs and posonlyargs not being correctly passed to extracted methods (@​lieryan)

    Unit Test

    • #589, #596 Fix issue with sample_project() creating directories where it shouldn't when running tests (@​lieryan)
    • #547 Add config file for linters
    • #593 Remove only_for decorator for all python versions less than 3.7 (@​edreamleo)

    Tech Debt

    Release 1.5.1

    • #531 Add alternative way to retrieve version number from pyproject.toml

    Release 1.5.0

    Date: 2022-11-23

    Release 1.4.0

    ... (truncated)

    Commits
    • 85301a1 Bump version
    • 25e4736 Update CHANGELOG.md
    • 950f18a Missed fix from #546
    • ad886ca Create README.md
    • 7fc05ef Merge pull request #597 from python-rope/lieryan-posonlyargs-kwonlyargs-scope
    • c1b809c Mark test_extract_function_with_posonlyargs() for Python 3.8 and higher
    • d3bfca1 Remove unnecessary if isinstance(node, ast.arg) check
    • 5819fd2 Fix Python 3.7 doesn't have posonlyargs
    • 5f24a11 Simplify _get_argnames()
    • f1393db Update CHANGELOG.md
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
Releases(v0.23.1)
  • v0.23.1(Nov 8, 2022)

    What's Changed

    • Update README.md by @lakshminarasimmanv in https://github.com/mingrammer/diagrams/pull/757
    • Add: Twilio by @zendern in https://github.com/mingrammer/diagrams/pull/331
    • feat: adding messenger and line icons by @mkfsn in https://github.com/mingrammer/diagrams/pull/412
    • Allow node.id to be specified and not automatically generated by @vanife in https://github.com/mingrammer/diagrams/pull/422
    • Allow Node arguments to be passed to Custom Node by @bra-fsn in https://github.com/mingrammer/diagrams/pull/437
    • autolabel flag in diagrams that modifies label by @anovis in https://github.com/mingrammer/diagrams/pull/482
    • chore(deps): bump minimist from 1.2.5 to 1.2.7 in /website by @dependabot in https://github.com/mingrammer/diagrams/pull/761
    • chore(deps-dev): bump pytest from 6.2.1 to 7.0.1 by @dependabot in https://github.com/mingrammer/diagrams/pull/656
    • docs(website): update text on top page. by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/571
    • Add raspbian gen os by @abrudner in https://github.com/mingrammer/diagrams/pull/589
    • Prefer subprocess run over call by @kkirsche in https://github.com/mingrammer/diagrams/pull/625
    • feat(node): Update Dremio icon by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/651
    • refactor: Reflect changes in Cluster class by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/653
    • feat(node): add AWS app-runner #645 by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/654
    • chore(deps): bump json-schema and jsprim in /website by @dependabot in https://github.com/mingrammer/diagrams/pull/772
    • docs: fix simple typo, clearning -> cleaning by @timgates42 in https://github.com/mingrammer/diagrams/pull/724
    • feat(node): Onprem network remove white backgound by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/697
    • Add: saas.alerting.Xmatters by @jaredcurtis in https://github.com/mingrammer/diagrams/pull/712
    • feat: add Fastly CDN. by @cherouvim in https://github.com/mingrammer/diagrams/pull/740
    • feat(node): add Generic OS Debian (#549) by @gabriel-tessier in https://github.com/mingrammer/diagrams/pull/570
    • Add icons to docs by @lrjball in https://github.com/mingrammer/diagrams/pull/499
    • Add support for Harbor as an on-prem registry by @DR-dev-0714 in https://github.com/mingrammer/diagrams/pull/766
    • feat(node): add Generic OS Red Hat by @bdsoha in https://github.com/mingrammer/diagrams/pull/780
    • Add MLflow to OnPrem MLOps by @xadrianzetx in https://github.com/mingrammer/diagrams/pull/698

    New Contributors

    • @lakshminarasimmanv made their first contribution in https://github.com/mingrammer/diagrams/pull/757
    • @mkfsn made their first contribution in https://github.com/mingrammer/diagrams/pull/412
    • @vanife made their first contribution in https://github.com/mingrammer/diagrams/pull/422
    • @bra-fsn made their first contribution in https://github.com/mingrammer/diagrams/pull/437
    • @anovis made their first contribution in https://github.com/mingrammer/diagrams/pull/482
    • @abrudner made their first contribution in https://github.com/mingrammer/diagrams/pull/589
    • @kkirsche made their first contribution in https://github.com/mingrammer/diagrams/pull/625
    • @jaredcurtis made their first contribution in https://github.com/mingrammer/diagrams/pull/712
    • @cherouvim made their first contribution in https://github.com/mingrammer/diagrams/pull/740
    • @DR-dev-0714 made their first contribution in https://github.com/mingrammer/diagrams/pull/766
    • @bdsoha made their first contribution in https://github.com/mingrammer/diagrams/pull/780
    • @xadrianzetx made their first contribution in https://github.com/mingrammer/diagrams/pull/698

    Full Changelog: https://github.com/mingrammer/diagrams/compare/v0.22.0...v0.23.1

    Source code(tar.gz)
    Source code(zip)
  • v0.22.0(Sep 13, 2022)

    What's Changed

    • Fix typo by @Sparkz0629 in https://github.com/mingrammer/diagrams/pull/730
    • Add GraphQL by @houmam in https://github.com/mingrammer/diagrams/pull/660
    • Fix For go get Deprecation by @tmvanetten in https://github.com/mingrammer/diagrams/pull/713
    • Basic support for C4 model primitives. by @mbruggmann in https://github.com/mingrammer/diagrams/pull/508

    New Contributors

    • @Sparkz0629 made their first contribution in https://github.com/mingrammer/diagrams/pull/730
    • @houmam made their first contribution in https://github.com/mingrammer/diagrams/pull/660
    • @tmvanetten made their first contribution in https://github.com/mingrammer/diagrams/pull/713
    • @mbruggmann made their first contribution in https://github.com/mingrammer/diagrams/pull/508

    Full Changelog: https://github.com/mingrammer/diagrams/compare/v0.21.1...v0.22.0

    Source code(tar.gz)
    Source code(zip)
  • v0.21.1(Feb 9, 2022)

  • v0.21.0(Jan 22, 2022)

    Added

    • Support Nagios: #638
    • Support GCP API Gateway: #636
    • Support Chatbot: #633
    • Support DigitalOcean provider: #621
    • Support Dapr: #591
    • Support K3: #575
    • Support Latex: #565
    • Support Puppet: #492
    • Support Dynatrace: #471
    • Support Dremio Service: #451
    • Support Tyk: #449
    • Support Starlette #443
    • Support SVN: #426
    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(May 23, 2021)

    Added

    • Support IBM Provider: #525
    • Support Gitea: #478

    Fixed

    • Update Azure icons: #448, #494
    • Wrong type check and indentations
    • Wrong class names
    Source code(tar.gz)
    Source code(zip)
  • v0.19.1(Feb 22, 2021)

  • v0.19.0(Feb 22, 2021)

    Added

    • More AWS resources: #381
    • Support Azure VMScaleSet: #404
    • Support FastAPI: #380
    • Support flowchart symbols: #377
    • Support GCP monitoring: #343
    • Support PowerBI: #337
    • Support Humio: #409
    • Support New Relic: #340
    • Support Micronaut: #333
    • Support adding Presto, Apache Superset, Nextcloud: #327
    • Support nextcloud, bitwarden, boundary and ambassador: #363
    • Support Scala programming language: #373
    Source code(tar.gz)
    Source code(zip)
  • v0.18.0(Dec 3, 2020)

    Added

    • Support Azure Subnets: #360
    • Support GitHub Actions: #348
    • Support Outscale provider: #338
    • Support Cortex monitoring: #321
    • Support Discord: #313
    • Support CoreDNS and PowerDNS: #302
    • Support NATS: #301
    • Support container runtimes: #300
    • Support Jaeger: #299
    • Support Litmus Chaos and Chaos Mess for chaos engineering: #297
    • Support Dex and Federated OpenID Connect provider: #298
    • Support Buzfeed SSO and Oauth2 Proxy: #296
    • Support Vector aggregator service: #295
    • Support External DNS: #294
    • Support PVC, LXC, Java, DNS, and Zabbix: #291
    • Support Opnsense: #288
    • Support Generic Subnet: #285
    • Support Erlang and Elixir: #275
    • Support Rocketchat, Mattermost, and Microsoft Teams: #268
    • Support Akamai: #267
    • Support Cert Manager and Lets Encrypt: #265
    • Support Ocelot: #263
    • Support Open Service Mesh: #260

    Fixed

    • Correct spelling of Traditional Server: #351
    • Onprem storage incorrect config: #345
    Source code(tar.gz)
    Source code(zip)
  • v0.17.0(Aug 27, 2020)

    Added

    • Support GCP Endpoints: #259
    • Support DroneCI and Atlantis (Terraform): #255
    • Support Okta: #254
    • Support OutScale provider: #251
    • Support Prometheus Operator: #253
    • Support Snowflake: #245
    • Support for CJK fonts + Replace ms-fonts with opensans: #242
    • Support Pushover: #241

    Fixed

    • Update bm, vm cases for OCI
    • Set a dummy filename to prevent raise error when both name and filename are not provided: #240
    Source code(tar.gz)
    Source code(zip)
  • v0.16.0(Jul 13, 2020)

    Breaking Changes

    The following import changes:

    | Old import path | New import path | | -------------------------------------------------- | ---------------------------------------------------------- | | from diagrams.onprem.logging import Logstash | from diagrams.elastic.elasticsearch import Logstash | | from diagrams.onprem.monitoring import Kibana | from diagrams.elastic.elasticsearch import Kibana | | from diagrams.onprem.search import Elasticsearch | from diagrams.elastic.elasticsearch import Elasticsearch |

    The previous icon was the company icon, not the elasticsearch product.

    For the company icon: from diagrams.elastic.saas import Elastic

    Added

    • Docker local development setup: #210
    • Support OpenStack #211
    • Support SQL, Druid and Databricks
    • Support Cloudinary: #218

    Fixed

    • Clean GCP resources: #228
    • Support DataDog, PaperTrail, Syslog, Rsyslog and Graylog: #222
    • Update all OCI icon set (bark and white): #205
    Source code(tar.gz)
    Source code(zip)
  • v0.15.0(Jun 28, 2020)

    Added

    • Support curvestyle option (ortho or curved)
    • Support Auth0, Cloudflare and Recombee: #209

    Fixed

    • Fix typo for PersistentVolume: #207
    • Fix misaligned label text position
    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Jun 17, 2020)

    Added

    • Support sagemaker for AWS provider: #204
    • Support ConcourseCI: #198
    • Support Tekton CLI: #199
    • Support more analytics tools for Onprem provider: #195
    • Support more resources for AWS provider: #192
    • Support kubernetes ecosystem: #188
    • Support Beats for ElasticStack provider: #153
    • Support more icons for Generic provider: #186
    • SUpport Opsgenie: #187
    • Support Tekton: #150
    • Support Generic provider: #171
    Source code(tar.gz)
    Source code(zip)
  • v0.13.1(Jun 2, 2020)

  • v0.13.0(May 31, 2020)

    Added

    • Support more DynamoDB and IAM nodes for AWS: #180
    • New provider elastic: #174
    • Support Rust: #179
    • Support Flux and Flagger: #147
    • New provider saas: #173
    • New provider firebase: #167
    • Support ZuulCI: #145
    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(May 24, 2020)

    Added

    • Support GitlabCI: #166
    • Support Sentry: #165
    • Support Couchbase: #164
    • Support new IoT icons, and new Game, General and Robotics categories for AWS: #161
    • Support general icon set for Azure: #155
    • Support Fluent Bit: #154
    • Support integration services for Azure: #152
    • Support custom attribute options for Nodes: #151
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(May 18, 2020)

    Added

    • Support programming provider (programming languages and frameworks): #112
    • Support NACL, Subnets, Route Table and VPC peering for AWS provider: #135
    • Support Loki: #139
    • Support Tableau and Metabase: #142
    • Support AWS Elemental Services: #149

    Fixed

    • Rename Cloudfront to CloudFront: #129
    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(May 6, 2020)

  • v0.9.0(Apr 25, 2020)

    Added

    • Support Thanos: #99
    • Support AWS VPC Endpoint: #101
    • Support AWS VPC Router: #102
    • Support Teamcity: #103
    • Support Pomerium: #104
    • Support Ansible and AWX: #110

    Fixed

    • Replace MD5 Hash with UUID: #94
    • Verify Edge attributes exist before setting: #96
    Source code(tar.gz)
    Source code(zip)
  • v0.8.2(Apr 10, 2020)

  • v0.8.1(Apr 2, 2020)

  • v0.8.0(Mar 28, 2020)

    Added

    • Support Apache Beam: #66
    • Support PFSense and VyOS: #67
    • Support Polyaxon: #74
    • Support Spinnaker: #77
    • Support Git, GitLab and GitHub of onprem.vcs: #80
    • Support Dgraph, JanusGraph and Scylla of onprem.database: #84
    Source code(tar.gz)
    Source code(zip)
  • v0.7.4(Mar 14, 2020)

  • v0.7.3(Mar 10, 2020)

  • v0.7.2(Mar 9, 2020)

  • v0.7.0(Mar 9, 2020)

    Added

    • Customer engagement services for AWS: https://github.com/mingrammer/diagrams/pull/57
    • Edge attributes support: https://github.com/mingrammer/diagrams/pull/48
    Source code(tar.gz)
    Source code(zip)
  • v0.6.5(Mar 7, 2020)

  • v0.6.4(Feb 29, 2020)

  • v0.6.3(Feb 25, 2020)

  • v0.6.2(Feb 23, 2020)

  • v0.6.1(Feb 23, 2020)

Owner
MinJae Kwon
🐳 Golang & Python. I love computer science, system design, and automate something 💕
MinJae Kwon
GUI for visualization and interactive editing of SMPL-family body models ie. SMPL, SMPL-X, MANO, FLAME.

Body Model Visualizer Introduction This is a simple Open3D-based GUI for SMPL-family body models. This GUI lets you play with the shape, expression, a

Muhammed Kocabas 207 Jan 01, 2023
A GUI for Pandas DataFrames

PandasGUI A GUI for analyzing Pandas DataFrames. Demo Installation Install latest release from PyPi: pip install pandasgui Install directly from Githu

Adam 2.8k Jan 03, 2023
Plotting library for IPython/Jupyter notebooks

bqplot 2-D plotting library for Project Jupyter Introduction bqplot is a 2-D visualization system for Jupyter, based on the constructs of the Grammar

3.4k Dec 30, 2022
A python script editor for napari based on PyQode.

napari-script-editor A python script editor for napari based on PyQode. This napari plugin was generated with Cookiecutter using with @napari's cookie

Robert Haase 9 Sep 20, 2022
Complex heatmaps are efficient to visualize associations between different sources of data sets and reveal potential patterns.

Make Complex Heatmaps Complex heatmaps are efficient to visualize associations between different sources of data sets and reveal potential patterns. H

Zuguang Gu 973 Jan 09, 2023
Python package to Create, Read, Write, Edit, and Visualize GSFLOW models

pygsflow pyGSFLOW is a python package to Create, Read, Write, Edit, and Visualize GSFLOW models API Documentation pyGSFLOW API documentation can be fo

pyGSFLOW 21 Dec 14, 2022
Function Plotter: a simple application with GUI to plot mathematical functions

Function-Plotter Function Plotter is a simple application with GUI to plot mathe

Mohamed Nabawe 4 Jan 03, 2022
Alternative layout visualizer for ZSA Moonlander keyboard

General info This is a keyboard layout visualizer for ZSA Moonlander keyboard (because I didn't find their Oryx or their training tool particularly us

10 Jul 19, 2022
2D maze path solver visualizer implemented with python

2D maze path solver visualizer implemented with python

SS 14 Dec 21, 2022
Make scripted visualizations in blender

Scripted visualizations in blender The goal of this project is to script 3D scientific visualizations using blender. To achieve this, we aim to bring

Praneeth Namburi 10 Jun 01, 2022
📊 Charts with pure python

A zero-dependency python package that prints basic charts to a Jupyter output Charts supported: Bar graphs Scatter plots Histograms 🍑 📊 👏 Examples

Max Humber 54 Oct 04, 2022
Leyna's Visualizing Data With Python

Leyna's Visualizing Data Below is information on the number of bilingual students in three school districts in Massachusetts. You will also find infor

11 Oct 28, 2021
Tandem Mass Spectrum Prediction with Graph Transformers

MassFormer This is the original implementation of MassFormer, a graph transformer for small molecule MS/MS prediction. Check out the preprint on arxiv

Röst Lab 13 Oct 27, 2022
This is a learning tool and exploration app made using the Dash interactive Python framework developed by Plotly

Support Vector Machine (SVM) Explorer This app has been moved here. This repo is likely outdated and will not be updated. This is a learning tool and

Plotly 150 Nov 03, 2022
Advanced hot reloading for Python

The missing element of Python - Advanced Hot Reloading Details Reloadium adds hot reloading also called "edit and continue" functionality to any Pytho

Reloadware 1.9k Jan 04, 2023
A Simple Flask-Plotly Example for NTU 110-1 DSSI Class

A Simple Flask-Plotly Example for NTU 110-1 DSSI Class Live Demo Prerequisites We will use Flask and Ploty to build a Flask application. If you haven'

Ting Ni Wu 1 Dec 11, 2021
Open-source demos hosted on Dash Gallery

Dash Sample Apps This repository hosts the code for over 100 open-source Dash apps written in Python or R. They can serve as a starting point for your

Plotly 2.7k Jan 07, 2023
Generate a 3D Skyline in STL format and a OpenSCAD file from Gitlab contributions

Your Gitlab's contributions in a 3D Skyline gitlab-skyline is a Python command to generate a skyline figure from Gitlab contributions as Github did at

Félix Gómez 70 Dec 22, 2022
Plot-configurations for scientific publications, purely based on matplotlib

TUEplots Plot-configurations for scientific publications, purely based on matplotlib. Usage Please have a look at the examples in the example/ directo

Nicholas Krämer 487 Jan 08, 2023
The interactive graphing library for Python (includes Plotly Express) :sparkles:

plotly.py Latest Release User forum PyPI Downloads License Data Science Workspaces Our recommended IDE for Plotly’s Python graphing library is Dash En

Plotly 12.7k Jan 05, 2023