:art: Diagram as Code for prototyping cloud system architectures

Overview

diagrams logo

Diagrams

license pypi version python version Run tests todos contributors

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.

Providers

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

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
  • 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
  • Labels not aligned to the Arrows (Edge).

    Labels not aligned to the Arrows (Edge).

    Hi, I am getting the labels not very well aligned to the Arrows (Edge). Can you please point me in the direction to solve it?

    dot - graphviz version 2.50.0 (20211204.2007) python packages: diagrams 0.23.1 graphviz 0.20.1

    latome_real-time_path_block_diagram-3.pdf

    from diagrams import Diagram, Edge, Cluster
    from diagrams.c4 import C4Node
    from functools import partial
    block = partial(C4Node, type='')
    conne = partial(Edge, splines='curved')
    
    efex_enc=16
    jfex_spn=32
    jfex_enc=16
    flat = False
    
    if flat:
        ids = range(efex_enc)
        jids = range(jfex_enc)
        di = {i : f'{i}' for i in range(efex_enc)}
        dr = {i : f'{i * 20}:{(i + 1) * 20 - 1}' for i in range(efex_enc)}
        jdi = {i: f'{i}' for i in range(jfex_spn)}
        jdr = {i: f'{i * 16}:{(i + 1) * 16 - 1}' for i in range(jfex_enc)}
    else:
        ids = [0, 1, 2, 15]
        di = {i : f'{i}' if i !=2 else '(...)' for i in range(efex_enc)}
        dr = {i : f'{i * 20}:{(i + 1) * 20 - 1}' if i !=2 else '(...)' for i in range(efex_enc)}
        jids = [0, 1, 2, 31]
        jdi = {i: f'{i}' if i != 2 else '(...)' for i in range(jfex_spn)}
        jdr = {i: f'{i * 16}:{(i + 1) * 16 - 1}' if i != 2 else '(...)' for i in range(jfex_enc)}
    
    
    with Diagram("LATOME real-time path block diagram", show=False, direction='LR',outformat="pdf"):
        lli_rx = block('Rx')
        lli_tx = block('Tx')
        istage = block('Istage')
        ser = block('Serializer')
        with Cluster("Remap"):
            ism = block("Input Switch matrix")
        user = block("User")
        #mon = block("Mon/TDAQ")
    
        with Cluster("Osum"):
            adapter = block("EMEC adapter")
            masking = block("Masking")
            osm = block("Output Switch Matrix")
            with Cluster("eFEX"):
                efexmle = block('MLE')
                efex_mle = [0]*efex_enc
                efex_crc = [0]*efex_enc
                efex_frb = [0]*efex_enc
                for i in range(efex_enc):
                    if i in ids:
                        with Cluster(f'eFEX encoder {di[i]}'):
                            efex_crc[i] = block(f"CRC {di[i]}")
                            efex_frb[i] = block(f"Frame builder {di[i]}")
                        efexmle >> conne(forward=True,label=f'{dr[i]}') >> efex_crc[i]
                        efex_crc[i] >> conne(label="20 & CRC") >> efex_frb[i]
            with Cluster("jFEX"):
                jfexssm = block('Sum Switch Matrix')
                jfexism = block('Input Switch Matrix')
                jfexmle = block('MLE')
                jfex_sum = [0]*jfex_spn
                jfex_crc = [0]*jfex_enc
                jfex_frb = [0]*jfex_enc
                for i in range(jfex_spn):
                    with Cluster(f'jFEX sum'):
                        if i in jids:
                            jfex_sum[i] = block(f"SUM {jdi[i]}")
                            jfexssm >> conne(label='10') >> jfex_sum[i] >> conne(label="1") >> jfexmle
                jfexism >> conne(label='224') >> jfexmle
                for i in range(jfex_enc):
                    if i in ids:
                        with Cluster(f'jFEX encoder {di[i]}'):
                            jfex_crc[i] = block(f"CRC {i}")
                            jfex_frb[i] = block(f"Frame Builder {i}")
                            jfexmle >> conne(forward=True,label=f'{jdr[i]}') >> jfex_crc[i] >> conne(label="16 & CRC") >> jfex_frb[i]
    
    
        lli_rx >> conne(label="48x8 words",style='dashed') >> istage >> conne(label="384") >> ism >> conne(label="320") >> user >> conne(label="320") >> adapter >> conne(label="320") >> masking >> conne(label="320") >> efexmle
        masking >>  conne(label="320") >> jfexism
        masking >> conne(label="320") >> jfexssm
        osm >> conne(label="48 frames",style='dashed') >> ser >> conne(label="48x7 words",style='dashed') >> lli_tx
    
        for i in range(efex_enc):
            if i in ids:
                efex_frb[i] >>  conne(label="1") >> osm
        for i in range(jfex_enc):
            if i in ids:
                jfex_frb[i] >>  conne(label="1") >> osm
    
    
    opened by mvsoliveira 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
A green Gopher & Pythonista 🥳 I love computer science, system design, and automating things 💕
MinJae Kwon
A Klipper plugin for accurate Z homing

Stable Z Homing for Klipper A Klipper plugin for accurate Z homing This plugin provides a new G-code command, STABLE_Z_HOME, which homes Z repeatedly

Matthew Lloyd 24 Dec 28, 2022
Release for Improved Denoising Diffusion Probabilistic Models

improved-diffusion This is the codebase for Improved Denoising Diffusion Probabilistic Models. Usage This section of the README walks through how to t

OpenAI 1.2k Dec 30, 2022
A program that makes all 47 textures of Optifine CTM only using 2 textures

A program that makes all 47 textures of Optifine CTM only using 2 textures

1 Jan 22, 2022
Decipher using Markov Chain Monte Carlo

Decipher using Markov Chain Monte Carlo

Science étonnante 43 Dec 24, 2022
a really simple bot that send you memes from reddit to whatsapp

a really simple bot that send you memes from reddit to whatsapp want to use use it? install the dependencies with pip3 install -r requirements.txt the

pai 10 Nov 28, 2021
An Agora Python Flask token generation server

A Flask Starter Application with Login and Registration About A token generation Server using the factory pattern and Blueprints. A forked stripped do

Nii Ayi 1 Jan 21, 2022
For my Philips Airpurifier AC3259/10

Philips-Airpurifier For my Philips Airpurifier AC3259/10 I will try to keep this code

AcidSleeper 7 Feb 26, 2022
Small projects for python beginners.

Python Mini Projects For Beginners I recently started doing the #100DaysOfCode Challenge in Python. I've used Python before, but I had switched to JS

Sreekesh Iyer 10 Dec 12, 2022
Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal resources please report to us and we will remove.

Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal

Wissem Marzouki 29 Nov 28, 2022
Cross-platform .NET Core pre-commit hooks

dotnet-core-pre-commit Cross-platform .NET Core pre-commit hooks How to use Add this to your .pre-commit-config.yaml - repo: https://github.com/juan

Juan Odicio 5 Jul 20, 2021
Машинное обучение на ФКН ВШЭ

Курс "Машинное обучение" на ФКН ВШЭ Конспекты лекций, материалы семинаров и домашние задания (теоретические, практические, соревнования) по курсу "Маш

Evgeny Sokolov 2.2k Jan 04, 2023
An app about keyboards, originating from the design of u/Sonnenschirm

keebapp-backend An app about keyboards, originating from the design of u/Sonnenschirm Setup Firstly, ensure that the environment for python is install

8 Sep 04, 2022
A pypi package details search python module

A pypi package details search python module

Fayas Noushad 5 Nov 30, 2021
Adam with minor modifications which give significant improvement

BAdam Modification of Adam [1] optimizer with increased stability and better performance. Tricks used: Decoupled weight decay as in AdamW [2]. Such de

19 May 11, 2022
Python implementation of the Lox language from Robert Nystrom's Crafting Interpreters

pylox Python implementation of the Lox language from Robert Nystrom's Crafting Interpreters. https://craftinginterpreters.com. This only implements th

David Beazley 37 Dec 28, 2022
CEI Natural Disaster Tracking Portal

CEI Natural Disaster Tracking Portal (cc) Climatic Eye of ISCI We are an initiative that conducts studies in the field of Space Science, publishes pro

Baris Dincer 7 Dec 24, 2022
A python tool for synchronizing the messages from different threads, processes, or hosts.

Sync-stream This project is designed for providing the synchoronization of the stdout / stderr among different threads, processes, devices or hosts.

Yuchen Jin 0 Aug 11, 2021
Simple tools to make/dump CPC+ CPR cartridge files

Simple tools to make/dump CPC+ CPR cartridge files mkcpr.py: make a CPR file from files (one chunk per file); see notes cprdump.py: dump the chunks of

Juan J. Martínez 3 May 30, 2022
ToDoListAndroid - To-do list application created using Kivymd

ToDoListAndroid To-do list application created using Kivymd. Version 1.0.0 (1/Jan/2022). Planned to do next: -Add setting (theme selector, etc) -Add f

AghnatHs 1 Jan 01, 2022
A Python Web Application for Checking vaccine slots by pincodes and auto slot booking.

The Dashboard is developed using Bokeh and python 3.5+. This dashboard is useful for you if you are looking for something which will help you to book the vaccine slot once slots become available. Oth

Suraj Deshmukh 10 Jan 23, 2022