plutus-terminal


Nameplutus-terminal JSON
Version 0.1.0b2 PyPI version JSON
download
home_pagehttps://github.com/plutus-terminal/plutus-terminal
SummaryPlutus Terminal is a powerful open-source crypto news trading terminal with the focus on Perpetuals DEX.
upload_time2024-10-04 20:55:57
maintainerNone
docs_urlNone
authorPlutus
requires_python<3.13,>=3.12
licenseGPL-3.0-or-later
keywords plutus terminal crypto trading trading-bot perpetuals dex
VCS
bugtrack_url
requirements aiohappyeyeballs aiohttp aiosignal anyascii anyio attrs bitarray bottle certifi cffi charset-normalizer ckzg clr-loader cryptography cytoolz eth-abi eth-account eth-hash eth-hash eth-keyfile eth-keys eth-rlp eth-typing eth-utils frozenlist google-re2 h11 hexbytes httpcore httpx idna jaraco-classes jeepney jsonschema-specifications jsonschema keyring lightweight-charts lru-dict more-itertools multidict numpy orjson packaging pandas parsimonious peewee protobuf proxy-tools pyahocorasick pycparser pycryptodome pyobjc-core pyobjc-framework-cocoa pyobjc-framework-quartz pyobjc-framework-security pyobjc-framework-webkit pyside6-addons pyside6-essentials pyside6 python-dateutil pythonnet pytz pyunormalize pywebview pywin32-ctypes pywin32 qasync qtpy referencing regex requests rlp rpds-py secretstorage setproctitle shiboken6 six sniffio tenacity textsearch toolz typing-extensions tzdata urllib3 web3 websockets yarl
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">

![Made with Python](https://img.shields.io/badge/python-3.12-yellow?style=flat&logo=python&logoColor=white&link=https%3A%2F%2Fplutuss-organization.gitbook.io%2Fdocumentation)
![License](https://img.shields.io/badge/license-GPLv3-red?style=flat&link=https%3A%2F%2Fplutuss-organization.gitbook.io%2Fdocumentation)
[![Docuemntation](https://img.shields.io/badge/documentation-blue?style=flat)](https://plutuss-organization.gitbook.io/documentation/)


<img src="./assets/plutus_icon_full.png" height="400px" alt="Plutus Terminal Splash Screen"/>

# Plutus Terminal
</div>

## What is Plutus Terminal? 🌟

<p align="center">
    <img src="./assets/plutus_splash.gif" alt="Plutus Terminal Splash Screen"/>
</p>

Plutus Terminal is a powerful **open-source** crypto news trading terminal
focused on Perpetuals DEX. Designed to be user-friendly, it allows you to trade
using real-time news updates, control positions, and manage multiple DEXs.

Embracing the web3 mentality, Plutus Terminal ensures you are always in control
of your keys, handles everything locally, and interacts directly with the DEX
contracts.

## Features 🎯

- 💻 Runs locally on your computer
- 🌐 Cross-platform (Windows, Linux, MacOS)
- 🔄 Integrates TreeOfAlpha and PhoenixNews
- 🛠️ Highly customizable news filters
- 🔔 Never miss news with desktop notifications
- 💎 Open-source and free
- 🌍 Use your own RPC nodes

## ⚠️  Disclaimer

Plutus Terminal is in **alpha** version and it's more likely to break. It
trades on the Perpetuals DEX using real money. Do not risk money you cannot
afford to lose.

**PLUTUS TERMINAL IS PROVIDED "AS IS". USE THE SOFTWARE AT YOUR OWN RISK**. The
authors and all affiliates assume no responsibility for your trading results or
any other consequences arising from the use of this tool. The entire risk as to
the quality and performance of the program is with you. Should the program
prove defective, you assume the cost of all necessary servicing, repair, or
correction.

By using Plutus Terminal, you acknowledge and agree that:

* You understand the risks involved in trading cryptocurrencies.
* You will not hold the authors or affiliates liable for any financial losses, data breaches, or other damages.
* You have read and understood the source code before using the tool.
* Positions opened with Plutus Terminal will automatically use our referral codes when possible.

Plutus Terminal is for educational and informational purposes only and does not constitute financial advice.

## 🛠️  Installation

Plutus Terminal is a Python package with multiple dependencies. You can install
it by downloading the PyApp executable, using pipx, or building it with Poetry.

> [!WARNING]
> The following instructions will show how to install Plutus Terminal unstable version!
> Unstable version is more likely to break.

<details>
<summary>
<strong>Installation using <code>PyApp executable</code>:</strong>
</summary>

### PyApp

#### To install

Download the plutus-terminal executable from the [Releases page](https://github.com/plutus-terminal/plutus-terminal/releases) and run it directly.

#### To update

From the terminal run:

```bash
<plutus_terminal_executable> self update
```

#### To uninstall

```bash
<plutus_terminal_executable> self remove
```

> [!NOTE]
> To learn more about PyApp, check out the [PyApp documentation](https://ofek.dev/pyapp/latest/)

<br>
</details>
<br>

<details>
<summary>
<strong>Installation using <code>pipx</code>:</strong>
</summary>

<br>

### Pipx

#### To install

```bash
pipx install git+https://github.com/plutus-terminal/plutus-terminal.git@unstable
```

Run with:

```bash
plutus-terminal
```

#### To update

```bash
pipx upgrade plutus-terminal
```

</details>
<br>

<details>
<summary>
<strong>Installation using <code>Poetry</code>:</strong>
</summary>
<br>

### Poetry

#### To install

First, clone the repository:

```bash
git clone https://github.com/plutus-terminal/plutus-terminal.git
```

Navigate to the cloned repository:

```bash
cd plutus-terminal
```

Checkout the `unstable` branch:

```bash
git checkout unstable
```

Then, install the package:

```bash
poetry install
```

Run the tool with:

```bash
poetry run plutus-terminal
```
#### To update

```bash
git pull
poetry update
```

</details>

## 🚀 Quick Start

Bellow you will find a simple guide on how to get started with Plutus Terminal.
For a more complete documentation please refer to the
[documentation](https://plutuss-organization.gitbook.io/documentation)

### Create new account

When opening the terminal the first time, you will be prompted to create an account.
<details>
<summary>
See image...
</summary>
<div align="center">
<img src="./assets/create_new_acc.png" alt="Create Account"/>
</div>
<br>
> [!NOTE]
> The same private key can be used to create multiple accounts on different
> exchanges.
</details>
<br>

Fill the form with the required information and press `Create New Account`.

> [!CAUTION]
> The private key will be stored in the OS keyring, always ensure
> your OS is secure.

### News quick market buy

Once the account is created you should see the terminal opening after a couple
of seconds.

News will be presented in real-time under the `News Feed` widget, if the coins
associated with the news are available on the selected exchange you will see a
quick trade group appear on the news.

<details>
<summary>
See image...
</summary>
<br>
<div align="center">
<img src="./assets/news_example.png" alt="News with quick buy trades."/>
</div>
</details>
<br>

> [!NOTE]
> `Quick Market Buy` values represent the amount of capital that will be used
> to open your position. This value get's multiplied by the current pair
> leverage to determine the size of the position.

### Auto TP/SL

Quick Market buys can be configured with `TP` and `SL` values. For that you
will need to open the configuration window by pressing the gear icon on the top
right corner.

Once the window is open, you can set the `TP` and `SL` values on the `Trade` tab.

<details>
<summary>
See image...
</summary>
<br>
<div align="center">
<img src="./assets/auto_tp_sl_config.gif" alt="Auto TP/SL"/>
</div>
</details>
<br>

> [!NOTE]
> Each account have their own `TP` and `SL` values

### News Filters

You can configure the news filters by clicking on the `Filters` tab in the
configuration window.

There are 2 types of filters `Keyword Matching` and `Data Matching`. Both of
them allow actions to happen when the conditions are meet.

Posible actions are:

| Action            | Description                  |
| ----------------- | ---------------------------- |
| Sound Association | Play a specific sound        |
| Coin Association  | Associate a coin to the news |
| Ignore News       | Don't display the news       |

#### Keyword Matching

The `Keyword Matching` filter allows you to filter specific keywords in the
news body if the keyword is present the selected action will run on the news.

<details>
<summary>
Example
</summary>
<br>
<div align="center">
<img src="./assets/keyword_matching.png" alt="Keyword Matching"/>
</div>
This filter will play the `pause` sound if the word `Foxify` is present in the
news body and it will color that word dark pink.
</details>


#### Data Matching

The `Data Matching` filter allows you to filter for word on specific data
fields if the word is present in the specified datafield then the selected
action will run on the news.

<details>
<summary>
Example
</summary>
<br>
<div align="center">
<img src="./assets/data_matching.png" alt="Data Matching"/>
</div>
This filter will play the `powerup` sound if the title of the news is `Tree News (@News_Of_Alpha)`
</details>
<br>


> [!NOTE]
> Filters will only be saved if the `Save Filters` button is pressed and
> will only be applied after a restart.

#### Hotkey Shortcuts

| Hotkey             | Action                                                         |
| ------------------ | -------------------------------------------------------------  |
| `w`                | Move selected new 1 up                                         |
| `s`                | Move selected new 1 down                                       |
| `q`                | Move selected to the top                                       |
| `\`                | Open token modal search                                        |
| `Ctrl+j` or `UP`   | (Only on modal search) Move modal auto complete selection down |
| `Ctrl+k` or `DOWN` | (Only on modal search) Move modal auto complete selection down |



## 🌐 Exchanges

Current supported exchanges are:

* <img src="./assets/foxify.svg" height="25px" alt="Foxify Logo"/> [Foxify](https://perp.foxify.trade/#/trade/?ref=plutus_terminal)

Planned support:

* <img src="./assets/foxify.svg" height="25px" alt="Foxify Logo"/> [Foxify FUNDED](https://foxify-1.gitbook.io/foxify-funded-litepaper)
* <img src="./assets/gmx.svg" height="25px" alt="Foxify Logo"/> [GMX](https://app.gmx.io/#/trade/?ref=plutus_terminal)

## ❤️  Support

If this project was helpful, please consider supporting by:

* ⭐[Starring the project on GitHub](https://github.com/plutus-terminal/plutus-terminal)
* Use referral code `plutus_terminal`
* Make a donation:
    * EVM ADDRESS: 0x92E3E69597A81c9D8F131FD590E8028aD16d1155

Every bit helps. Thank you!

## 📜 License

Plutus Terminal is licensed under the `GNU General Public License version 3.0`

See [LICENSE](./LICENSE) for details.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/plutus-terminal/plutus-terminal",
    "name": "plutus-terminal",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.12",
    "maintainer_email": null,
    "keywords": "plutus, terminal, crypto, trading, trading-bot, perpetuals, dex",
    "author": "Plutus",
    "author_email": "plutus-terminal@protonmail.com",
    "download_url": "https://files.pythonhosted.org/packages/32/48/cac0170b2e97b2d60fc777db7d26b64662cf495299ce49b3722e62d1b542/plutus_terminal-0.1.0b2.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n\n![Made with Python](https://img.shields.io/badge/python-3.12-yellow?style=flat&logo=python&logoColor=white&link=https%3A%2F%2Fplutuss-organization.gitbook.io%2Fdocumentation)\n![License](https://img.shields.io/badge/license-GPLv3-red?style=flat&link=https%3A%2F%2Fplutuss-organization.gitbook.io%2Fdocumentation)\n[![Docuemntation](https://img.shields.io/badge/documentation-blue?style=flat)](https://plutuss-organization.gitbook.io/documentation/)\n\n\n<img src=\"./assets/plutus_icon_full.png\" height=\"400px\" alt=\"Plutus Terminal Splash Screen\"/>\n\n# Plutus Terminal\n</div>\n\n## What is Plutus Terminal? \ud83c\udf1f\n\n<p align=\"center\">\n    <img src=\"./assets/plutus_splash.gif\" alt=\"Plutus Terminal Splash Screen\"/>\n</p>\n\nPlutus Terminal is a powerful **open-source** crypto news trading terminal\nfocused on Perpetuals DEX. Designed to be user-friendly, it allows you to trade\nusing real-time news updates, control positions, and manage multiple DEXs.\n\nEmbracing the web3 mentality, Plutus Terminal ensures you are always in control\nof your keys, handles everything locally, and interacts directly with the DEX\ncontracts.\n\n## Features \ud83c\udfaf\n\n- \ud83d\udcbb Runs locally on your computer\n- \ud83c\udf10 Cross-platform (Windows, Linux, MacOS)\n- \ud83d\udd04 Integrates TreeOfAlpha and PhoenixNews\n- \ud83d\udee0\ufe0f Highly customizable news filters\n- \ud83d\udd14 Never miss news with desktop notifications\n- \ud83d\udc8e Open-source and free\n- \ud83c\udf0d Use your own RPC nodes\n\n## \u26a0\ufe0f  Disclaimer\n\nPlutus Terminal is in **alpha** version and it's more likely to break. It\ntrades on the Perpetuals DEX using real money. Do not risk money you cannot\nafford to lose.\n\n**PLUTUS TERMINAL IS PROVIDED \"AS IS\". USE THE SOFTWARE AT YOUR OWN RISK**. The\nauthors and all affiliates assume no responsibility for your trading results or\nany other consequences arising from the use of this tool. The entire risk as to\nthe quality and performance of the program is with you. Should the program\nprove defective, you assume the cost of all necessary servicing, repair, or\ncorrection.\n\nBy using Plutus Terminal, you acknowledge and agree that:\n\n* You understand the risks involved in trading cryptocurrencies.\n* You will not hold the authors or affiliates liable for any financial losses, data breaches, or other damages.\n* You have read and understood the source code before using the tool.\n* Positions opened with Plutus Terminal will automatically use our referral codes when possible.\n\nPlutus Terminal is for educational and informational purposes only and does not constitute financial advice.\n\n## \ud83d\udee0\ufe0f  Installation\n\nPlutus Terminal is a Python package with multiple dependencies. You can install\nit by downloading the PyApp executable, using pipx, or building it with Poetry.\n\n> [!WARNING]\n> The following instructions will show how to install Plutus Terminal unstable version!\n> Unstable version is more likely to break.\n\n<details>\n<summary>\n<strong>Installation using <code>PyApp executable</code>:</strong>\n</summary>\n\n### PyApp\n\n#### To install\n\nDownload the plutus-terminal executable from the [Releases page](https://github.com/plutus-terminal/plutus-terminal/releases) and run it directly.\n\n#### To update\n\nFrom the terminal run:\n\n```bash\n<plutus_terminal_executable> self update\n```\n\n#### To uninstall\n\n```bash\n<plutus_terminal_executable> self remove\n```\n\n> [!NOTE]\n> To learn more about PyApp, check out the [PyApp documentation](https://ofek.dev/pyapp/latest/)\n\n<br>\n</details>\n<br>\n\n<details>\n<summary>\n<strong>Installation using <code>pipx</code>:</strong>\n</summary>\n\n<br>\n\n### Pipx\n\n#### To install\n\n```bash\npipx install git+https://github.com/plutus-terminal/plutus-terminal.git@unstable\n```\n\nRun with:\n\n```bash\nplutus-terminal\n```\n\n#### To update\n\n```bash\npipx upgrade plutus-terminal\n```\n\n</details>\n<br>\n\n<details>\n<summary>\n<strong>Installation using <code>Poetry</code>:</strong>\n</summary>\n<br>\n\n### Poetry\n\n#### To install\n\nFirst, clone the repository:\n\n```bash\ngit clone https://github.com/plutus-terminal/plutus-terminal.git\n```\n\nNavigate to the cloned repository:\n\n```bash\ncd plutus-terminal\n```\n\nCheckout the `unstable` branch:\n\n```bash\ngit checkout unstable\n```\n\nThen, install the package:\n\n```bash\npoetry install\n```\n\nRun the tool with:\n\n```bash\npoetry run plutus-terminal\n```\n#### To update\n\n```bash\ngit pull\npoetry update\n```\n\n</details>\n\n## \ud83d\ude80 Quick Start\n\nBellow you will find a simple guide on how to get started with Plutus Terminal.\nFor a more complete documentation please refer to the\n[documentation](https://plutuss-organization.gitbook.io/documentation)\n\n### Create new account\n\nWhen opening the terminal the first time, you will be prompted to create an account.\n<details>\n<summary>\nSee image...\n</summary>\n<div align=\"center\">\n<img src=\"./assets/create_new_acc.png\" alt=\"Create Account\"/>\n</div>\n<br>\n> [!NOTE]\n> The same private key can be used to create multiple accounts on different\n> exchanges.\n</details>\n<br>\n\nFill the form with the required information and press `Create New Account`.\n\n> [!CAUTION]\n> The private key will be stored in the OS keyring, always ensure\n> your OS is secure.\n\n### News quick market buy\n\nOnce the account is created you should see the terminal opening after a couple\nof seconds.\n\nNews will be presented in real-time under the `News Feed` widget, if the coins\nassociated with the news are available on the selected exchange you will see a\nquick trade group appear on the news.\n\n<details>\n<summary>\nSee image...\n</summary>\n<br>\n<div align=\"center\">\n<img src=\"./assets/news_example.png\" alt=\"News with quick buy trades.\"/>\n</div>\n</details>\n<br>\n\n> [!NOTE]\n> `Quick Market Buy` values represent the amount of capital that will be used\n> to open your position. This value get's multiplied by the current pair\n> leverage to determine the size of the position.\n\n### Auto TP/SL\n\nQuick Market buys can be configured with `TP` and `SL` values. For that you\nwill need to open the configuration window by pressing the gear icon on the top\nright corner.\n\nOnce the window is open, you can set the `TP` and `SL` values on the `Trade` tab.\n\n<details>\n<summary>\nSee image...\n</summary>\n<br>\n<div align=\"center\">\n<img src=\"./assets/auto_tp_sl_config.gif\" alt=\"Auto TP/SL\"/>\n</div>\n</details>\n<br>\n\n> [!NOTE]\n> Each account have their own `TP` and `SL` values\n\n### News Filters\n\nYou can configure the news filters by clicking on the `Filters` tab in the\nconfiguration window.\n\nThere are 2 types of filters `Keyword Matching` and `Data Matching`. Both of\nthem allow actions to happen when the conditions are meet.\n\nPosible actions are:\n\n| Action            | Description                  |\n| ----------------- | ---------------------------- |\n| Sound Association | Play a specific sound        |\n| Coin Association  | Associate a coin to the news |\n| Ignore News       | Don't display the news       |\n\n#### Keyword Matching\n\nThe `Keyword Matching` filter allows you to filter specific keywords in the\nnews body if the keyword is present the selected action will run on the news.\n\n<details>\n<summary>\nExample\n</summary>\n<br>\n<div align=\"center\">\n<img src=\"./assets/keyword_matching.png\" alt=\"Keyword Matching\"/>\n</div>\nThis filter will play the `pause` sound if the word `Foxify` is present in the\nnews body and it will color that word dark pink.\n</details>\n\n\n#### Data Matching\n\nThe `Data Matching` filter allows you to filter for word on specific data\nfields if the word is present in the specified datafield then the selected\naction will run on the news.\n\n<details>\n<summary>\nExample\n</summary>\n<br>\n<div align=\"center\">\n<img src=\"./assets/data_matching.png\" alt=\"Data Matching\"/>\n</div>\nThis filter will play the `powerup` sound if the title of the news is `Tree News (@News_Of_Alpha)`\n</details>\n<br>\n\n\n> [!NOTE]\n> Filters will only be saved if the `Save Filters` button is pressed and\n> will only be applied after a restart.\n\n#### Hotkey Shortcuts\n\n| Hotkey             | Action                                                         |\n| ------------------ | -------------------------------------------------------------  |\n| `w`                | Move selected new 1 up                                         |\n| `s`                | Move selected new 1 down                                       |\n| `q`                | Move selected to the top                                       |\n| `\\`                | Open token modal search                                        |\n| `Ctrl+j` or `UP`   | (Only on modal search) Move modal auto complete selection down |\n| `Ctrl+k` or `DOWN` | (Only on modal search) Move modal auto complete selection down |\n\n\n\n## \ud83c\udf10 Exchanges\n\nCurrent supported exchanges are:\n\n* <img src=\"./assets/foxify.svg\" height=\"25px\" alt=\"Foxify Logo\"/> [Foxify](https://perp.foxify.trade/#/trade/?ref=plutus_terminal)\n\nPlanned support:\n\n* <img src=\"./assets/foxify.svg\" height=\"25px\" alt=\"Foxify Logo\"/> [Foxify FUNDED](https://foxify-1.gitbook.io/foxify-funded-litepaper)\n* <img src=\"./assets/gmx.svg\" height=\"25px\" alt=\"Foxify Logo\"/> [GMX](https://app.gmx.io/#/trade/?ref=plutus_terminal)\n\n## \u2764\ufe0f  Support\n\nIf this project was helpful, please consider supporting by:\n\n* \u2b50[Starring the project on GitHub](https://github.com/plutus-terminal/plutus-terminal)\n* Use referral code `plutus_terminal`\n* Make a donation:\n    * EVM ADDRESS: 0x92E3E69597A81c9D8F131FD590E8028aD16d1155\n\nEvery bit helps. Thank you!\n\n## \ud83d\udcdc License\n\nPlutus Terminal is licensed under the `GNU General Public License version 3.0`\n\nSee [LICENSE](./LICENSE) for details.\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "Plutus Terminal is a powerful open-source crypto news trading terminal with the focus on Perpetuals DEX.",
    "version": "0.1.0b2",
    "project_urls": {
        "Homepage": "https://github.com/plutus-terminal/plutus-terminal",
        "Repository": "https://github.com/plutus-terminal/plutus-terminal"
    },
    "split_keywords": [
        "plutus",
        " terminal",
        " crypto",
        " trading",
        " trading-bot",
        " perpetuals",
        " dex"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fd406fc59fb5e7f127fb44233fc352121d5114d59358b17642e446ce08762023",
                "md5": "359e97351b510094bb9cd5c9acf89f08",
                "sha256": "75b1340516825155bcff3df5aa00cc1da26f90d01c5742fe9df3bc75c8bdede9"
            },
            "downloads": -1,
            "filename": "plutus_terminal-0.1.0b2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "359e97351b510094bb9cd5c9acf89f08",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.12",
            "size": 6642506,
            "upload_time": "2024-10-04T20:55:55",
            "upload_time_iso_8601": "2024-10-04T20:55:55.401701Z",
            "url": "https://files.pythonhosted.org/packages/fd/40/6fc59fb5e7f127fb44233fc352121d5114d59358b17642e446ce08762023/plutus_terminal-0.1.0b2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3248cac0170b2e97b2d60fc777db7d26b64662cf495299ce49b3722e62d1b542",
                "md5": "00241c856f2d5e4f98183c4374b7968f",
                "sha256": "df34861a6b17f93d7e3653952d660dcb55dec3e9b5d2425c1d9094b6347861e3"
            },
            "downloads": -1,
            "filename": "plutus_terminal-0.1.0b2.tar.gz",
            "has_sig": false,
            "md5_digest": "00241c856f2d5e4f98183c4374b7968f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.12",
            "size": 6536796,
            "upload_time": "2024-10-04T20:55:57",
            "upload_time_iso_8601": "2024-10-04T20:55:57.493582Z",
            "url": "https://files.pythonhosted.org/packages/32/48/cac0170b2e97b2d60fc777db7d26b64662cf495299ce49b3722e62d1b542/plutus_terminal-0.1.0b2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-04 20:55:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "plutus-terminal",
    "github_project": "plutus-terminal",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "aiohappyeyeballs",
            "specs": [
                [
                    "==",
                    "2.4.3"
                ]
            ]
        },
        {
            "name": "aiohttp",
            "specs": [
                [
                    "==",
                    "3.10.9"
                ]
            ]
        },
        {
            "name": "aiosignal",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "anyascii",
            "specs": [
                [
                    "==",
                    "0.3.2"
                ]
            ]
        },
        {
            "name": "anyio",
            "specs": [
                [
                    "==",
                    "4.6.0"
                ]
            ]
        },
        {
            "name": "attrs",
            "specs": [
                [
                    "==",
                    "24.2.0"
                ]
            ]
        },
        {
            "name": "bitarray",
            "specs": [
                [
                    "==",
                    "2.9.2"
                ]
            ]
        },
        {
            "name": "bottle",
            "specs": [
                [
                    "==",
                    "0.13.1"
                ]
            ]
        },
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2024.8.30"
                ]
            ]
        },
        {
            "name": "cffi",
            "specs": [
                [
                    "==",
                    "1.17.1"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.3.2"
                ]
            ]
        },
        {
            "name": "ckzg",
            "specs": [
                [
                    "==",
                    "1.0.2"
                ]
            ]
        },
        {
            "name": "clr-loader",
            "specs": [
                [
                    "==",
                    "0.2.6"
                ]
            ]
        },
        {
            "name": "cryptography",
            "specs": [
                [
                    "==",
                    "43.0.1"
                ]
            ]
        },
        {
            "name": "cytoolz",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "eth-abi",
            "specs": [
                [
                    "==",
                    "5.1.0"
                ]
            ]
        },
        {
            "name": "eth-account",
            "specs": [
                [
                    "==",
                    "0.11.3"
                ]
            ]
        },
        {
            "name": "eth-hash",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "eth-hash",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "eth-keyfile",
            "specs": [
                [
                    "==",
                    "0.8.1"
                ]
            ]
        },
        {
            "name": "eth-keys",
            "specs": [
                [
                    "==",
                    "0.5.1"
                ]
            ]
        },
        {
            "name": "eth-rlp",
            "specs": [
                [
                    "==",
                    "1.0.1"
                ]
            ]
        },
        {
            "name": "eth-typing",
            "specs": [
                [
                    "==",
                    "4.4.0"
                ]
            ]
        },
        {
            "name": "eth-utils",
            "specs": [
                [
                    "==",
                    "4.1.1"
                ]
            ]
        },
        {
            "name": "frozenlist",
            "specs": [
                [
                    "==",
                    "1.4.1"
                ]
            ]
        },
        {
            "name": "google-re2",
            "specs": [
                [
                    "==",
                    "1.1.20240702"
                ]
            ]
        },
        {
            "name": "h11",
            "specs": [
                [
                    "==",
                    "0.14.0"
                ]
            ]
        },
        {
            "name": "hexbytes",
            "specs": [
                [
                    "==",
                    "0.3.1"
                ]
            ]
        },
        {
            "name": "httpcore",
            "specs": [
                [
                    "==",
                    "1.0.6"
                ]
            ]
        },
        {
            "name": "httpx",
            "specs": [
                [
                    "==",
                    "0.25.2"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.10"
                ]
            ]
        },
        {
            "name": "jaraco-classes",
            "specs": [
                [
                    "==",
                    "3.4.0"
                ]
            ]
        },
        {
            "name": "jeepney",
            "specs": [
                [
                    "==",
                    "0.8.0"
                ]
            ]
        },
        {
            "name": "jsonschema-specifications",
            "specs": [
                [
                    "==",
                    "2023.12.1"
                ]
            ]
        },
        {
            "name": "jsonschema",
            "specs": [
                [
                    "==",
                    "4.23.0"
                ]
            ]
        },
        {
            "name": "keyring",
            "specs": [
                [
                    "==",
                    "24.3.1"
                ]
            ]
        },
        {
            "name": "lightweight-charts",
            "specs": [
                [
                    "==",
                    "2.1"
                ]
            ]
        },
        {
            "name": "lru-dict",
            "specs": [
                [
                    "==",
                    "1.2.0"
                ]
            ]
        },
        {
            "name": "more-itertools",
            "specs": [
                [
                    "==",
                    "10.5.0"
                ]
            ]
        },
        {
            "name": "multidict",
            "specs": [
                [
                    "==",
                    "6.1.0"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "==",
                    "2.1.1"
                ]
            ]
        },
        {
            "name": "orjson",
            "specs": [
                [
                    "==",
                    "3.10.7"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "24.1"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    "==",
                    "2.2.3"
                ]
            ]
        },
        {
            "name": "parsimonious",
            "specs": [
                [
                    "==",
                    "0.10.0"
                ]
            ]
        },
        {
            "name": "peewee",
            "specs": [
                [
                    "==",
                    "3.17.6"
                ]
            ]
        },
        {
            "name": "protobuf",
            "specs": [
                [
                    "==",
                    "5.28.2"
                ]
            ]
        },
        {
            "name": "proxy-tools",
            "specs": [
                [
                    "==",
                    "0.1.0"
                ]
            ]
        },
        {
            "name": "pyahocorasick",
            "specs": [
                [
                    "==",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "pycparser",
            "specs": [
                [
                    "==",
                    "2.22"
                ]
            ]
        },
        {
            "name": "pycryptodome",
            "specs": [
                [
                    "==",
                    "3.21.0"
                ]
            ]
        },
        {
            "name": "pyobjc-core",
            "specs": [
                [
                    "==",
                    "10.3.1"
                ]
            ]
        },
        {
            "name": "pyobjc-framework-cocoa",
            "specs": [
                [
                    "==",
                    "10.3.1"
                ]
            ]
        },
        {
            "name": "pyobjc-framework-quartz",
            "specs": [
                [
                    "==",
                    "10.3.1"
                ]
            ]
        },
        {
            "name": "pyobjc-framework-security",
            "specs": [
                [
                    "==",
                    "10.3.1"
                ]
            ]
        },
        {
            "name": "pyobjc-framework-webkit",
            "specs": [
                [
                    "==",
                    "10.3.1"
                ]
            ]
        },
        {
            "name": "pyside6-addons",
            "specs": [
                [
                    "==",
                    "6.7.3"
                ]
            ]
        },
        {
            "name": "pyside6-essentials",
            "specs": [
                [
                    "==",
                    "6.7.3"
                ]
            ]
        },
        {
            "name": "pyside6",
            "specs": [
                [
                    "==",
                    "6.7.3"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "pythonnet",
            "specs": [
                [
                    "==",
                    "3.0.4"
                ]
            ]
        },
        {
            "name": "pytz",
            "specs": [
                [
                    "==",
                    "2024.2"
                ]
            ]
        },
        {
            "name": "pyunormalize",
            "specs": [
                [
                    "==",
                    "16.0.0"
                ]
            ]
        },
        {
            "name": "pywebview",
            "specs": [
                [
                    "==",
                    "5.2"
                ]
            ]
        },
        {
            "name": "pywin32-ctypes",
            "specs": [
                [
                    "==",
                    "0.2.3"
                ]
            ]
        },
        {
            "name": "pywin32",
            "specs": [
                [
                    "==",
                    "307"
                ]
            ]
        },
        {
            "name": "qasync",
            "specs": [
                [
                    "==",
                    "0.27.1"
                ]
            ]
        },
        {
            "name": "qtpy",
            "specs": [
                [
                    "==",
                    "2.4.1"
                ]
            ]
        },
        {
            "name": "referencing",
            "specs": [
                [
                    "==",
                    "0.35.1"
                ]
            ]
        },
        {
            "name": "regex",
            "specs": [
                [
                    "==",
                    "2024.9.11"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.32.3"
                ]
            ]
        },
        {
            "name": "rlp",
            "specs": [
                [
                    "==",
                    "4.0.1"
                ]
            ]
        },
        {
            "name": "rpds-py",
            "specs": [
                [
                    "==",
                    "0.20.0"
                ]
            ]
        },
        {
            "name": "secretstorage",
            "specs": [
                [
                    "==",
                    "3.3.3"
                ]
            ]
        },
        {
            "name": "setproctitle",
            "specs": [
                [
                    "==",
                    "1.3.3"
                ]
            ]
        },
        {
            "name": "shiboken6",
            "specs": [
                [
                    "==",
                    "6.7.3"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        },
        {
            "name": "sniffio",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "tenacity",
            "specs": [
                [
                    "==",
                    "8.5.0"
                ]
            ]
        },
        {
            "name": "textsearch",
            "specs": [
                [
                    "==",
                    "0.0.24"
                ]
            ]
        },
        {
            "name": "toolz",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "typing-extensions",
            "specs": [
                [
                    "==",
                    "4.12.2"
                ]
            ]
        },
        {
            "name": "tzdata",
            "specs": [
                [
                    "==",
                    "2024.2"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.2.3"
                ]
            ]
        },
        {
            "name": "web3",
            "specs": [
                [
                    "==",
                    "6.20.3"
                ]
            ]
        },
        {
            "name": "websockets",
            "specs": [
                [
                    "==",
                    "13.1"
                ]
            ]
        },
        {
            "name": "yarl",
            "specs": [
                [
                    "==",
                    "1.13.1"
                ]
            ]
        }
    ],
    "lcname": "plutus-terminal"
}
        
Elapsed time: 0.45513s