mage-ai


Namemage-ai JSON
Version 0.9.69 PyPI version JSON
download
home_pagehttps://github.com/mage-ai/mage-ai
SummaryMage is a tool for building and deploying data pipelines.
upload_time2024-04-11 09:28:19
maintainerNone
docs_urlNone
authorMage
requires_python>=3.7
licenseNone
keywords
VCS
bugtrack_url
requirements Faker GitPython Jinja2 PyGithub PyJWT aiofiles alembic bcrypt croniter cryptography dask datadog freezegun great-expectations httpx inflection ipykernel ipython itsdangerous joblib jupyter-server-proxy jupyter-server jupyter_client ldap3 newrelic numpy pandas polars protobuf pyarrow python-dateutil pytz pyyaml redis requests ruamel.yaml scikit-learn sentry-sdk simplejson six sqlalchemy sqlglot terminado thefuzz tornado typer typing_extensions watchdog astor aws-secretsmanager-caching boto3 botocore clickhouse-connect db-dtypes duckdb google-api-core google-api-python-client google-cloud-bigquery google-cloud-iam google-cloud-pubsub google-cloud-run google-cloud-storage gspread kubernetes langchain langchain_community mysql-connector-python openai opentelemetry-api opentelemetry-exporter-prometheus opentelemetry-instrumentation-tornado opentelemetry-exporter-otlp opentelemetry-instrumentation-sqlalchemy oracledb pinotdb prometheus_client psycopg2 psycopg2-binary pydruid pyodbc redshift-connector lxml snowflake-connector-python sshtunnel tables trino azure-eventhub azure-identity azure-keyvault-secrets azure-keyvault-certificates azure-mgmt-containerinstance azure-storage-blob confluent-avro elasticsearch influxdb_client kafka-python nats-py nkeys opensearch-py pika pymongo requests_aws4auth stomp.py dbt-bigquery dbt-clickhouse dbt-core dbt-duckdb dbt-postgres dbt-redshift dbt-snowflake dbt-spark dbt-sqlserver dbt-trino attrs backoff clickhouse_sqlalchemy deltalake facebook_business gnupg google-analytics-data google-cloud-bigquery-storage httpx pendulum pymongo_schema python-magic redshift-connector requests_mock simple_salesforce singer_sdk stripe terminaltables twitter-ads tzlocal xlsx2csv xmltodict zenpy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align="center">
  <a
    target="_blank"
    href="https://mage.ai"
  >
    <img
      align="center"
      alt="Mage"
      src="https://github.com/mage-ai/assets/blob/main/mascots/mascots-shorter.jpeg?raw=true"
      style="width:100%;"
    />
  </a>
</h1>
<p align="center">
  ๐Ÿง™ A modern replacement for Airflow.
</p>

<p align="center">
  <a
    href="https://docs.mage.ai"
    target="_blank"
  ><b>Documentation</b></a>&nbsp;&nbsp;&nbsp;๐ŸŒช๏ธ&nbsp;&nbsp;&nbsp;
  <a
    href="https://youtu.be/GswOdShLGmg"
    target="_blank"
  ><b>Get a 5 min overview</b></a>&nbsp;&nbsp;&nbsp;๐ŸŒŠ&nbsp;&nbsp;&nbsp;
  <a
    href="https://demo.mage.ai"
    target="_blank"
  ><b>Play with live tool</b></a>&nbsp;&nbsp;&nbsp;๐Ÿ”ฅ&nbsp;&nbsp;&nbsp;
  <a
    href="https://www.mage.ai/chat"
    target="_blank"
  >
    <b>Get instant help</b>
  </a>
</p>
<div align="center">
  <a
    href="https://pypi.org/project/mage-ai/"
    target="_blank"
  >
    <img alt="PyPi" src="https://img.shields.io/pypi/v/mage-ai?color=orange" />
  </a>
  <a
    href="https://anaconda.org/conda-forge/mage-ai"
    target="_blank"
  >
    <img src="https://anaconda.org/conda-forge/mage-ai/badges/version.svg" />
  </a>
  <a
    href="https://opensource.org/licenses/Apache-2.0"
    target="_blank"
  >
    <img alt="License" src="https://img.shields.io/github/license/mage-ai/mage-ai?color=red" />
  </a>
  <a
    href="https://www.mage.ai/chat"
    target="_blank"
  >
    <img alt="Slack" src="https://img.shields.io/badge/Slack-Join%20Slack-blueviolet?logo=slack" />
  </a>
  <a
    href="https://github.com/mage-ai/mage-ai"
    target="_blank"
  >
    <img alt="GitHub Stars" src="https://img.shields.io/github/stars/mage-ai/mage-ai?logo=github">
  </a>
  <a
    href="https://hub.docker.com/r/mageai/mageai"
    target="_blank"
  >
    <img alt="Docker pulls" src="https://img.shields.io/docker/pulls/mageai/mageai.svg">
  </a>
  <a
    href="https://pepy.tech/project/mage-ai"
    target="_blank"
  >
    <img alt="pip installs" src="https://static.pepy.tech/personalized-badge/mage-ai?period=total&units=international_system&left_color=grey&right_color=blue&left_text=pip%20installs">
  </a>
</div>
<img
  referrerpolicy="no-referrer-when-downgrade"
  src="https://static.scarf.sh/a.png?x-pxid=b3c96d79-b8f0-414b-a687-8bfc164b4b7a"
/>

<div align="center">

### Give your data team `magical` powers

</div>

<p align="center">
  <b>Integrate</b> and synchronize data from 3rd party sources
</p>

<p align="center">
  Build real-time and batch pipelines to <b>transform</b> data using Python, SQL, and R
</p>

<p align="center">
  Run, monitor, and <b>orchestrate</b> thousands of pipelines without losing sleep
</p>

<br />

<p align="center">1๏ธโƒฃ ๐Ÿ—๏ธ</p>
<h1 align="center">Build</h1>
<p align="center">
  Have you met anyone who said they loved developing in Airflow?
  <br />
  Thatโ€™s why we designed an easy developer experience that youโ€™ll enjoy.
</p>

|   |   |
| --- | --- |
| <b>Easy developer experience</b><br />Start developing locally with a single command or launch a dev environment in your cloud using Terraform.<br /><br/><b>Language of choice</b><br />Write code in Python, SQL, or R in the same data pipeline for ultimate flexibility.<br /><br /><b>Engineering best practices built-in</b><br />Each step in your pipeline is a standalone file containing modular code thatโ€™s reusable and testable with data validations. No more DAGs with spaghetti code. | <img src="https://github.com/mage-ai/assets/blob/main/overview/mage-build.gif?raw=true" /> |

<p align="center">
  โ†“
</p>

<p align="center">2๏ธโƒฃ ๐Ÿ”ฎ</p>
<h1 align="center">Preview</h1>
<p align="center">
  Stop wasting time waiting around for your DAGs to finish testing.
  <br />
  Get instant feedback from your code each time you run it.
</p>

|   |   |
| --- | --- |
| <b>Interactive code</b><br />Immediately see results from your codeโ€™s output with an interactive notebook UI.<br /><br/><b>Data is a first-class citizen</b><br />Each block of code in your pipeline produces data that can be versioned, partitioned, and cataloged for future use.<br /><br /><b>Collaborate on cloud</b><br />Develop collaboratively on cloud resources, version control with Git, and test pipelines without waiting for an available shared staging environment. | <img src="https://github.com/mage-ai/assets/blob/main/overview/mage-preview.gif?raw=True" /> |

<p align="center">
  โ†“
</p>

<p align="center">3๏ธโƒฃ ๐Ÿš€</p>
<h1 align="center">Launch</h1>
<p align="center">
  Donโ€™t have a large team dedicated to Airflow?
  <br />
  Mage makes it easy for a single developer or small team to scale up and manage thousands of pipelines.
</p>

|   |   |
| --- | --- |
| <b>Fast deploy</b><br />Deploy Mage to AWS, GCP, or Azure with only 2 commands using maintained Terraform templates.<br /><br/><b>Scaling made simple</b><br />Transform very large datasets directly in your data warehouse or through a native integration with Spark.<br /><br /><b>Observability</b><br />Operationalize your pipelines with built-in monitoring, alerting, and observability through an intuitive UI. | <img src="https://github.com/mage-ai/assets/blob/main/overview/observability.gif?raw=True" /> |

<br />

# ๐Ÿง™ Intro

Mage is an open-source data pipeline tool for transforming and integrating data.

1. [Install](#%EF%B8%8F-install)
1. [Demo](#-demo)
1. [Tutorials](#-tutorials)
1. [Documentation](https://docs.mage.ai)
1. [Features](#-features)
1. [Core design principles](https://docs.mage.ai/design/core-design-principles)
1. [Core abstractions](https://docs.mage.ai/design/core-abstractions)
1. [Contributing](https://docs.mage.ai/community/contributing)

<br />

# ๐Ÿƒโ€โ™€๏ธ Install

The recommended way to install the latest version of Mage is through Docker with the following command:

```bash
docker pull mageai/mageai:latest
```

You can also install Mage using pip or conda, though this may cause dependency issues without the proper environment.

```bash
pip install mage-ai
```
```bash
conda install -c conda-forge mage-ai
```

Looking for help? The _fastest_ way to get started is by checking out our documentation [here](https://docs.mage.ai/getting-started/setup).

Looking for quick examples? Open a [demo](https://demo.mage.ai/) project right in your browser or check out our [guides](https://docs.mage.ai/guides/overview).

# ๐ŸŽฎ Demo

### Live demo

Build and run a data pipeline with our <b>[demo app](https://demo.mage.ai/)</b>.

> WARNING
>
> The live demo is public to everyone, please donโ€™t save anything sensitive (e.g. passwords, secrets, etc).
### Demo video (5 min)

[![Mage quick start demo](https://github.com/mage-ai/assets/blob/main/overview/overview-video.png?raw=True)](https://youtu.be/GswOdShLGmg)

<sub><i>Click the image to play video</i></sub>

<br />

# ๐Ÿ‘ฉโ€๐Ÿซ Tutorials

- [Load data from API, transform it, and export it to PostgreSQL](https://docs.mage.ai/guides/load-api-data)
- [Integrate Mage into an existing Airflow project](https://docs.mage.ai/integrations/airflow)
- [Train model on Titanic dataset](https://docs.mage.ai/guides/train-model)
- [Set up dbt models and orchestrate dbt runs](https://docs.mage.ai/integrations/dbt-models)

<img alt="Fire mage" height="160" src="https://github.com/mage-ai/assets/blob/main/mage-fire-charging-up.svg?raw=True" />

<br />

# ๐Ÿ”ฎ [Features](https://docs.mage.ai/about/features)

|   |   |   |
| --- | --- | --- |
| ๐ŸŽถ | <b>[Orchestration](https://docs.mage.ai/design/data-pipeline-management)</b> | Schedule and manage data pipelines with observability. |
| ๐Ÿ““ | <b>[Notebook](https://docs.mage.ai/about/features#notebook-for-building-data-pipelines)</b> | Interactive Python, SQL, & R editor for coding data pipelines. |
| ๐Ÿ—๏ธ | <b>[Data integrations](https://docs.mage.ai/data-integrations/overview)</b> | Synchronize data from 3rd party sources to your internal destinations. |
| ๐Ÿšฐ | <b>[Streaming pipelines](https://docs.mage.ai/guides/streaming-pipeline)</b> | Ingest and transform real-time data. |
| โŽ | <b>[dbt](https://docs.mage.ai/dbt/overview)</b> | Build, run, and manage your dbt models with Mage. |

<b>A sample data pipeline defined across 3 files โž</b>

1. Load data โž
    ```python
    @data_loader
    def load_csv_from_file():
        return pd.read_csv('default_repo/titanic.csv')
    ```
1. Transform data โž
    ```python
    @transformer
    def select_columns_from_df(df, *args):
        return df[['Age', 'Fare', 'Survived']]
    ```
1. Export data โž
    ```python
    @data_exporter
    def export_titanic_data_to_disk(df) -> None:
        df.to_csv('default_repo/titanic_transformed.csv')
    ```

<b>What the data pipeline looks like in the UI โž</b>

<img
  alt="data pipeline overview"
  src="https://github.com/mage-ai/assets/blob/main/data-pipeline-overview.png?raw=True"
/>

New? We recommend reading about <b>[blocks](https://docs.mage.ai/design/blocks)</b> and
learning from a <b>[hands-on tutorial](https://docs.mage.ai/guides/load-api-data)</b>.

[![Ask us questions on Slack](https://img.shields.io/badge/%20-Ask%20us%20questions%20on%20Slack-purple?style=for-the-badge&logo=slack&labelColor=6B50D7)](https://www.mage.ai/chat)

<br />

# ๐Ÿ”๏ธ [Core design principles](https://docs.mage.ai/design/core-design-principles)

Every user experience and technical design decision adheres to these principles.

|   |   |   |
| --- | --- | --- |
| ๐Ÿ’ป | [Easy developer experience](https://docs.mage.ai/design/core-design-principles#easy-developer-experience) | Open-source engine that comes with a custom notebook UI for building data pipelines. |
| ๐Ÿšข | [Engineering best practices built-in](https://docs.mage.ai/design/core-design-principles#engineering-best-practices-built-in) | Build and deploy data pipelines using modular code. No more writing throwaway code or trying to turn notebooks into scripts. |
| ๐Ÿ’ณ | [Data is a first-class citizen](https://docs.mage.ai/design/core-design-principles#data-is-a-first-class-citizen) | Designed from the ground up specifically for running data-intensive workflows. |
| ๐Ÿช | [Scaling is made simple](https://docs.mage.ai/design/core-design-principles#scaling-is-made-simple) | Analyze and process large data quickly for rapid iteration. |

<br />

# ๐Ÿ›ธ [Core abstractions](https://docs.mage.ai/design/core-abstractions)

These are the fundamental concepts that Mage uses to operate.

|   |   |
| --- | --- |
| [Project](https://docs.mage.ai/design/core-abstractions#project) | Like a repository on GitHub; this is where you write all your code. |
| [Pipeline](https://docs.mage.ai/design/core-abstractions#pipeline) | Contains references to all the blocks of code you want to run, charts for visualizing data, and organizes the dependency between each block of code. |
| [Block](https://docs.mage.ai/design/core-abstractions#block) | A file with code that can be executed independently or within a pipeline. |
| [Data product](https://docs.mage.ai/design/core-abstractions#data-product) | Every block produces data after it's been executed. These are called data products in Mage. |
| [Trigger](https://docs.mage.ai/design/core-abstractions#trigger) | A set of instructions that determine when or how a pipeline should run. |
| [Run](https://docs.mage.ai/design/core-abstractions#run) | Stores information about when it was started, its status, when it was completed, any runtime variables used in the execution of the pipeline or block, etc. |

<br />

# ๐Ÿ™‹โ€โ™€๏ธ Contributing and developing

Add features and instantly improve the experience for everyone.

Check out the <b>[contributing guide](https://docs.mage.ai/community/contributing)</b>
to set up your development environment and start building.

<br />

# ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Community
Individually, weโ€™re a mage.

> ๐Ÿง™ Mage
>
> Magic is indistinguishable from advanced technology.
> A mage is someone who uses magic (aka advanced technology).
Together, weโ€™re Magers!

> ๐Ÿง™โ€โ™‚๏ธ๐Ÿง™ Magers (`/หˆmฤjษ™r/`)
>
> A group of mages who help each other realize their full potential!
Letโ€™s hang out and chat together โž

[![Hang out on Slack](https://img.shields.io/badge/%20-Hang%20out%20on%20Slack-purple?style=for-the-badge&logo=slack&labelColor=6B50D7)](https://www.mage.ai/chat)

For real-time news, fun memes, data engineering topics, and more, join us on โž

|   |   |
| --- | --- |
| <img alt="Twitter" height="20" src="https://user-images.githubusercontent.com/78053898/198755056-a15c4439-c07f-41ea-ba35-bc4bfdd09f1a.png" /> | [Twitter](https://twitter.com/mage_ai) |
| <img alt="LinkedIn" height="20" src="https://user-images.githubusercontent.com/78053898/198755052-2777d6ae-c161-4a4b-9ece-4fd7bd458e26.png" /> | [LinkedIn](https://www.linkedin.com/company/magetech/mycompany) |
| <img alt="GitHub" height="20" src="https://user-images.githubusercontent.com/78053898/198755053-5c3971b1-9c49-4888-8a8e-1599f0fc6646.png" /> | [GitHub](https://github.com/mage-ai/mage-ai) |
| <img alt="Slack" height="20" src="https://user-images.githubusercontent.com/78053898/198755054-03d47bfc-18b6-45a5-9593-7b496eb927f3.png" /> | [Slack](https://www.mage.ai/chat) |

<br />

# ๐Ÿค” Frequently Asked Questions (FAQs)

Check out our [FAQ page](https://docs.mage.ai/about/frequently-asked-questions) to find answers to some of our most asked questions.

<br />

# ๐Ÿชช License
See the [LICENSE](LICENSE) file for licensing information.

[<img alt="Water mage casting spell" height="300" src="https://github.com/mage-ai/assets/blob/main/mage-water-charging-up.svg?raw=True" />](https://www.mage.ai/)

<br />

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/mage-ai/mage-ai",
    "name": "mage-ai",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": null,
    "author": "Mage",
    "author_email": "eng@mage.ai",
    "download_url": "https://files.pythonhosted.org/packages/56/80/ceb3284ef24f89444723e3a1a1cbbe70836a4f86d9bd87a8aa34691bf542/mage-ai-0.9.69.tar.gz",
    "platform": null,
    "description": "<h1 align=\"center\">\n  <a\n    target=\"_blank\"\n    href=\"https://mage.ai\"\n  >\n    <img\n      align=\"center\"\n      alt=\"Mage\"\n      src=\"https://github.com/mage-ai/assets/blob/main/mascots/mascots-shorter.jpeg?raw=true\"\n      style=\"width:100%;\"\n    />\n  </a>\n</h1>\n<p align=\"center\">\n  \ud83e\uddd9 A modern replacement for Airflow.\n</p>\n\n<p align=\"center\">\n  <a\n    href=\"https://docs.mage.ai\"\n    target=\"_blank\"\n  ><b>Documentation</b></a>&nbsp;&nbsp;&nbsp;\ud83c\udf2a\ufe0f&nbsp;&nbsp;&nbsp;\n  <a\n    href=\"https://youtu.be/GswOdShLGmg\"\n    target=\"_blank\"\n  ><b>Get a 5 min overview</b></a>&nbsp;&nbsp;&nbsp;\ud83c\udf0a&nbsp;&nbsp;&nbsp;\n  <a\n    href=\"https://demo.mage.ai\"\n    target=\"_blank\"\n  ><b>Play with live tool</b></a>&nbsp;&nbsp;&nbsp;\ud83d\udd25&nbsp;&nbsp;&nbsp;\n  <a\n    href=\"https://www.mage.ai/chat\"\n    target=\"_blank\"\n  >\n    <b>Get instant help</b>\n  </a>\n</p>\n<div align=\"center\">\n  <a\n    href=\"https://pypi.org/project/mage-ai/\"\n    target=\"_blank\"\n  >\n    <img alt=\"PyPi\" src=\"https://img.shields.io/pypi/v/mage-ai?color=orange\" />\n  </a>\n  <a\n    href=\"https://anaconda.org/conda-forge/mage-ai\"\n    target=\"_blank\"\n  >\n    <img src=\"https://anaconda.org/conda-forge/mage-ai/badges/version.svg\" />\n  </a>\n  <a\n    href=\"https://opensource.org/licenses/Apache-2.0\"\n    target=\"_blank\"\n  >\n    <img alt=\"License\" src=\"https://img.shields.io/github/license/mage-ai/mage-ai?color=red\" />\n  </a>\n  <a\n    href=\"https://www.mage.ai/chat\"\n    target=\"_blank\"\n  >\n    <img alt=\"Slack\" src=\"https://img.shields.io/badge/Slack-Join%20Slack-blueviolet?logo=slack\" />\n  </a>\n  <a\n    href=\"https://github.com/mage-ai/mage-ai\"\n    target=\"_blank\"\n  >\n    <img alt=\"GitHub Stars\" src=\"https://img.shields.io/github/stars/mage-ai/mage-ai?logo=github\">\n  </a>\n  <a\n    href=\"https://hub.docker.com/r/mageai/mageai\"\n    target=\"_blank\"\n  >\n    <img alt=\"Docker pulls\" src=\"https://img.shields.io/docker/pulls/mageai/mageai.svg\">\n  </a>\n  <a\n    href=\"https://pepy.tech/project/mage-ai\"\n    target=\"_blank\"\n  >\n    <img alt=\"pip installs\" src=\"https://static.pepy.tech/personalized-badge/mage-ai?period=total&units=international_system&left_color=grey&right_color=blue&left_text=pip%20installs\">\n  </a>\n</div>\n<img\n  referrerpolicy=\"no-referrer-when-downgrade\"\n  src=\"https://static.scarf.sh/a.png?x-pxid=b3c96d79-b8f0-414b-a687-8bfc164b4b7a\"\n/>\n\n<div align=\"center\">\n\n### Give your data team `magical` powers\n\n</div>\n\n<p align=\"center\">\n  <b>Integrate</b> and synchronize data from 3rd party sources\n</p>\n\n<p align=\"center\">\n  Build real-time and batch pipelines to <b>transform</b> data using Python, SQL, and R\n</p>\n\n<p align=\"center\">\n  Run, monitor, and <b>orchestrate</b> thousands of pipelines without losing sleep\n</p>\n\n<br />\n\n<p align=\"center\">1\ufe0f\u20e3 \ud83c\udfd7\ufe0f</p>\n<h1 align=\"center\">Build</h1>\n<p align=\"center\">\n  Have you met anyone who said they loved developing in Airflow?\n  <br />\n  That\u2019s why we designed an easy developer experience that you\u2019ll enjoy.\n</p>\n\n|   |   |\n| --- | --- |\n| <b>Easy developer experience</b><br />Start developing locally with a single command or launch a dev environment in your cloud using Terraform.<br /><br/><b>Language of choice</b><br />Write code in Python, SQL, or R in the same data pipeline for ultimate flexibility.<br /><br /><b>Engineering best practices built-in</b><br />Each step in your pipeline is a standalone file containing modular code that\u2019s reusable and testable with data validations. No more DAGs with spaghetti code. | <img src=\"https://github.com/mage-ai/assets/blob/main/overview/mage-build.gif?raw=true\" /> |\n\n<p align=\"center\">\n  \u2193\n</p>\n\n<p align=\"center\">2\ufe0f\u20e3 \ud83d\udd2e</p>\n<h1 align=\"center\">Preview</h1>\n<p align=\"center\">\n  Stop wasting time waiting around for your DAGs to finish testing.\n  <br />\n  Get instant feedback from your code each time you run it.\n</p>\n\n|   |   |\n| --- | --- |\n| <b>Interactive code</b><br />Immediately see results from your code\u2019s output with an interactive notebook UI.<br /><br/><b>Data is a first-class citizen</b><br />Each block of code in your pipeline produces data that can be versioned, partitioned, and cataloged for future use.<br /><br /><b>Collaborate on cloud</b><br />Develop collaboratively on cloud resources, version control with Git, and test pipelines without waiting for an available shared staging environment. | <img src=\"https://github.com/mage-ai/assets/blob/main/overview/mage-preview.gif?raw=True\" /> |\n\n<p align=\"center\">\n  \u2193\n</p>\n\n<p align=\"center\">3\ufe0f\u20e3 \ud83d\ude80</p>\n<h1 align=\"center\">Launch</h1>\n<p align=\"center\">\n  Don\u2019t have a large team dedicated to Airflow?\n  <br />\n  Mage makes it easy for a single developer or small team to scale up and manage thousands of pipelines.\n</p>\n\n|   |   |\n| --- | --- |\n| <b>Fast deploy</b><br />Deploy Mage to AWS, GCP, or Azure with only 2 commands using maintained Terraform templates.<br /><br/><b>Scaling made simple</b><br />Transform very large datasets directly in your data warehouse or through a native integration with Spark.<br /><br /><b>Observability</b><br />Operationalize your pipelines with built-in monitoring, alerting, and observability through an intuitive UI. | <img src=\"https://github.com/mage-ai/assets/blob/main/overview/observability.gif?raw=True\" /> |\n\n<br />\n\n# \ud83e\uddd9 Intro\n\nMage is an open-source data pipeline tool for transforming and integrating data.\n\n1. [Install](#%EF%B8%8F-install)\n1. [Demo](#-demo)\n1. [Tutorials](#-tutorials)\n1. [Documentation](https://docs.mage.ai)\n1. [Features](#-features)\n1. [Core design principles](https://docs.mage.ai/design/core-design-principles)\n1. [Core abstractions](https://docs.mage.ai/design/core-abstractions)\n1. [Contributing](https://docs.mage.ai/community/contributing)\n\n<br />\n\n# \ud83c\udfc3\u200d\u2640\ufe0f Install\n\nThe recommended way to install the latest version of Mage is through Docker with the following command:\n\n```bash\ndocker pull mageai/mageai:latest\n```\n\nYou can also install Mage using pip or conda, though this may cause dependency issues without the proper environment.\n\n```bash\npip install mage-ai\n```\n```bash\nconda install -c conda-forge mage-ai\n```\n\nLooking for help? The _fastest_ way to get started is by checking out our documentation [here](https://docs.mage.ai/getting-started/setup).\n\nLooking for quick examples? Open a [demo](https://demo.mage.ai/) project right in your browser or check out our [guides](https://docs.mage.ai/guides/overview).\n\n# \ud83c\udfae Demo\n\n### Live demo\n\nBuild and run a data pipeline with our <b>[demo app](https://demo.mage.ai/)</b>.\n\n> WARNING\n>\n> The live demo is public to everyone, please don\u2019t save anything sensitive (e.g. passwords, secrets, etc).\n### Demo video (5 min)\n\n[![Mage quick start demo](https://github.com/mage-ai/assets/blob/main/overview/overview-video.png?raw=True)](https://youtu.be/GswOdShLGmg)\n\n<sub><i>Click the image to play video</i></sub>\n\n<br />\n\n# \ud83d\udc69\u200d\ud83c\udfeb Tutorials\n\n- [Load data from API, transform it, and export it to PostgreSQL](https://docs.mage.ai/guides/load-api-data)\n- [Integrate Mage into an existing Airflow project](https://docs.mage.ai/integrations/airflow)\n- [Train model on Titanic dataset](https://docs.mage.ai/guides/train-model)\n- [Set up dbt models and orchestrate dbt runs](https://docs.mage.ai/integrations/dbt-models)\n\n<img alt=\"Fire mage\" height=\"160\" src=\"https://github.com/mage-ai/assets/blob/main/mage-fire-charging-up.svg?raw=True\" />\n\n<br />\n\n# \ud83d\udd2e [Features](https://docs.mage.ai/about/features)\n\n|   |   |   |\n| --- | --- | --- |\n| \ud83c\udfb6 | <b>[Orchestration](https://docs.mage.ai/design/data-pipeline-management)</b> | Schedule and manage data pipelines with observability. |\n| \ud83d\udcd3 | <b>[Notebook](https://docs.mage.ai/about/features#notebook-for-building-data-pipelines)</b> | Interactive Python, SQL, & R editor for coding data pipelines. |\n| \ud83c\udfd7\ufe0f | <b>[Data integrations](https://docs.mage.ai/data-integrations/overview)</b> | Synchronize data from 3rd party sources to your internal destinations. |\n| \ud83d\udeb0 | <b>[Streaming pipelines](https://docs.mage.ai/guides/streaming-pipeline)</b> | Ingest and transform real-time data. |\n| \u274e | <b>[dbt](https://docs.mage.ai/dbt/overview)</b> | Build, run, and manage your dbt models with Mage. |\n\n<b>A sample data pipeline defined across 3 files \u279d</b>\n\n1. Load data \u279d\n    ```python\n    @data_loader\n    def load_csv_from_file():\n        return pd.read_csv('default_repo/titanic.csv')\n    ```\n1. Transform data \u279d\n    ```python\n    @transformer\n    def select_columns_from_df(df, *args):\n        return df[['Age', 'Fare', 'Survived']]\n    ```\n1. Export data \u279d\n    ```python\n    @data_exporter\n    def export_titanic_data_to_disk(df) -> None:\n        df.to_csv('default_repo/titanic_transformed.csv')\n    ```\n\n<b>What the data pipeline looks like in the UI \u279d</b>\n\n<img\n  alt=\"data pipeline overview\"\n  src=\"https://github.com/mage-ai/assets/blob/main/data-pipeline-overview.png?raw=True\"\n/>\n\nNew? We recommend reading about <b>[blocks](https://docs.mage.ai/design/blocks)</b> and\nlearning from a <b>[hands-on tutorial](https://docs.mage.ai/guides/load-api-data)</b>.\n\n[![Ask us questions on Slack](https://img.shields.io/badge/%20-Ask%20us%20questions%20on%20Slack-purple?style=for-the-badge&logo=slack&labelColor=6B50D7)](https://www.mage.ai/chat)\n\n<br />\n\n# \ud83c\udfd4\ufe0f [Core design principles](https://docs.mage.ai/design/core-design-principles)\n\nEvery user experience and technical design decision adheres to these principles.\n\n|   |   |   |\n| --- | --- | --- |\n| \ud83d\udcbb | [Easy developer experience](https://docs.mage.ai/design/core-design-principles#easy-developer-experience) | Open-source engine that comes with a custom notebook UI for building data pipelines. |\n| \ud83d\udea2 | [Engineering best practices built-in](https://docs.mage.ai/design/core-design-principles#engineering-best-practices-built-in) | Build and deploy data pipelines using modular code. No more writing throwaway code or trying to turn notebooks into scripts. |\n| \ud83d\udcb3 | [Data is a first-class citizen](https://docs.mage.ai/design/core-design-principles#data-is-a-first-class-citizen) | Designed from the ground up specifically for running data-intensive workflows. |\n| \ud83e\ude90 | [Scaling is made simple](https://docs.mage.ai/design/core-design-principles#scaling-is-made-simple) | Analyze and process large data quickly for rapid iteration. |\n\n<br />\n\n# \ud83d\udef8 [Core abstractions](https://docs.mage.ai/design/core-abstractions)\n\nThese are the fundamental concepts that Mage uses to operate.\n\n|   |   |\n| --- | --- |\n| [Project](https://docs.mage.ai/design/core-abstractions#project) | Like a repository on GitHub; this is where you write all your code. |\n| [Pipeline](https://docs.mage.ai/design/core-abstractions#pipeline) | Contains references to all the blocks of code you want to run, charts for visualizing data, and organizes the dependency between each block of code. |\n| [Block](https://docs.mage.ai/design/core-abstractions#block) | A file with code that can be executed independently or within a pipeline. |\n| [Data product](https://docs.mage.ai/design/core-abstractions#data-product) | Every block produces data after it's been executed. These are called data products in Mage. |\n| [Trigger](https://docs.mage.ai/design/core-abstractions#trigger) | A set of instructions that determine when or how a pipeline should run. |\n| [Run](https://docs.mage.ai/design/core-abstractions#run) | Stores information about when it was started, its status, when it was completed, any runtime variables used in the execution of the pipeline or block, etc. |\n\n<br />\n\n# \ud83d\ude4b\u200d\u2640\ufe0f Contributing and developing\n\nAdd features and instantly improve the experience for everyone.\n\nCheck out the <b>[contributing guide](https://docs.mage.ai/community/contributing)</b>\nto set up your development environment and start building.\n\n<br />\n\n# \ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66 Community\nIndividually, we\u2019re a mage.\n\n> \ud83e\uddd9 Mage\n>\n> Magic is indistinguishable from advanced technology.\n> A mage is someone who uses magic (aka advanced technology).\nTogether, we\u2019re Magers!\n\n> \ud83e\uddd9\u200d\u2642\ufe0f\ud83e\uddd9 Magers (`/\u02c8m\u0101j\u0259r/`)\n>\n> A group of mages who help each other realize their full potential!\nLet\u2019s hang out and chat together \u279d\n\n[![Hang out on Slack](https://img.shields.io/badge/%20-Hang%20out%20on%20Slack-purple?style=for-the-badge&logo=slack&labelColor=6B50D7)](https://www.mage.ai/chat)\n\nFor real-time news, fun memes, data engineering topics, and more, join us on \u279d\n\n|   |   |\n| --- | --- |\n| <img alt=\"Twitter\" height=\"20\" src=\"https://user-images.githubusercontent.com/78053898/198755056-a15c4439-c07f-41ea-ba35-bc4bfdd09f1a.png\" /> | [Twitter](https://twitter.com/mage_ai) |\n| <img alt=\"LinkedIn\" height=\"20\" src=\"https://user-images.githubusercontent.com/78053898/198755052-2777d6ae-c161-4a4b-9ece-4fd7bd458e26.png\" /> | [LinkedIn](https://www.linkedin.com/company/magetech/mycompany) |\n| <img alt=\"GitHub\" height=\"20\" src=\"https://user-images.githubusercontent.com/78053898/198755053-5c3971b1-9c49-4888-8a8e-1599f0fc6646.png\" /> | [GitHub](https://github.com/mage-ai/mage-ai) |\n| <img alt=\"Slack\" height=\"20\" src=\"https://user-images.githubusercontent.com/78053898/198755054-03d47bfc-18b6-45a5-9593-7b496eb927f3.png\" /> | [Slack](https://www.mage.ai/chat) |\n\n<br />\n\n# \ud83e\udd14 Frequently Asked Questions (FAQs)\n\nCheck out our [FAQ page](https://docs.mage.ai/about/frequently-asked-questions) to find answers to some of our most asked questions.\n\n<br />\n\n# \ud83e\udeaa License\nSee the [LICENSE](LICENSE) file for licensing information.\n\n[<img alt=\"Water mage casting spell\" height=\"300\" src=\"https://github.com/mage-ai/assets/blob/main/mage-water-charging-up.svg?raw=True\" />](https://www.mage.ai/)\n\n<br />\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Mage is a tool for building and deploying data pipelines.",
    "version": "0.9.69",
    "project_urls": {
        "Homepage": "https://github.com/mage-ai/mage-ai"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a213318ad418ba29c93b1a6bca8050b2bea7d07b5bc1a51098bf232e2cedbbcd",
                "md5": "570e6790f49c8afe7f201c537b441277",
                "sha256": "4797c58aac1a1e573cd82cbfe76cbc09a34a52f9c5b857cc26203fc3327ca4e9"
            },
            "downloads": -1,
            "filename": "mage_ai-0.9.69-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "570e6790f49c8afe7f201c537b441277",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 20630975,
            "upload_time": "2024-04-11T09:28:12",
            "upload_time_iso_8601": "2024-04-11T09:28:12.773464Z",
            "url": "https://files.pythonhosted.org/packages/a2/13/318ad418ba29c93b1a6bca8050b2bea7d07b5bc1a51098bf232e2cedbbcd/mage_ai-0.9.69-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5680ceb3284ef24f89444723e3a1a1cbbe70836a4f86d9bd87a8aa34691bf542",
                "md5": "b41b7f34497312ffd4335887c0acca18",
                "sha256": "2ef0c82bf3ebd2cc4edbff677451b2af8eac12d697e3cbd0980ce555947c96e5"
            },
            "downloads": -1,
            "filename": "mage-ai-0.9.69.tar.gz",
            "has_sig": false,
            "md5_digest": "b41b7f34497312ffd4335887c0acca18",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 19239659,
            "upload_time": "2024-04-11T09:28:19",
            "upload_time_iso_8601": "2024-04-11T09:28:19.332545Z",
            "url": "https://files.pythonhosted.org/packages/56/80/ceb3284ef24f89444723e3a1a1cbbe70836a4f86d9bd87a8aa34691bf542/mage-ai-0.9.69.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-11 09:28:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mage-ai",
    "github_project": "mage-ai",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "circle": true,
    "requirements": [
        {
            "name": "Faker",
            "specs": [
                [
                    "==",
                    "4.14.0"
                ]
            ]
        },
        {
            "name": "GitPython",
            "specs": [
                [
                    "==",
                    "3.1.41"
                ]
            ]
        },
        {
            "name": "Jinja2",
            "specs": [
                [
                    "==",
                    "3.1.3"
                ]
            ]
        },
        {
            "name": "PyGithub",
            "specs": [
                [
                    "==",
                    "1.59.0"
                ]
            ]
        },
        {
            "name": "PyJWT",
            "specs": [
                [
                    "==",
                    "2.6.0"
                ]
            ]
        },
        {
            "name": "aiofiles",
            "specs": [
                [
                    "==",
                    "22.1.0"
                ]
            ]
        },
        {
            "name": "alembic",
            "specs": [
                [
                    ">=",
                    "1.7.5"
                ]
            ]
        },
        {
            "name": "bcrypt",
            "specs": [
                [
                    "==",
                    "4.0.1"
                ]
            ]
        },
        {
            "name": "croniter",
            "specs": [
                [
                    "==",
                    "1.3.7"
                ]
            ]
        },
        {
            "name": "cryptography",
            "specs": [
                [
                    "==",
                    "41.0.6"
                ]
            ]
        },
        {
            "name": "dask",
            "specs": [
                [
                    ">=",
                    "2022.2.0"
                ]
            ]
        },
        {
            "name": "datadog",
            "specs": [
                [
                    "==",
                    "0.44.0"
                ]
            ]
        },
        {
            "name": "freezegun",
            "specs": [
                [
                    "==",
                    "1.2.2"
                ]
            ]
        },
        {
            "name": "great-expectations",
            "specs": [
                [
                    "==",
                    "0.18.12"
                ]
            ]
        },
        {
            "name": "httpx",
            "specs": [
                [
                    "==",
                    "0.23.1"
                ]
            ]
        },
        {
            "name": "inflection",
            "specs": [
                [
                    "==",
                    "0.5.1"
                ]
            ]
        },
        {
            "name": "ipykernel",
            "specs": [
                [
                    "==",
                    "6.15.0"
                ]
            ]
        },
        {
            "name": "ipython",
            "specs": [
                [
                    "==",
                    "8.10.0"
                ]
            ]
        },
        {
            "name": "itsdangerous",
            "specs": [
                [
                    "~=",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "joblib",
            "specs": [
                [
                    ">=",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "jupyter-server-proxy",
            "specs": [
                [
                    "==",
                    "3.2.1"
                ]
            ]
        },
        {
            "name": "jupyter-server",
            "specs": [
                [
                    "==",
                    "1.23.5"
                ]
            ]
        },
        {
            "name": "jupyter_client",
            "specs": [
                [
                    "==",
                    "7.4.4"
                ]
            ]
        },
        {
            "name": "ldap3",
            "specs": [
                [
                    "==",
                    "2.9.1"
                ]
            ]
        },
        {
            "name": "newrelic",
            "specs": [
                [
                    "==",
                    "8.8.0"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.22.0"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    ">=",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "polars",
            "specs": [
                [
                    ">=",
                    "0.18.0"
                ],
                [
                    "<",
                    "0.19.2"
                ]
            ]
        },
        {
            "name": "protobuf",
            "specs": [
                [
                    "~=",
                    "4.21.12"
                ]
            ]
        },
        {
            "name": "pyarrow",
            "specs": [
                [
                    "==",
                    "14.0.1"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.8.2"
                ]
            ]
        },
        {
            "name": "pytz",
            "specs": [
                [
                    "==",
                    "2022.2.1"
                ]
            ]
        },
        {
            "name": "pyyaml",
            "specs": [
                [
                    "~=",
                    "6.0"
                ]
            ]
        },
        {
            "name": "redis",
            "specs": [
                [
                    "~=",
                    "5.0.1"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "~=",
                    "2.31.0"
                ]
            ]
        },
        {
            "name": "ruamel.yaml",
            "specs": [
                [
                    "==",
                    "0.17.17"
                ]
            ]
        },
        {
            "name": "scikit-learn",
            "specs": [
                [
                    ">=",
                    "1.0"
                ]
            ]
        },
        {
            "name": "sentry-sdk",
            "specs": [
                [
                    "==",
                    "1.19.1"
                ]
            ]
        },
        {
            "name": "simplejson",
            "specs": []
        },
        {
            "name": "six",
            "specs": [
                [
                    ">=",
                    "1.15.0"
                ]
            ]
        },
        {
            "name": "sqlalchemy",
            "specs": [
                [
                    "<",
                    "2.0.0"
                ],
                [
                    ">=",
                    "1.4.20"
                ]
            ]
        },
        {
            "name": "sqlglot",
            "specs": []
        },
        {
            "name": "terminado",
            "specs": [
                [
                    "==",
                    "0.17.1"
                ]
            ]
        },
        {
            "name": "thefuzz",
            "specs": [
                [
                    "==",
                    "0.19.0"
                ]
            ]
        },
        {
            "name": "tornado",
            "specs": [
                [
                    "==",
                    "6.3.3"
                ]
            ]
        },
        {
            "name": "typer",
            "specs": [
                [
                    "==",
                    "0.9.0"
                ]
            ]
        },
        {
            "name": "typing_extensions",
            "specs": [
                [
                    "==",
                    "4.10.0"
                ]
            ]
        },
        {
            "name": "watchdog",
            "specs": [
                [
                    "==",
                    "4.0.0"
                ]
            ]
        },
        {
            "name": "astor",
            "specs": [
                [
                    ">=",
                    "0.8.1"
                ]
            ]
        },
        {
            "name": "aws-secretsmanager-caching",
            "specs": [
                [
                    "==",
                    "1.1.1.5"
                ]
            ]
        },
        {
            "name": "boto3",
            "specs": [
                [
                    "==",
                    "1.26.60"
                ]
            ]
        },
        {
            "name": "botocore",
            "specs": [
                [
                    "==",
                    "1.29.60"
                ]
            ]
        },
        {
            "name": "clickhouse-connect",
            "specs": [
                [
                    "~=",
                    "0.6.23"
                ]
            ]
        },
        {
            "name": "db-dtypes",
            "specs": [
                [
                    "==",
                    "1.0.5"
                ]
            ]
        },
        {
            "name": "duckdb",
            "specs": [
                [
                    "==",
                    "0.9.2"
                ]
            ]
        },
        {
            "name": "google-api-core",
            "specs": [
                [
                    "~=",
                    "2.15.0"
                ]
            ]
        },
        {
            "name": "google-api-python-client",
            "specs": [
                [
                    "~=",
                    "2.70.0"
                ]
            ]
        },
        {
            "name": "google-cloud-bigquery",
            "specs": [
                [
                    "~=",
                    "3.14.1"
                ]
            ]
        },
        {
            "name": "google-cloud-iam",
            "specs": [
                [
                    "~=",
                    "2.13.0"
                ]
            ]
        },
        {
            "name": "google-cloud-pubsub",
            "specs": [
                [
                    "~=",
                    "2.19.0"
                ]
            ]
        },
        {
            "name": "google-cloud-run",
            "specs": [
                [
                    "~=",
                    "0.10.1"
                ]
            ]
        },
        {
            "name": "google-cloud-storage",
            "specs": [
                [
                    "~=",
                    "2.5.0"
                ]
            ]
        },
        {
            "name": "gspread",
            "specs": [
                [
                    "==",
                    "5.7.2"
                ]
            ]
        },
        {
            "name": "kubernetes",
            "specs": [
                [
                    ">=",
                    "28.1.0"
                ]
            ]
        },
        {
            "name": "langchain",
            "specs": [
                [
                    "==",
                    "0.1.6"
                ]
            ]
        },
        {
            "name": "langchain_community",
            "specs": [
                [
                    "<",
                    "0.0.20"
                ]
            ]
        },
        {
            "name": "mysql-connector-python",
            "specs": [
                [
                    "~=",
                    "8.2.0"
                ]
            ]
        },
        {
            "name": "openai",
            "specs": [
                [
                    "<",
                    "1.0.0"
                ],
                [
                    ">=",
                    "0.27.8"
                ]
            ]
        },
        {
            "name": "opentelemetry-api",
            "specs": [
                [
                    "==",
                    "1.22.0"
                ]
            ]
        },
        {
            "name": "opentelemetry-exporter-prometheus",
            "specs": [
                [
                    "==",
                    "0.43b0"
                ]
            ]
        },
        {
            "name": "opentelemetry-instrumentation-tornado",
            "specs": [
                [
                    "==",
                    "0.43b0"
                ]
            ]
        },
        {
            "name": "opentelemetry-exporter-otlp",
            "specs": [
                [
                    "==",
                    "1.22.0"
                ]
            ]
        },
        {
            "name": "opentelemetry-instrumentation-sqlalchemy",
            "specs": [
                [
                    "==",
                    "0.43b0"
                ]
            ]
        },
        {
            "name": "oracledb",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "pinotdb",
            "specs": [
                [
                    "==",
                    "5.1.0"
                ]
            ]
        },
        {
            "name": "prometheus_client",
            "specs": [
                [
                    ">=",
                    "0.18.0"
                ]
            ]
        },
        {
            "name": "psycopg2",
            "specs": [
                [
                    "==",
                    "2.9.3"
                ]
            ]
        },
        {
            "name": "psycopg2-binary",
            "specs": [
                [
                    "==",
                    "2.9.3"
                ]
            ]
        },
        {
            "name": "pydruid",
            "specs": [
                [
                    "==",
                    "0.6.5"
                ]
            ]
        },
        {
            "name": "pyodbc",
            "specs": [
                [
                    "==",
                    "4.0.35"
                ]
            ]
        },
        {
            "name": "redshift-connector",
            "specs": [
                [
                    "==",
                    "2.0.915"
                ]
            ]
        },
        {
            "name": "lxml",
            "specs": [
                [
                    "==",
                    "4.9.4"
                ]
            ]
        },
        {
            "name": "snowflake-connector-python",
            "specs": [
                [
                    "==",
                    "3.5.0"
                ]
            ]
        },
        {
            "name": "sshtunnel",
            "specs": [
                [
                    "==",
                    "0.4.0"
                ]
            ]
        },
        {
            "name": "tables",
            "specs": [
                [
                    "==",
                    "3.7.0"
                ]
            ]
        },
        {
            "name": "trino",
            "specs": [
                [
                    "~=",
                    "0.326"
                ]
            ]
        },
        {
            "name": "azure-eventhub",
            "specs": [
                [
                    "==",
                    "5.11.2"
                ]
            ]
        },
        {
            "name": "azure-identity",
            "specs": [
                [
                    "==",
                    "1.12.0"
                ]
            ]
        },
        {
            "name": "azure-keyvault-secrets",
            "specs": [
                [
                    "==",
                    "4.6.0"
                ]
            ]
        },
        {
            "name": "azure-keyvault-certificates",
            "specs": [
                [
                    "==",
                    "4.6.0"
                ]
            ]
        },
        {
            "name": "azure-mgmt-containerinstance",
            "specs": [
                [
                    "==",
                    "10.1.0"
                ]
            ]
        },
        {
            "name": "azure-storage-blob",
            "specs": [
                [
                    "==",
                    "12.14.1"
                ]
            ]
        },
        {
            "name": "confluent-avro",
            "specs": [
                [
                    "~=",
                    "1.8.0"
                ]
            ]
        },
        {
            "name": "elasticsearch",
            "specs": [
                [
                    "==",
                    "8.9.0"
                ]
            ]
        },
        {
            "name": "influxdb_client",
            "specs": [
                [
                    "==",
                    "1.36.1"
                ]
            ]
        },
        {
            "name": "kafka-python",
            "specs": [
                [
                    "==",
                    "2.0.2"
                ]
            ]
        },
        {
            "name": "nats-py",
            "specs": [
                [
                    "==",
                    "2.6.0"
                ]
            ]
        },
        {
            "name": "nkeys",
            "specs": [
                [
                    "~=",
                    "0.1.0"
                ]
            ]
        },
        {
            "name": "opensearch-py",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "pika",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "pymongo",
            "specs": [
                [
                    "==",
                    "4.3.3"
                ]
            ]
        },
        {
            "name": "requests_aws4auth",
            "specs": [
                [
                    "==",
                    "1.1.2"
                ]
            ]
        },
        {
            "name": "stomp.py",
            "specs": [
                [
                    "==",
                    "8.1.0"
                ]
            ]
        },
        {
            "name": "dbt-bigquery",
            "specs": [
                [
                    "==",
                    "1.7.2"
                ]
            ]
        },
        {
            "name": "dbt-clickhouse",
            "specs": [
                [
                    "==",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "dbt-core",
            "specs": [
                [
                    "==",
                    "1.7.4"
                ]
            ]
        },
        {
            "name": "dbt-duckdb",
            "specs": [
                [
                    "==",
                    "1.7.0"
                ]
            ]
        },
        {
            "name": "dbt-postgres",
            "specs": [
                [
                    "==",
                    "1.7.4"
                ]
            ]
        },
        {
            "name": "dbt-redshift",
            "specs": [
                [
                    "==",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "dbt-snowflake",
            "specs": [
                [
                    "==",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "dbt-spark",
            "specs": [
                [
                    "==",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "dbt-sqlserver",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "dbt-trino",
            "specs": [
                [
                    "==",
                    "1.7.1"
                ]
            ]
        },
        {
            "name": "attrs",
            "specs": [
                [
                    "==",
                    "17.4.0"
                ]
            ]
        },
        {
            "name": "backoff",
            "specs": []
        },
        {
            "name": "clickhouse_sqlalchemy",
            "specs": []
        },
        {
            "name": "deltalake",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "facebook_business",
            "specs": [
                [
                    "==",
                    "17.0.2"
                ]
            ]
        },
        {
            "name": "gnupg",
            "specs": [
                [
                    "==",
                    "2.3.1"
                ]
            ]
        },
        {
            "name": "google-analytics-data",
            "specs": [
                [
                    "==",
                    "0.14.2"
                ]
            ]
        },
        {
            "name": "google-cloud-bigquery-storage",
            "specs": [
                [
                    "==",
                    "2.16.2"
                ]
            ]
        },
        {
            "name": "httpx",
            "specs": []
        },
        {
            "name": "pendulum",
            "specs": [
                [
                    "==",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "pymongo_schema",
            "specs": [
                [
                    "==",
                    "0.4.1"
                ]
            ]
        },
        {
            "name": "python-magic",
            "specs": [
                [
                    "==",
                    "0.4.27"
                ]
            ]
        },
        {
            "name": "redshift-connector",
            "specs": [
                [
                    "~=",
                    "2.0.915"
                ]
            ]
        },
        {
            "name": "requests_mock",
            "specs": [
                [
                    "==",
                    "1.10.0"
                ]
            ]
        },
        {
            "name": "simple_salesforce",
            "specs": [
                [
                    "~=",
                    "1.12.5"
                ]
            ]
        },
        {
            "name": "singer_sdk",
            "specs": [
                [
                    "~=",
                    "0.34.1"
                ]
            ]
        },
        {
            "name": "stripe",
            "specs": [
                [
                    "==",
                    "5.5.0"
                ]
            ]
        },
        {
            "name": "terminaltables",
            "specs": [
                [
                    "==",
                    "3.1.10"
                ]
            ]
        },
        {
            "name": "twitter-ads",
            "specs": [
                [
                    "==",
                    "11.0.0"
                ]
            ]
        },
        {
            "name": "tzlocal",
            "specs": [
                [
                    "==",
                    "4.2"
                ]
            ]
        },
        {
            "name": "xlsx2csv",
            "specs": [
                [
                    "==",
                    "0.8.1"
                ]
            ]
        },
        {
            "name": "xmltodict",
            "specs": [
                [
                    "==",
                    "0.13.0"
                ]
            ]
        },
        {
            "name": "zenpy",
            "specs": [
                [
                    "==",
                    "2.0.25"
                ]
            ]
        }
    ],
    "lcname": "mage-ai"
}
        
Elapsed time: 0.27656s