: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
A Python package for caclulations and visualizations in geological sciences.

geo_calcs A Python package for caclulations and visualizations in geological sciences. Free software: MIT license Documentation: https://geo-calcs.rea

Drew Heasman 1 Jul 12, 2022
patchwork for matplotlib

patchworklib patchwork for matplotlib test code Preparation of example plots import seaborn as sns import numpy as np import pandas as pd #Bri

Mori Hideto 185 Jan 06, 2023
DataVisualization - The evolution of my arduino and python journey. New level of competence achieved

DataVisualization - The evolution of my arduino and python journey. New level of competence achieved

1 Jan 03, 2022
The plottify package is makes matplotlib plots more legible

plottify The plottify package is makes matplotlib plots more legible. It's a thin wrapper around matplotlib that automatically adjusts font sizes, sca

Andy Jones 97 Nov 04, 2022
A gui application to visualize various sorting algorithms using pure python.

Sorting Algorithm Visualizer A gui application to visualize various sorting algorithms using pure python. Language : Python 3 Libraries required Tkint

Rajarshi Banerjee 19 Nov 30, 2022
Backend app for visualizing CANedge log files in Grafana (directly from local disk or S3)

CANedge Grafana Backend - Visualize CAN/LIN Data in Dashboards This project enables easy dashboard visualization of log files from the CANedge CAN/LIN

13 Dec 15, 2022
Schema validation just got Pythonic

Schema validation just got Pythonic schema is a library for validating Python data structures, such as those obtained from config-files, forms, extern

Vladimir Keleshev 2.7k Jan 06, 2023
Schema validation for Xarray objects

xarray-schema Schema validation for Xarray installation This package is in the early stages of development. Install it from source: pip install git+gi

carbonplan 22 Oct 31, 2022
A filler visualizer built using python

filler-visualizer 42 filler のログをビジュアライズしてスポーツさながら楽しむことができます! Usage (標準入力でvisualizer.pyに渡せばALL OK) 1. 既にあるログをビジュアライズする $ ./filler_vm -t 3 -p1 john_fill

Takumi Hara 1 Nov 04, 2021
Plot toolbox based on Matplotlib, simple and elegant.

Elegant-Plot Plot toolbox based on Matplotlib, simple and elegant. 绘制效果 绘制过程 数据准备 每种图标类型的目录下有data.csv文件,依据样例数据填入自己的数据。

3 Jul 15, 2022
Massively parallel self-organizing maps: accelerate training on multicore CPUs, GPUs, and clusters

Somoclu Somoclu is a massively parallel implementation of self-organizing maps. It exploits multicore CPUs, it is able to rely on MPI for distributing

Peter Wittek 239 Nov 10, 2022
Parallel t-SNE implementation with Python and Torch wrappers.

Multicore t-SNE This is a multicore modification of Barnes-Hut t-SNE by L. Van der Maaten with python and Torch CFFI-based wrappers. This code also wo

Dmitry Ulyanov 1.7k Jan 09, 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
Monochromatic colorscheme for matplotlib with opinionated sensible default

Monochromatic colorscheme for matplotlib with opinionated sensible default If you need a simple monochromatic colorscheme for your matplotlib figures,

Aria Ghora Prabono 2 May 06, 2022
Simple addon for snapping active object to mesh ground

Snap to Ground Simple addon for snapping active object to mesh ground How to install: install the Python file as an addon use shortcut "D" in 3D view

Iyad Ahmed 12 Nov 07, 2022
Multi-class confusion matrix library in Python

Table of contents Overview Installation Usage Document Try PyCM in Your Browser Issues & Bug Reports Todo Outputs Dependencies Contribution References

Sepand Haghighi 1.3k Dec 31, 2022
Lightspin AWS IAM Vulnerability Scanner

Red-Shadow Lightspin AWS IAM Vulnerability Scanner Description Scan your AWS IAM Configuration for shadow admins in AWS IAM based on misconfigured den

Lightspin 90 Dec 14, 2022
The Timescale NFT Starter Kit is a step-by-step guide to get up and running with collecting, storing, analyzing and visualizing NFT data from OpenSea, using PostgreSQL and TimescaleDB.

Timescale NFT Starter Kit The Timescale NFT Starter Kit is a step-by-step guide to get up and running with collecting, storing, analyzing and visualiz

Timescale 102 Dec 24, 2022
Curvipy - The Python package for visualizing curves and linear transformations in a super simple way

Curvipy - The Python package for visualizing curves and linear transformations in a super simple way

Dylan Tintenfich 55 Dec 28, 2022
A site that displays up to date COVID-19 stats, powered by fastpages.

https://covid19dashboards.com This project was built with fastpages Background This project showcases how you can use fastpages to create a static das

GitHub 1.6k Jan 07, 2023