Rename pynecone to reflex (#1236)

This commit is contained in:
Nikhil Rao 2023-06-25 16:56:55 -07:00 committed by GitHub
parent d9e4d6d130
commit 139ce38df1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
216 changed files with 4377 additions and 4283 deletions

View File

@ -1,5 +1,5 @@
[run] [run]
source = pynecone source = reflex
branch = true branch = true
[report] [report]

View File

@ -22,7 +22,7 @@ If applicable, add screenshots to help explain your problem.
** Specifics (please complete the following information):** ** Specifics (please complete the following information):**
- Python Version: - Python Version:
- Pynecone Version: - Reflex Version:
- OS: - OS:
- Browser (Optional): - Browser (Optional):

View File

@ -48,8 +48,8 @@ jobs:
if: steps.cache-deps.outputs.cache-hit != 'true' if: steps.cache-deps.outputs.cache-hit != 'true'
- run: poetry install --no-interaction - run: poetry install --no-interaction
- run: poetry run pytest tests --cov --no-cov-on-fail --cov-report= - run: poetry run pytest tests --cov --no-cov-on-fail --cov-report=
- run: poetry run pyright pynecone tests - run: poetry run pyright reflex tests
- run: poetry run ruff check . --format github - run: poetry run ruff check . --format github
- run: find pynecone tests -name "*.py" -not -path pynecone/pc.py | xargs poetry run darglint - run: find reflex tests -name "*.py" -not -path reflex/reflex.py | xargs poetry run darglint
- run: poetry run black --check pynecone tests - run: poetry run black --check reflex tests
- run: poetry run coverage html - run: poetry run coverage html

View File

@ -31,8 +31,8 @@ jobs:
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
# Clone Pynecone Website Repo For integration tests # Clone Reflex Website Repo For integration tests
- name: Clone Pynecone Examples Repo - name: Clone Reflex Examples Repo
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
repository: pynecone-io/pynecone-examples repository: pynecone-io/pynecone-examples
@ -64,7 +64,7 @@ jobs:
run: poetry run pip install -r requirements.txt run: poetry run pip install -r requirements.txt
- name: Init Website - name: Init Website
working-directory: ./pynecone-examples/counter working-directory: ./pynecone-examples/counter
run: poetry run pc init run: poetry run reflex init
- name: Check for errors - name: Check for errors
run: | run: |
chmod +x ./scripts/integration.sh chmod +x ./scripts/integration.sh

View File

@ -31,8 +31,8 @@ jobs:
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
# Clone Pynecone Website Repo For integration tests # Clone Reflex Website Repo For integration tests
- name: Clone Pynecone Website Repo - name: Clone Reflex Website Repo
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
repository: pynecone-io/pcweb repository: pynecone-io/pcweb
@ -65,7 +65,7 @@ jobs:
run: poetry run pip install -r requirements.txt && poetry run pip install googletrans run: poetry run pip install -r requirements.txt && poetry run pip install googletrans
- name: Init Website - name: Init Website
working-directory: ./pcweb working-directory: ./pcweb
run: poetry run pc init run: poetry run reflex init
- name: Run Website and Check for errors - name: Run Website and Check for errors
run: | run: |
chmod +x ./scripts/integration.sh chmod +x ./scripts/integration.sh

View File

@ -8,17 +8,17 @@ repos:
rev: v1.1.313 rev: v1.1.313
hooks: hooks:
- id: pyright - id: pyright
args: [pynecone, tests] args: [reflex, tests]
language: system language: system
- repo: https://github.com/terrencepreilly/darglint - repo: https://github.com/terrencepreilly/darglint
rev: v1.8.1 rev: v1.8.1
hooks: hooks:
- id: darglint - id: darglint
exclude: '^pynecone/pc.py' exclude: '^reflex/reflex.py'
- repo: https://github.com/psf/black - repo: https://github.com/psf/black
rev: 22.10.0 rev: 22.10.0
hooks: hooks:
- id: black - id: black
args: [pynecone, tests] args: [reflex, tests]

View File

@ -1,43 +1,43 @@
# Welcome to Pynecone contributing guide! 🥳 # Welcome to Reflex contributing guide! 🥳
## Getting started ## Getting started
To navigate our codebase with confidence, see [Pynecone Docs](https://pynecone.io/docs/getting-started/introduction) :confetti_ball:. To navigate our codebase with confidence, see [Reflex Docs](https://pynecone.io/docs/getting-started/introduction) :confetti_ball:.
### Discussions ### Discussions
- Have a question? Want to discuss a feature? [Start a discussion](https://github.com/pynecone-io/pynecone/discussions) - Have a question? Want to discuss a feature? [Start a discussion](https://github.com/pynecone-io/pynecone/discussions)
We welcome any discussions and questions. We want to make sure that Pynecone is the best it can be, and we can't do that without your help. We welcome any discussions and questions. We want to make sure that Reflex is the best it can be, and we can't do that without your help.
### Issues ### Issues
* #### Create a new issue * #### Create a new issue
If you spot a problem with anything in Pynecone feel free to create an issue. Even if you are not sure if its a problem with the framework or your own code, create an issue and we will do our best to answer or resolve it. If you spot a problem with anything in Reflex feel free to create an issue. Even if you are not sure if its a problem with the framework or your own code, create an issue and we will do our best to answer or resolve it.
* #### Solve an issue * #### Solve an issue
Scan through our [existing issues](https://github.com/pynecone-io/pynecone/issues) to find one that interests you. You can narrow down the search using `labels` as filters. As a general rule, we dont assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix. Any large issue changing the compiler of Pynecone should brought to the Pynecone maintainers for approval Scan through our [existing issues](https://github.com/pynecone-io/pynecone/issues) to find one that interests you. You can narrow down the search using `labels` as filters. As a general rule, we dont assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix. Any large issue changing the compiler of Reflex should brought to the Reflex maintainers for approval
Thank you for supporting Pynecone!🎊 Thank you for supporting Reflex!🎊
## 💻 How to Run a Local Build of Pynecone ## 💻 How to Run a Local Build of Reflex
Here is a quick guide to how the run Pynecone repo locally so you can start contributing to the project. Here is a quick guide to how the run Reflex repo locally so you can start contributing to the project.
First clone Pynecone: First clone Reflex:
``` bash ``` bash
git clone https://github.com/pynecone-io/pynecone.git git clone https://github.com/pynecone-io/pynecone.git
``` ```
Navigate into the repo: Navigate into the repo:
``` bash ``` bash
cd pynecone cd reflex
``` ```
Install poetry version >= 1.4.0 and add it to your path (see [Poetry Docs](https://python-poetry.org/docs/#installation) for more info). Install poetry version >= 1.4.0 and add it to your path (see [Poetry Docs](https://python-poetry.org/docs/#installation) for more info).
Install your local Pynecone build: Install your local Reflex build:
``` bash ``` bash
poetry install poetry install
``` ```
@ -56,18 +56,18 @@ cd example
Now Init/Run Now Init/Run
``` bash ``` bash
poetry run pc init poetry run reflex init
poetry run pc run poetry run reflex run
``` ```
All the changes you make to the repository will be reflected in your running app. All the changes you make to the repository will be reflected in your running app.
* We have the examples folder in the .gitignore, so your changes in pynecone/examples won't be reflected in your commit. * We have the examples folder in the .gitignore, so your changes in reflex/examples won't be reflected in your commit.
## 🧪 Testing and QA ## 🧪 Testing and QA
Any feature or significant change added should be accompanied with unit tests. Any feature or significant change added should be accompanied with unit tests.
Within the 'test' directory of Pynecone you can add to a test file already there or create a new test python file if it doesn't fit into the existing layout. Within the 'test' directory of Reflex you can add to a test file already there or create a new test python file if it doesn't fit into the existing layout.
What to unit test? What to unit test?
- Any feature or significant change that has been added. - Any feature or significant change that has been added.
@ -77,11 +77,11 @@ What to unit test?
## ✅ Making a PR ## ✅ Making a PR
Once you solve a current issue or improvement to Pynecone, you can make a pr, and we will review the changes. Once you solve a current issue or improvement to Reflex, you can make a pr, and we will review the changes.
Before submitting, a pull request, ensure the following steps are taken and test passing. Before submitting, a pull request, ensure the following steps are taken and test passing.
In your `pynecone` directory run make sure all the unit tests are still passing using the following command. In your `reflex` directory run make sure all the unit tests are still passing using the following command.
This will fail if code coverage is below 80%. This will fail if code coverage is below 80%.
``` bash ``` bash
poetry run pytest tests --cov --no-cov-on-fail --cov-report= poetry run pytest tests --cov --no-cov-on-fail --cov-report=
@ -89,12 +89,12 @@ poetry run pytest tests --cov --no-cov-on-fail --cov-report=
Next make sure all the following tests pass. This ensures that every new change has proper documentation and type checking. Next make sure all the following tests pass. This ensures that every new change has proper documentation and type checking.
``` bash ``` bash
poetry run ruff check . poetry run ruff check .
poetry run pyright pynecone tests poetry run pyright reflex tests
find pynecone tests -name "*.py" -not -path pynecone/pc.py | xargs poetry run darglint find reflex tests -name "*.py" -not -path reflex/reflex.py | xargs poetry run darglint
``` ```
Finally, run `black` to format your code. Finally, run `black` to format your code.
``` bash ``` bash
poetry run black pynecone tests poetry run black reflex tests
``` ```
Consider installing git pre-commit hooks so Ruff, Pyright, Darglint and Black will run automatically before each commit. Consider installing git pre-commit hooks so Ruff, Pyright, Darglint and Black will run automatically before each commit.
@ -103,4 +103,4 @@ Note that pre-commit will only be installed when you use a Python version >= 3.8
pre-commit install pre-commit install
``` ```
That's it you can now submit your pr. Thanks for contributing to Pynecone! That's it you can now submit your pr. Thanks for contributing to Reflex!

View File

@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier same "printed page" as the copyright notice for easier
identification within third-party archives. identification within third-party archives.
Copyright 2023, Pynecone Inc Copyright 2023, Pynecone, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -1,3 +1,19 @@
```diff
+ ATTENTION: Over the next week we will be changing our project name from Pynecone to Reflex.
The new name aligns with our goal of allowing you to build apps easily, while also being flexible and powerful enough to handle all your use cases.
Major Changes:
+ Our domain will switch from https://pynecone.io/ -> https://pynecone.io/
+ Our pip install will switch from pip install pynecone -> pip install reflex
+ Our Github repo will switch from https://github.com/pynecone-io/pynecone -> https://github.com/reflex-dev/reflex
+ Our library will change from import pynecone as pc to import reflex as rx
We will have a feature freeze until we migrate our code and website to the new name.
Our goal is to complete the transition by June 30. Thanks for your support - please message on Discord if you have any questions or concerns!
```
<div align="center"> <div align="center">
<img src="docs/images/cones.png"> <img src="docs/images/cones.png">

View File

@ -1,6 +1,6 @@
FROM python:3.11-slim as base FROM python:3.11-slim as base
RUN adduser --disabled-password pynecone RUN adduser --disabled-password reflex
FROM base as build FROM base as build
@ -34,16 +34,16 @@ FROM runtime as init
WORKDIR /app WORKDIR /app
ENV BUN_INSTALL="/app/.bun" ENV BUN_INSTALL="/app/.bun"
COPY --from=build /app/ /app/ COPY --from=build /app/ /app/
RUN pc init RUN reflex init
FROM runtime FROM runtime
COPY --chown=pynecone --from=init /app/ /app/ COPY --chown=reflex --from=init /app/ /app/
USER pynecone USER reflex
WORKDIR /app WORKDIR /app
CMD ["pc","run" , "--env", "prod"] CMD ["rx","run" , "--env", "prod"]
EXPOSE 3000 EXPOSE 3000
EXPOSE 8000 EXPOSE 8000

View File

@ -1,38 +1,38 @@
# Pynecone Container Image Build # Reflex Container Image Build
This example describes how to create and use a container image for Pynecone with your own code. This example describes how to create and use a container image for Reflex with your own code.
## Update Requirements ## Update Requirements
The `requirements.txt` includes the pynecone package which is need to install Pynecone framework. If you use additional packages in your project you have add this in the `requirements.txt` first. Copy the `Dockerfile` and the `requirements.txt` file in your project folder. The `requirements.txt` includes the reflex package which is need to install Reflex framework. If you use additional packages in your project you have add this in the `requirements.txt` first. Copy the `Dockerfile` and the `requirements.txt` file in your project folder.
## Customize Pynecone Config ## Customize Reflex Config
The `pcconfig.py` includes the configuration of your Pynecone service. Edit the file like the following configuration. If you want to use a custom database you can set the endpoint in this file. The `rxconfig.py` includes the configuration of your Reflex service. Edit the file like the following configuration. If you want to use a custom database you can set the endpoint in this file.
```python ```python
import pynecone as pc import reflex as rx
config = pc.Config( config = rx.Config(
app_name="app", app_name="app",
api_url="0.0.0.0:8000", api_url="0.0.0.0:8000",
bun_path="/app/.bun/bin/bun", bun_path="/app/.bun/bin/bun",
db_url="sqlite:///pynecone.db", db_url="sqlite:///reflex.db",
) )
``` ```
## Build Pynecone Container Image ## Build Reflex Container Image
To build your container image run the following command: To build your container image run the following command:
```bash ```bash
docker build -t pynecone-project:latest . docker build -t reflex-project:latest .
``` ```
## Start Container Service ## Start Container Service
Finally, you can start your Pynecone container service as follows: Finally, you can start your Reflex container service as follows:
```bash ```bash
docker run -d -p 3000:3000 -p 8000:8000 --name pynecone pynecone-project:latest docker run -d -p 3000:3000 -p 8000:8000 --name reflex reflex-project:latest
``` ```

View File

@ -1 +1 @@
pynecone reflex

View File

@ -7,9 +7,9 @@
📑 [Docs](https://pynecone.io/docs/getting-started/introduction) &nbsp; 📱 [Component Library](https://pynecone.io/docs/library) &nbsp; 🖼️ [Gallery](https://pynecone.io/docs/gallery) &nbsp; 🛸 [Deployment](https://pynecone.io/docs/hosting/deploy) 📑 [Docs](https://pynecone.io/docs/getting-started/introduction) &nbsp; 📱 [Component Library](https://pynecone.io/docs/library) &nbsp; 🖼️ [Gallery](https://pynecone.io/docs/gallery) &nbsp; 🛸 [Deployment](https://pynecone.io/docs/hosting/deploy)
[![PyPI version](https://badge.fury.io/py/pynecone.svg)](https://badge.fury.io/py/pynecone) [![PyPI version](https://badge.fury.io/py/reflex.svg)](https://badge.fury.io/py/reflex)
![tests](https://github.com/pynecone-io/pynecone/actions/workflows/build.yml/badge.svg) ![tests](https://github.com/pynecone-io/pynecone/actions/workflows/build.yml/badge.svg)
![versions](https://img.shields.io/pypi/pyversions/pynecone-io.svg) ![versions](https://img.shields.io/pypi/pyversions/reflex-dev.svg)
[![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ) [![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ)
</div> </div>
@ -24,25 +24,25 @@
## 📦 1. 安裝 ## 📦 1. 安裝
Pynecone 需要以下最低要求: Reflex 需要以下最低要求:
- Python 3.7+ - Python 3.7+
- [Node.js 16.8.0+](https://nodejs.org/en/) (不用擔心,你不需要寫任何 JavaScript!) - [Node.js 16.8.0+](https://nodejs.org/en/) (不用擔心,你不需要寫任何 JavaScript!)
``` ```
pip install pynecone pip install reflex
``` ```
## 🥳 2. 建立你的第一個應用程式 ## 🥳 2. 建立你的第一個應用程式
安裝 Pynecone 的同時也會安裝 `pc` 命令行工具. 通過創建一個新專案來測試是否安裝成功。 安裝 Reflex 的同時也會安裝 `rx` 命令行工具. 通過創建一個新專案來測試是否安裝成功。
把 my_app_name 替代為你的專案名字: 把 my_app_name 替代為你的專案名字:
``` ```
mkdir my_app_name mkdir my_app_name
cd my_app_name cd my_app_name
pc init reflex init
``` ```
當你第一次運行這個命令,將會自動下載與安裝 [bun](https://bun.sh/)。 當你第一次運行這個命令,將會自動下載與安裝 [bun](https://bun.sh/)。
@ -54,12 +54,12 @@ pc init
你可以在開發者模式運行這個應用程式: 你可以在開發者模式運行這個應用程式:
``` ```
pc run reflex run
``` ```
你可以看到你的應用程式運行在 http://localhost:3000。 你可以看到你的應用程式運行在 http://localhost:3000。
現在在以下位置修改原始碼 `my_app_name/my_app_name.py`Pynecone 擁有快速重整所以你可以在保存程式碼後馬上看到更改。 現在在以下位置修改原始碼 `my_app_name/my_app_name.py`Reflex 擁有快速重整所以你可以在保存程式碼後馬上看到更改。
## 🫧 範例 ## 🫧 範例
@ -76,12 +76,12 @@ pc run
這是上述範例的完整程式碼,只需要一個 Python 檔案就可以完成! 這是上述範例的完整程式碼,只需要一個 Python 檔案就可以完成!
```python ```python
import pynecone as pc import reflex as rx
import openai import openai
openai.api_key = "YOUR_API_KEY" openai.api_key = "YOUR_API_KEY"
class State(pc.State): class State(rx.State):
"""應用程式狀態""" """應用程式狀態"""
prompt = "" prompt = ""
image_url = "" image_url = ""
@ -101,22 +101,22 @@ class State(pc.State):
self.image_made = True self.image_made = True
def index(): def index():
return pc.center( return rx.center(
pc.vstack( rx.vstack(
pc.heading("DALL·E", font_size="1.5em"), rx.heading("DALL·E", font_size="1.5em"),
pc.input(placeholder="Enter a prompt..", on_blur=State.set_prompt), rx.input(placeholder="Enter a prompt..", on_blur=State.set_prompt),
pc.button( rx.button(
"產生圖片", "產生圖片",
on_click=[State.process_image, State.get_image], on_click=[State.process_image, State.get_image],
width="100%", width="100%",
), ),
pc.divider(), rx.divider(),
pc.cond( rx.cond(
State.image_processing, State.image_processing,
pc.circular_progress(is_indeterminate=True), rx.circular_progress(is_indeterminate=True),
pc.cond( rx.cond(
State.image_made, State.image_made,
pc.image( rx.image(
src=State.image_url, src=State.image_url,
height="25em", height="25em",
width="25em", width="25em",
@ -134,18 +134,18 @@ def index():
) )
# 把狀態跟頁面添加到應用程式。 # 把狀態跟頁面添加到應用程式。
app = pc.App(state=State) app = rx.App(state=State)
app.add_page(index, title="Pynecone:DALL·E") app.add_page(index, title="Reflex:DALL·E")
app.compile() app.compile()
``` ```
### **Pynecone 中的圖形使用者介面** ### **Reflex 中的圖形使用者介面**
讓我們分解以上步驟。 讓我們分解以上步驟。
```python ```python
def index(): def index():
return pc.center( return rx.center(
... ...
) )
``` ```
@ -155,15 +155,15 @@ def index():
我們用不同的元件像是 `center`, `vstack`, `input`, 和 `button` 來建立前端, 元件之間可以相互嵌入,來建立複雜的佈局。 我們用不同的元件像是 `center`, `vstack`, `input`, 和 `button` 來建立前端, 元件之間可以相互嵌入,來建立複雜的佈局。
並且你可以使用關鍵字參數來使用 CSS 的全部功能。 並且你可以使用關鍵字參數來使用 CSS 的全部功能。
Pynecone 擁有 [60+ built-in components](https://pynecone.io/docs/library) 來幫助你開始建立應用程式。 Reflex 擁有 [60+ built-in components](https://pynecone.io/docs/library) 來幫助你開始建立應用程式。
我們正在積極添加元件, 但是你也可以簡單的自己創建一些元件 [create your own components](https://pynecone.io/docs/advanced-guide/wrapping-react)。 我們正在積極添加元件, 但是你也可以簡單的自己創建一些元件 [create your own components](https://pynecone.io/docs/advanced-guide/wrapping-react)。
### **狀態** ### **狀態**
Pynecone 用 State 來渲染你的 UI。 Reflex 用 State 來渲染你的 UI。
```python ```python
class State(pc.State): class State(rx.State):
"""應用程式狀態""" """應用程式狀態"""
prompt = "" prompt = ""
image_url = "" image_url = ""
@ -191,7 +191,7 @@ State 定義了應用程式中所有可以更改的變數及變更他們的 func
self.image_made = True self.image_made = True
``` ```
在 State 中我們定義了事件處理程序來更改狀態變數,事件處理程序是我們在 Pynecone 中修改狀態的方法,可以使用它們來回應使用者操作,像是點擊按鈕或在文字框輸入這些動作都是一種事件。 在 State 中我們定義了事件處理程序來更改狀態變數,事件處理程序是我們在 Reflex 中修改狀態的方法,可以使用它們來回應使用者操作,像是點擊按鈕或在文字框輸入這些動作都是一種事件。
我們的 DALL·E. 應用程式有兩個事件處理程序 `process_image` 表示正在生成圖片和 `get_image` 呼叫 OpenAI API。 我們的 DALL·E. 應用程式有兩個事件處理程序 `process_image` 表示正在生成圖片和 `get_image` 呼叫 OpenAI API。
@ -200,36 +200,36 @@ State 定義了應用程式中所有可以更改的變數及變更他們的 func
最後定義我們的應用程式並傳送狀態給它。 最後定義我們的應用程式並傳送狀態給它。
```python ```python
app = pc.App(state=State) app = rx.App(state=State)
``` ```
添加從應用程式根目錄到 index 元件的路由。 我們也添加了一個標題將會顯示在 預覽/瀏覽 分頁。 添加從應用程式根目錄到 index 元件的路由。 我們也添加了一個標題將會顯示在 預覽/瀏覽 分頁。
```python ```python
app.add_page(index, title="Pynecone:DALL-E") app.add_page(index, title="Reflex:DALL-E")
app.compile() app.compile()
``` ```
你可以藉由通過添加路由來增加更多頁面。 你可以藉由通過添加路由來增加更多頁面。
## Pynecone 狀態 ## Reflex 狀態
Pynecone 於 2022 年 12 月推出。 Reflex 於 2022 年 12 月推出。
截至 2023 年 3 月,我們處於 **Public Beta** 階段。 截至 2023 年 3 月,我們處於 **Public Beta** 階段。
- :white_check_mark: **Public Alpha**: 任何人都可以安裝與使用 Pynecone,或許包含問題, 但我們正在積極的解決他們。 - :white_check_mark: **Public Alpha**: 任何人都可以安裝與使用 Reflex,或許包含問題, 但我們正在積極的解決他們。
- :large_orange_diamond: **Public Beta**: 對於非軟體產品來說足夠穩定。 - :large_orange_diamond: **Public Beta**: 對於非軟體產品來說足夠穩定。
- **Public Hosting Beta**: _Optionally_, 部屬跟託管你的 Pynecone! - **Public Hosting Beta**: _Optionally_, 部屬跟託管你的 Reflex!
- **Public**: 這版本的 Pynecone 是可用於軟體產品的。 - **Public**: 這版本的 Reflex 是可用於軟體產品的。
Pynecone 每周都有新功能和釋出新版本! 確保你按下 :star: 和 :eyes: watch 這個 repository 來確保知道最新資訊。 Reflex 每周都有新功能和釋出新版本! 確保你按下 :star: 和 :eyes: watch 這個 repository 來確保知道最新資訊。
## 貢獻 ## 貢獻
我們歡迎任何大小的貢獻,以下是幾個好的方法來加入 Pynecone 社群。 我們歡迎任何大小的貢獻,以下是幾個好的方法來加入 Reflex 社群。
- **加入我們的 Discord**: 我們的 [Discord](https://discord.gg/T5WSbC2YtQ) 是幫助你加入 Pynecone 專案和討論或貢獻最棒的地方。 - **加入我們的 Discord**: 我們的 [Discord](https://discord.gg/T5WSbC2YtQ) 是幫助你加入 Reflex 專案和討論或貢獻最棒的地方。
- **GitHub Discussions**: 一個來討論你想要添加的功能或是需要澄清的事情的好地方。 - **GitHub Discussions**: 一個來討論你想要添加的功能或是需要澄清的事情的好地方。
- **GitHub Issues**: 報告錯誤的絕佳地方,另外你可以試著解決一些 issue 和送出 PR。 - **GitHub Issues**: 報告錯誤的絕佳地方,另外你可以試著解決一些 issue 和送出 PR。
@ -237,4 +237,4 @@ Pynecone 每周都有新功能和釋出新版本! 確保你按下 :star: 和 :ey
## 授權 ## 授權
Pynecone 是一個開源專案且使用 [Apache License 2.0](LICENSE) 授權。 Reflex 是一個開源專案且使用 [Apache License 2.0](LICENSE) 授權。

327
poetry.lock generated
View File

@ -1,4 +1,4 @@
# This file is automatically @generated by Poetry and should not be changed by hand. # This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand.
[[package]] [[package]]
name = "anyio" name = "anyio"
@ -285,18 +285,18 @@ test = ["pytest (>=6)"]
[[package]] [[package]]
name = "fastapi" name = "fastapi"
version = "0.96.0" version = "0.96.1"
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "fastapi-0.96.0-py3-none-any.whl", hash = "sha256:b8e11fe81e81eab4e1504209917338e0b80f783878a42c2b99467e5e1019a1e9"}, {file = "fastapi-0.96.1-py3-none-any.whl", hash = "sha256:22d773ce95f14f04f8f37a0c8998fc163e67af83b65510d2879de6cbaaa10215"},
{file = "fastapi-0.96.0.tar.gz", hash = "sha256:71232d47c2787446991c81c41c249f8a16238d52d779c0e6b43927d3773dbe3c"}, {file = "fastapi-0.96.1.tar.gz", hash = "sha256:5c1d243030e63089ccfc0aec69c2da6d619943917727e8e82ee502358d5119bf"},
] ]
[package.dependencies] [package.dependencies]
pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0"
starlette = ">=0.27.0,<0.28.0" starlette = ">=0.27.0,<0.28.0"
[package.extras] [package.extras]
@ -307,19 +307,19 @@ test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==23.1.0)", "coverage[toml] (>=6
[[package]] [[package]]
name = "filelock" name = "filelock"
version = "3.12.0" version = "3.12.2"
description = "A platform independent file lock." description = "A platform independent file lock."
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "filelock-3.12.0-py3-none-any.whl", hash = "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9"}, {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"},
{file = "filelock-3.12.0.tar.gz", hash = "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"}, {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"},
] ]
[package.extras] [package.extras]
docs = ["furo (>=2023.3.27)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
testing = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"]
[[package]] [[package]]
name = "greenlet" name = "greenlet"
@ -506,14 +506,14 @@ files = [
[[package]] [[package]]
name = "importlib-metadata" name = "importlib-metadata"
version = "6.6.0" version = "6.7.0"
description = "Read metadata from Python packages" description = "Read metadata from Python packages"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"}, {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"},
{file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"}, {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"},
] ]
[package.dependencies] [package.dependencies]
@ -523,7 +523,7 @@ zipp = ">=0.5"
[package.extras] [package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
perf = ["ipython"] perf = ["ipython"]
testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
[[package]] [[package]]
name = "iniconfig" name = "iniconfig"
@ -583,62 +583,62 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
[[package]] [[package]]
name = "markupsafe" name = "markupsafe"
version = "2.1.2" version = "2.1.3"
description = "Safely add untrusted strings to HTML/XML markup." description = "Safely add untrusted strings to HTML/XML markup."
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"},
{file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"},
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"},
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"},
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"},
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"},
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"},
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"},
{file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"},
{file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"},
{file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"},
{file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"},
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"},
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"},
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"},
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"},
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"},
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
{file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
{file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"},
{file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"},
{file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"},
{file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"},
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"},
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"},
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"},
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"},
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"},
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"},
{file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"},
{file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"},
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"},
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"},
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"},
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"},
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"},
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"},
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"},
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"},
{file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"},
{file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"},
{file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"},
] ]
[[package]] [[package]]
@ -759,6 +759,41 @@ files = [
{file = "numpy-1.24.3.tar.gz", hash = "sha256:ab344f1bf21f140adab8e47fdbc7c35a477dc01408791f8ba00d018dd0bc5155"}, {file = "numpy-1.24.3.tar.gz", hash = "sha256:ab344f1bf21f140adab8e47fdbc7c35a477dc01408791f8ba00d018dd0bc5155"},
] ]
[[package]]
name = "numpy"
version = "1.25.0"
description = "Fundamental package for array computing in Python"
category = "dev"
optional = false
python-versions = ">=3.9"
files = [
{file = "numpy-1.25.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8aa130c3042052d656751df5e81f6d61edff3e289b5994edcf77f54118a8d9f4"},
{file = "numpy-1.25.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e3f2b96e3b63c978bc29daaa3700c028fe3f049ea3031b58aa33fe2a5809d24"},
{file = "numpy-1.25.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6b267f349a99d3908b56645eebf340cb58f01bd1e773b4eea1a905b3f0e4208"},
{file = "numpy-1.25.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4aedd08f15d3045a4e9c648f1e04daca2ab1044256959f1f95aafeeb3d794c16"},
{file = "numpy-1.25.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6d183b5c58513f74225c376643234c369468e02947b47942eacbb23c1671f25d"},
{file = "numpy-1.25.0-cp310-cp310-win32.whl", hash = "sha256:d76a84998c51b8b68b40448ddd02bd1081bb33abcdc28beee6cd284fe11036c6"},
{file = "numpy-1.25.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0dc071017bc00abb7d7201bac06fa80333c6314477b3d10b52b58fa6a6e38f6"},
{file = "numpy-1.25.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c69fe5f05eea336b7a740e114dec995e2f927003c30702d896892403df6dbf0"},
{file = "numpy-1.25.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c7211d7920b97aeca7b3773a6783492b5b93baba39e7c36054f6e749fc7490c"},
{file = "numpy-1.25.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecc68f11404930e9c7ecfc937aa423e1e50158317bf67ca91736a9864eae0232"},
{file = "numpy-1.25.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e559c6afbca484072a98a51b6fa466aae785cfe89b69e8b856c3191bc8872a82"},
{file = "numpy-1.25.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6c284907e37f5e04d2412950960894b143a648dea3f79290757eb878b91acbd1"},
{file = "numpy-1.25.0-cp311-cp311-win32.whl", hash = "sha256:95367ccd88c07af21b379be1725b5322362bb83679d36691f124a16357390153"},
{file = "numpy-1.25.0-cp311-cp311-win_amd64.whl", hash = "sha256:b76aa836a952059d70a2788a2d98cb2a533ccd46222558b6970348939e55fc24"},
{file = "numpy-1.25.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b792164e539d99d93e4e5e09ae10f8cbe5466de7d759fc155e075237e0c274e4"},
{file = "numpy-1.25.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7cd981ccc0afe49b9883f14761bb57c964df71124dcd155b0cba2b591f0d64b9"},
{file = "numpy-1.25.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa48bebfb41f93043a796128854b84407d4df730d3fb6e5dc36402f5cd594c0"},
{file = "numpy-1.25.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5177310ac2e63d6603f659fadc1e7bab33dd5a8db4e0596df34214eeab0fee3b"},
{file = "numpy-1.25.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0ac6edfb35d2a99aaf102b509c8e9319c499ebd4978df4971b94419a116d0790"},
{file = "numpy-1.25.0-cp39-cp39-win32.whl", hash = "sha256:7412125b4f18aeddca2ecd7219ea2d2708f697943e6f624be41aa5f8a9852cc4"},
{file = "numpy-1.25.0-cp39-cp39-win_amd64.whl", hash = "sha256:26815c6c8498dc49d81faa76d61078c4f9f0859ce7817919021b9eba72b425e3"},
{file = "numpy-1.25.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b1b90860bf7d8a8c313b372d4f27343a54f415b20fb69dd601b7efe1029c91e"},
{file = "numpy-1.25.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85cdae87d8c136fd4da4dad1e48064d700f63e923d5af6c8c782ac0df8044542"},
{file = "numpy-1.25.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cc3fda2b36482891db1060f00f881c77f9423eead4c3579629940a3e12095fe8"},
{file = "numpy-1.25.0.tar.gz", hash = "sha256:f1accae9a28dc3cda46a91de86acf69de0d1b5f4edd44a9b0c3ceb8036dfff19"},
]
[[package]] [[package]]
name = "packaging" name = "packaging"
version = "23.1" version = "23.1"
@ -876,33 +911,33 @@ files = [
[[package]] [[package]]
name = "platformdirs" name = "platformdirs"
version = "3.5.1" version = "3.8.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "platformdirs-3.5.1-py3-none-any.whl", hash = "sha256:e2378146f1964972c03c085bb5662ae80b2b8c06226c54b2ff4aa9483e8a13a5"}, {file = "platformdirs-3.8.0-py3-none-any.whl", hash = "sha256:ca9ed98ce73076ba72e092b23d3c93ea6c4e186b3f1c3dad6edd98ff6ffcca2e"},
{file = "platformdirs-3.5.1.tar.gz", hash = "sha256:412dae91f52a6f84830f39a8078cecd0e866cb72294a5c66808e74d5e88d251f"}, {file = "platformdirs-3.8.0.tar.gz", hash = "sha256:b0cabcb11063d21a0b261d557acb0a9d2126350e63b70cdf7db6347baea456dc"},
] ]
[package.dependencies] [package.dependencies]
typing-extensions = {version = ">=4.5", markers = "python_version < \"3.8\""} typing-extensions = {version = ">=4.6.3", markers = "python_version < \"3.8\""}
[package.extras] [package.extras]
docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.2.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"]
[[package]] [[package]]
name = "plotly" name = "plotly"
version = "5.14.1" version = "5.15.0"
description = "An open-source, interactive data visualization library for Python" description = "An open-source, interactive data visualization library for Python"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
{file = "plotly-5.14.1-py2.py3-none-any.whl", hash = "sha256:a63f3ad9e4cc2e02902a738e5e3e7f3d1307f2732ac71a6c28f1238ed3052826"}, {file = "plotly-5.15.0-py2.py3-none-any.whl", hash = "sha256:3508876bbd6aefb8a692c21a7128ca87ce42498dd041efa5c933ee44b55aab24"},
{file = "plotly-5.14.1.tar.gz", hash = "sha256:bcac86d7fcba3eff7260c1eddc36ca34dae2aded10a0709808446565e0e53b93"}, {file = "plotly-5.15.0.tar.gz", hash = "sha256:822eabe53997d5ebf23c77e1d1fcbf3bb6aa745eb05d532afd4b6f9a2e2ab02f"},
] ]
[package.dependencies] [package.dependencies]
@ -911,14 +946,14 @@ tenacity = ">=6.2.0"
[[package]] [[package]]
name = "pluggy" name = "pluggy"
version = "1.0.0" version = "1.2.0"
description = "plugin and hook calling mechanisms for python" description = "plugin and hook calling mechanisms for python"
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.7"
files = [ files = [
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"},
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"},
] ]
[package.dependencies] [package.dependencies]
@ -930,14 +965,14 @@ testing = ["pytest", "pytest-benchmark"]
[[package]] [[package]]
name = "pre-commit" name = "pre-commit"
version = "3.3.2" version = "3.3.3"
description = "A framework for managing and maintaining multi-language pre-commit hooks." description = "A framework for managing and maintaining multi-language pre-commit hooks."
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
{file = "pre_commit-3.3.2-py2.py3-none-any.whl", hash = "sha256:8056bc52181efadf4aac792b1f4f255dfd2fb5a350ded7335d251a68561e8cb6"}, {file = "pre_commit-3.3.3-py2.py3-none-any.whl", hash = "sha256:10badb65d6a38caff29703362271d7dca483d01da88f9d7e05d0b97171c136cb"},
{file = "pre_commit-3.3.2.tar.gz", hash = "sha256:66e37bec2d882de1f17f88075047ef8962581f83c234ac08da21a0c58953d1f0"}, {file = "pre_commit-3.3.3.tar.gz", hash = "sha256:a2256f489cd913d575c145132ae196fe335da32d91a8294b7afe6622335dd023"},
] ]
[package.dependencies] [package.dependencies]
@ -976,48 +1011,48 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
[[package]] [[package]]
name = "pydantic" name = "pydantic"
version = "1.10.8" version = "1.10.9"
description = "Data validation and settings management using python type hints" description = "Data validation and settings management using python type hints"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "pydantic-1.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1243d28e9b05003a89d72e7915fdb26ffd1d39bdd39b00b7dbe4afae4b557f9d"}, {file = "pydantic-1.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca"},
{file = "pydantic-1.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0ab53b609c11dfc0c060d94335993cc2b95b2150e25583bec37a49b2d6c6c3f"}, {file = "pydantic-1.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f"},
{file = "pydantic-1.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9613fadad06b4f3bc5db2653ce2f22e0de84a7c6c293909b48f6ed37b83c61f"}, {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896"},
{file = "pydantic-1.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df7800cb1984d8f6e249351139667a8c50a379009271ee6236138a22a0c0f319"}, {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d"},
{file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0c6fafa0965b539d7aab0a673a046466d23b86e4b0e8019d25fd53f4df62c277"}, {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f"},
{file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e82d4566fcd527eae8b244fa952d99f2ca3172b7e97add0b43e2d97ee77f81ab"}, {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4"},
{file = "pydantic-1.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:ab523c31e22943713d80d8d342d23b6f6ac4b792a1e54064a8d0cf78fd64e800"}, {file = "pydantic-1.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f"},
{file = "pydantic-1.10.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:666bdf6066bf6dbc107b30d034615d2627e2121506c555f73f90b54a463d1f33"}, {file = "pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0"},
{file = "pydantic-1.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:35db5301b82e8661fa9c505c800d0990bc14e9f36f98932bb1d248c0ac5cada5"}, {file = "pydantic-1.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7"},
{file = "pydantic-1.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c1e29f447557e9e26afb1c4dbf8768a10cc676e3781b6a577841ade126b85"}, {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d"},
{file = "pydantic-1.10.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93e766b4a8226e0708ef243e843105bf124e21331694367f95f4e3b4a92bbb3f"}, {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c"},
{file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88f195f582851e8db960b4a94c3e3ad25692c1c1539e2552f3df7a9e972ef60e"}, {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91"},
{file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:34d327c81e68a1ecb52fe9c8d50c8a9b3e90d3c8ad991bfc8f953fb477d42fb4"}, {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8"},
{file = "pydantic-1.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:d532bf00f381bd6bc62cabc7d1372096b75a33bc197a312b03f5838b4fb84edd"}, {file = "pydantic-1.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f"},
{file = "pydantic-1.10.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7d5b8641c24886d764a74ec541d2fc2c7fb19f6da2a4001e6d580ba4a38f7878"}, {file = "pydantic-1.10.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece"},
{file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1f6cb446470b7ddf86c2e57cd119a24959af2b01e552f60705910663af09a4"}, {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a"},
{file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c33b60054b2136aef8cf190cd4c52a3daa20b2263917c49adad20eaf381e823b"}, {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a"},
{file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1952526ba40b220b912cdc43c1c32bcf4a58e3f192fa313ee665916b26befb68"}, {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60"},
{file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bb14388ec45a7a0dc429e87def6396f9e73c8c77818c927b6a60706603d5f2ea"}, {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf"},
{file = "pydantic-1.10.8-cp37-cp37m-win_amd64.whl", hash = "sha256:16f8c3e33af1e9bb16c7a91fc7d5fa9fe27298e9f299cff6cb744d89d573d62c"}, {file = "pydantic-1.10.9-cp37-cp37m-win_amd64.whl", hash = "sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29"},
{file = "pydantic-1.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ced8375969673929809d7f36ad322934c35de4af3b5e5b09ec967c21f9f7887"}, {file = "pydantic-1.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82"},
{file = "pydantic-1.10.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93e6bcfccbd831894a6a434b0aeb1947f9e70b7468f274154d03d71fabb1d7c6"}, {file = "pydantic-1.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6"},
{file = "pydantic-1.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:191ba419b605f897ede9892f6c56fb182f40a15d309ef0142212200a10af4c18"}, {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766"},
{file = "pydantic-1.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:052d8654cb65174d6f9490cc9b9a200083a82cf5c3c5d3985db765757eb3b375"}, {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3"},
{file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ceb6a23bf1ba4b837d0cfe378329ad3f351b5897c8d4914ce95b85fba96da5a1"}, {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572"},
{file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f2e754d5566f050954727c77f094e01793bcb5725b663bf628fa6743a5a9108"}, {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e"},
{file = "pydantic-1.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:6a82d6cda82258efca32b40040228ecf43a548671cb174a1e81477195ed3ed56"}, {file = "pydantic-1.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb"},
{file = "pydantic-1.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e59417ba8a17265e632af99cc5f35ec309de5980c440c255ab1ca3ae96a3e0e"}, {file = "pydantic-1.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298"},
{file = "pydantic-1.10.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84d80219c3f8d4cad44575e18404099c76851bc924ce5ab1c4c8bb5e2a2227d0"}, {file = "pydantic-1.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276"},
{file = "pydantic-1.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e4148e635994d57d834be1182a44bdb07dd867fa3c2d1b37002000646cc5459"}, {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60"},
{file = "pydantic-1.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f7b0bf8553e310e530e9f3a2f5734c68699f42218bf3568ef49cd9b0e44df4"}, {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc"},
{file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42aa0c4b5c3025483240a25b09f3c09a189481ddda2ea3a831a9d25f444e03c1"}, {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a"},
{file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17aef11cc1b997f9d574b91909fed40761e13fac438d72b81f902226a69dac01"}, {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4"},
{file = "pydantic-1.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:66a703d1983c675a6e0fed8953b0971c44dba48a929a2000a493c3772eb61a5a"}, {file = "pydantic-1.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1"},
{file = "pydantic-1.10.8-py3-none-any.whl", hash = "sha256:7456eb22ed9aaa24ff3e7b4757da20d9e5ce2a81018c1b3ebd81a0b88a18f3b2"}, {file = "pydantic-1.10.9-py3-none-any.whl", hash = "sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305"},
{file = "pydantic-1.10.8.tar.gz", hash = "sha256:1410275520dfa70effadf4c21811d755e7ef9bb1f1d077a21958153a92c8d9ca"}, {file = "pydantic-1.10.9.tar.gz", hash = "sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be"},
] ]
[package.dependencies] [package.dependencies]
@ -1044,14 +1079,14 @@ plugins = ["importlib-metadata"]
[[package]] [[package]]
name = "pyright" name = "pyright"
version = "1.1.311" version = "1.1.315"
description = "Command line wrapper for pyright" description = "Command line wrapper for pyright"
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "pyright-1.1.311-py3-none-any.whl", hash = "sha256:04df30c6b31d05068effe5563411291c876f5e4221d0af225a267b61dce1ca85"}, {file = "pyright-1.1.315-py3-none-any.whl", hash = "sha256:262744daa7455f6056f6d6609b6278258e2fd7bd100d8937203516ee71d0eb93"},
{file = "pyright-1.1.311.tar.gz", hash = "sha256:554b555d3f770e8da2e76d6bb94e2ac63b3edc7dcd5fb8de202f9dd53e36689a"}, {file = "pyright-1.1.315.tar.gz", hash = "sha256:f124400a1a72ccc5fd04836e7e48ed235e8f7929bcc42b270a571fb34df17979"},
] ]
[package.dependencies] [package.dependencies]
@ -1064,14 +1099,14 @@ dev = ["twine (>=3.4.1)"]
[[package]] [[package]]
name = "pytest" name = "pytest"
version = "7.3.1" version = "7.4.0"
description = "pytest: simple powerful testing with Python" description = "pytest: simple powerful testing with Python"
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"}, {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"},
{file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"}, {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"},
] ]
[package.dependencies] [package.dependencies]
@ -1084,7 +1119,7 @@ pluggy = ">=0.12,<2.0"
tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
[package.extras] [package.extras]
testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
[[package]] [[package]]
name = "pytest-asyncio" name = "pytest-asyncio"
@ -1127,14 +1162,14 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale
[[package]] [[package]]
name = "pytest-mock" name = "pytest-mock"
version = "3.10.0" version = "3.11.1"
description = "Thin-wrapper around the mock package for easier use with pytest" description = "Thin-wrapper around the mock package for easier use with pytest"
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "pytest-mock-3.10.0.tar.gz", hash = "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f"}, {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
{file = "pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"}, {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
] ]
[package.dependencies] [package.dependencies]
@ -1326,18 +1361,18 @@ idna2008 = ["idna"]
[[package]] [[package]]
name = "rich" name = "rich"
version = "13.4.1" version = "13.4.2"
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7.0" python-versions = ">=3.7.0"
files = [ files = [
{file = "rich-13.4.1-py3-none-any.whl", hash = "sha256:d204aadb50b936bf6b1a695385429d192bc1fdaf3e8b907e8e26f4c4e4b5bf75"}, {file = "rich-13.4.2-py3-none-any.whl", hash = "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec"},
{file = "rich-13.4.1.tar.gz", hash = "sha256:76f6b65ea7e5c5d924ba80e322231d7cb5b5981aa60bfc1e694f1bc097fe6fe1"}, {file = "rich-13.4.2.tar.gz", hash = "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"},
] ]
[package.dependencies] [package.dependencies]
markdown-it-py = ">=2.2.0,<3.0.0" markdown-it-py = ">=2.2.0"
pygments = ">=2.13.0,<3.0.0" pygments = ">=2.13.0,<3.0.0"
typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""}
@ -1372,14 +1407,14 @@ files = [
[[package]] [[package]]
name = "setuptools" name = "setuptools"
version = "67.8.0" version = "68.0.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages" description = "Easily download, build, install, upgrade, and uninstall Python packages"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"},
{file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"},
] ]
[package.extras] [package.extras]
@ -1463,7 +1498,7 @@ files = [
] ]
[package.dependencies] [package.dependencies]
greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and platform_machine == \"aarch64\" or python_version >= \"3\" and platform_machine == \"ppc64le\" or python_version >= \"3\" and platform_machine == \"x86_64\" or python_version >= \"3\" and platform_machine == \"amd64\" or python_version >= \"3\" and platform_machine == \"AMD64\" or python_version >= \"3\" and platform_machine == \"win32\" or python_version >= \"3\" and platform_machine == \"WIN32\""}
importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
[package.extras] [package.extras]
@ -1657,14 +1692,14 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6.
[[package]] [[package]]
name = "typing-extensions" name = "typing-extensions"
version = "4.6.2" version = "4.6.3"
description = "Backported and Experimental Type Hints for Python 3.7+" description = "Backported and Experimental Type Hints for Python 3.7+"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "typing_extensions-4.6.2-py3-none-any.whl", hash = "sha256:3a8b36f13dd5fdc5d1b16fe317f5668545de77fa0b8e02006381fd49d731ab98"}, {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"},
{file = "typing_extensions-4.6.2.tar.gz", hash = "sha256:06006244c70ac8ee83fa8282cb188f697b8db25bc8b4df07be1873c43897060c"}, {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"},
] ]
[[package]] [[package]]
@ -1689,24 +1724,24 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)",
[[package]] [[package]]
name = "virtualenv" name = "virtualenv"
version = "20.23.0" version = "20.23.1"
description = "Virtual Python Environment builder" description = "Virtual Python Environment builder"
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"}, {file = "virtualenv-20.23.1-py3-none-any.whl", hash = "sha256:34da10f14fea9be20e0fd7f04aba9732f84e593dac291b757ce42e3368a39419"},
{file = "virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"}, {file = "virtualenv-20.23.1.tar.gz", hash = "sha256:8ff19a38c1021c742148edc4f81cb43d7f8c6816d2ede2ab72af5b84c749ade1"},
] ]
[package.dependencies] [package.dependencies]
distlib = ">=0.3.6,<1" distlib = ">=0.3.6,<1"
filelock = ">=3.11,<4" filelock = ">=3.12,<4"
platformdirs = ">=3.2,<4" platformdirs = ">=3.5.1,<4"
[package.extras] [package.extras]
docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.7.1)", "time-machine (>=2.9)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezer (>=0.4.6)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.8)", "time-machine (>=2.9)"]
[[package]] [[package]]
name = "watchdog" name = "watchdog"

View File

@ -1 +0,0 @@
"""The Pynecone compiler."""

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
"""Pynecone utiiities."""

View File

@ -1,5 +1,5 @@
[tool.poetry] [tool.poetry]
name = "pynecone" name = "reflex"
version = "0.1.34" version = "0.1.34"
description = "Web apps in pure Python." description = "Web apps in pure Python."
license = "Apache-2.0" license = "Apache-2.0"
@ -19,7 +19,7 @@ classifiers = [
"Development Status :: 4 - Beta", "Development Status :: 4 - Beta",
] ]
packages = [ packages = [
{include = "pynecone"} {include = "reflex"}
] ]
[tool.poetry.dependencies] [tool.poetry.dependencies]
@ -62,7 +62,7 @@ asynctest = "^0.13.0"
pre-commit = {version = "^3.2.1", python = ">=3.8,<4.0"} pre-commit = {version = "^3.2.1", python = ">=3.8,<4.0"}
[tool.poetry.scripts] [tool.poetry.scripts]
pc = "pynecone.pc:main" reflex = "reflex.reflex:main"
[build-system] [build-system]
requires = ["poetry-core>=1.5.1"] requires = ["poetry-core>=1.5.1"]
@ -82,4 +82,4 @@ target-version = "py37"
"__init__.py" = ["F401"] "__init__.py" = ["F401"]
"tests/*.py" = ["D100", "D103", "D104"] "tests/*.py" = ["D100", "D103", "D104"]
"pynecone/.templates/*.py" = ["D100", "D103", "D104"] "reflex/.templates/*.py" = ["D100", "D103", "D104"]

View File

@ -1,10 +1,10 @@
"""Welcome to Pynecone! This file create a counter app.""" """Welcome to Reflex! This file creates a counter app."""
import random import random
import pynecone as pc import reflex as rx
class State(pc.State): class State(rx.State):
"""The app state.""" """The app state."""
count = 0 count = 0
@ -22,19 +22,19 @@ class State(pc.State):
self.count = random.randint(0, 100) self.count = random.randint(0, 100)
def index() -> pc.Component: def index() -> rx.Component:
return pc.center( return rx.center(
pc.vstack( rx.vstack(
pc.heading(State.count), rx.heading(State.count),
pc.hstack( rx.hstack(
pc.button("Decrement", on_click=State.decrement, color_scheme="red"), rx.button("Decrement", on_click=State.decrement, color_scheme="red"),
pc.button( rx.button(
"Randomize", "Randomize",
on_click=State.random, on_click=State.random,
background_image="linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(0,176,34,1) 100%)", background_image="linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(0,176,34,1) 100%)",
color="white", color="white",
), ),
pc.button("Increment", on_click=State.increment, color_scheme="green"), rx.button("Increment", on_click=State.increment, color_scheme="green"),
), ),
padding="1em", padding="1em",
bg="#ededed", bg="#ededed",
@ -48,6 +48,6 @@ def index() -> pc.Component:
# Add state and page to the app. # Add state and page to the app.
app = pc.App(state=State) app = rx.App(state=State)
app.add_page(index, title="Counter") app.add_page(index, title="Counter")
app.compile() app.compile()

View File

@ -1,32 +1,32 @@
"""Welcome to Pynecone! This file outlines the steps to create a basic app.""" """Welcome to Reflex! This file outlines the steps to create a basic app."""
from pcconfig import config from rxconfig import config
import pynecone as pc import reflex as rx
docs_url = "https://pynecone.io/docs/getting-started/introduction" docs_url = "https://pynecone.io/docs/getting-started/introduction"
filename = f"{config.app_name}/{config.app_name}.py" filename = f"{config.app_name}/{config.app_name}.py"
class State(pc.State): class State(rx.State):
"""The app state.""" """The app state."""
pass pass
def index() -> pc.Component: def index() -> rx.Component:
return pc.fragment( return rx.fragment(
pc.color_mode_button(pc.color_mode_icon(), float="right"), rx.color_mode_button(rx.color_mode_icon(), float="right"),
pc.vstack( rx.vstack(
pc.heading("Welcome to Pynecone!", font_size="2em"), rx.heading("Welcome to Reflex!", font_size="2em"),
pc.box("Get started by editing ", pc.code(filename, font_size="1em")), rx.box("Get started by editing ", rx.code(filename, font_size="1em")),
pc.link( rx.link(
"Check out our docs!", "Check out our docs!",
href=docs_url, href=docs_url,
border="0.1em solid", border="0.1em solid",
padding="0.5em", padding="0.5em",
border_radius="0.5em", border_radius="0.5em",
_hover={ _hover={
"color": pc.color_mode_cond( "color": rx.color_mode_cond(
light="rgb(107,99,246)", light="rgb(107,99,246)",
dark="rgb(179, 175, 255)", dark="rgb(179, 175, 255)",
) )
@ -40,6 +40,6 @@ def index() -> pc.Component:
# Add state and page to the app. # Add state and page to the app.
app = pc.App(state=State) app = rx.App(state=State)
app.add_page(index) app.add_page(index)
app.compile() app.compile()

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,10 +1,10 @@
import pynecone as pc import reflex as rx
class {{ config_name }}(pc.Config): class {{ config_name }}(rx.Config):
pass pass
config = {{ config_name }}( config = {{ config_name }}(
app_name="{{ app_name }}", app_name="{{ app_name }}",
db_url="{{ const.db_url }}", db_url="{{ const.db_url }}",
env=pc.Env.DEV, env=rx.Env.DEV,
) )

View File

@ -1,5 +1,5 @@
{ {
"name": "pynecone", "name": "reflex",
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev",
"export": "next build && next export -o _static", "export": "next build && next export -o _static",

View File

@ -1,4 +1,4 @@
// State management for Pynecone web apps. // State management for Reflex web apps.
import axios from "axios"; import axios from "axios";
import io from "socket.io-client"; import io from "socket.io-client";
import JSON5 from "json5"; import JSON5 from "json5";

View File

@ -1,6 +1,6 @@
"""Import all classes and functions the end user will need to make an app. """Import all classes and functions the end user will need to make an app.
Anything imported here will be available in the default Pynecone import as `pc.*`. Anything imported here will be available in the default Reflex import as `rx.*`.
To signal to typecheckers that something should be reexported, To signal to typecheckers that something should be reexported,
we use the Flask "import name as name" syntax. we use the Flask "import name as name" syntax.
""" """

View File

@ -1,4 +1,4 @@
"""The Pynecone Admin Dashboard.""" """The Reflex Admin Dashboard."""
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import Optional from typing import Optional

View File

@ -1,4 +1,4 @@
"""The main Pynecone app.""" """The main Reflex app."""
import asyncio import asyncio
import inspect import inspect
@ -22,26 +22,26 @@ from socketio import ASGIApp, AsyncNamespace, AsyncServer
from starlette_admin.contrib.sqla.admin import Admin from starlette_admin.contrib.sqla.admin import Admin
from starlette_admin.contrib.sqla.view import ModelView from starlette_admin.contrib.sqla.view import ModelView
from pynecone import constants from reflex import constants
from pynecone.admin import AdminDash from reflex.admin import AdminDash
from pynecone.base import Base from reflex.base import Base
from pynecone.compiler import compiler from reflex.compiler import compiler
from pynecone.compiler import utils as compiler_utils from reflex.compiler import utils as compiler_utils
from pynecone.components.component import Component, ComponentStyle from reflex.components.component import Component, ComponentStyle
from pynecone.components.layout.fragment import Fragment from reflex.components.layout.fragment import Fragment
from pynecone.config import get_config from reflex.config import get_config
from pynecone.event import Event, EventHandler, EventSpec from reflex.event import Event, EventHandler, EventSpec
from pynecone.middleware import HydrateMiddleware, Middleware from reflex.middleware import HydrateMiddleware, Middleware
from pynecone.model import Model from reflex.model import Model
from pynecone.route import ( from reflex.route import (
DECORATED_ROUTES, DECORATED_ROUTES,
catchall_in_route, catchall_in_route,
catchall_prefix, catchall_prefix,
get_route_args, get_route_args,
verify_route_validity, verify_route_validity,
) )
from pynecone.state import DefaultState, State, StateManager, StateUpdate from reflex.state import DefaultState, State, StateManager, StateUpdate
from pynecone.utils import format, types from reflex.utils import format, types
# Define custom types. # Define custom types.
ComponentCallable = Callable[[], Component] ComponentCallable = Callable[[], Component]
@ -49,7 +49,7 @@ Reducer = Callable[[Event], Coroutine[Any, Any, StateUpdate]]
class App(Base): class App(Base):
"""A Pynecone application.""" """A Reflex application."""
# A map from a page route to the component to render. # A map from a page route to the component to render.
pages: Dict[str, Component] = {} pages: Dict[str, Component] = {}
@ -424,7 +424,7 @@ class App(Base):
if config.admin_dash.admin if config.admin_dash.admin
else Admin( else Admin(
engine=Model.get_db_engine(), engine=Model.get_db_engine(),
title="Pynecone Admin Dashboard", title="Reflex Admin Dashboard",
logo_url="https://pynecone.io/logo.png", logo_url="https://pynecone.io/logo.png",
) )
) )
@ -600,7 +600,7 @@ def upload(app: App):
if not handler_upload_param: if not handler_upload_param:
raise ValueError( raise ValueError(
f"`{handler}` handler should have a parameter annotated as List[" f"`{handler}` handler should have a parameter annotated as List["
f"pc.UploadFile]" f"rx.UploadFile]"
) )
event = Event( event = Event(

View File

@ -1,17 +1,14 @@
"""Define the base Pynecone class.""" """Define the base Reflex class."""
from __future__ import annotations from __future__ import annotations
from typing import Any, Dict, TypeVar from typing import Any, Dict
import pydantic import pydantic
from pydantic.fields import ModelField from pydantic.fields import ModelField
# Typevar to represent any class subclassing Base.
PcType = TypeVar("PcType")
class Base(pydantic.BaseModel): class Base(pydantic.BaseModel):
"""The base class subclassed by all Pynecone classes. """The base class subclassed by all Reflex classes.
This class wraps Pydantic and provides common methods such as This class wraps Pydantic and provides common methods such as
serialization and setting fields. serialization and setting fields.
@ -35,7 +32,7 @@ class Base(pydantic.BaseModel):
""" """
return self.__config__.json_dumps(self.dict(), default=list) return self.__config__.json_dumps(self.dict(), default=list)
def set(self: PcType, **kwargs) -> PcType: def set(self, **kwargs):
"""Set multiple fields and return the object. """Set multiple fields and return the object.
Args: Args:

View File

@ -0,0 +1 @@
"""The Reflex compiler."""

View File

@ -1,18 +1,18 @@
"""Compiler for the pynecone apps.""" """Compiler for the reflex apps."""
from __future__ import annotations from __future__ import annotations
from functools import wraps from functools import wraps
from typing import Callable, List, Set, Tuple, Type from typing import Callable, List, Set, Tuple, Type
from pynecone import constants from reflex import constants
from pynecone.compiler import templates, utils from reflex.compiler import templates, utils
from pynecone.components.component import Component, CustomComponent from reflex.components.component import Component, CustomComponent
from pynecone.state import State from reflex.state import State
from pynecone.style import Style from reflex.style import Style
from pynecone.utils import imports from reflex.utils import imports
from pynecone.vars import ImportVar from reflex.vars import ImportVar
# Imports to be included in every Pynecone app. # Imports to be included in every Reflex app.
DEFAULT_IMPORTS: imports.ImportDict = { DEFAULT_IMPORTS: imports.ImportDict = {
"react": { "react": {
ImportVar(tag="Fragment"), ImportVar(tag="Fragment"),

View File

@ -1,13 +1,13 @@
"""Templates to use in the pynecone compiler.""" """Templates to use in the reflex compiler."""
from jinja2 import Environment, FileSystemLoader, Template from jinja2 import Environment, FileSystemLoader, Template
from pynecone import constants from reflex import constants
from pynecone.utils import path_ops from reflex.utils import path_ops
from pynecone.utils.format import json_dumps from reflex.utils.format import json_dumps
class PyneconeJinjaEnvironment(Environment): class ReflexJinjaEnvironment(Environment):
"""The template class for jinja environment.""" """The template class for jinja environment."""
def __init__(self) -> None: def __init__(self) -> None:
@ -53,11 +53,11 @@ def get_template(name: str) -> Template:
Returns: Returns:
A render function. A render function.
""" """
return PyneconeJinjaEnvironment().get_template(name=name) return ReflexJinjaEnvironment().get_template(name=name)
# Template for the Pynecone config file. # Template for the Reflex config file.
PCCONFIG = get_template("app/pcconfig.py.jinja2") RXCONFIG = get_template("app/rxconfig.py.jinja2")
# Code to render a NextJS Document root. # Code to render a NextJS Document root.
DOCUMENT_ROOT = get_template("web/pages/_document.js.jinja2") DOCUMENT_ROOT = get_template("web/pages/_document.js.jinja2")

View File

@ -3,8 +3,8 @@
import os import os
from typing import Dict, List, Optional, Set, Tuple, Type from typing import Dict, List, Optional, Set, Tuple, Type
from pynecone import constants from reflex import constants
from pynecone.components.base import ( from reflex.components.base import (
Body, Body,
ColorModeScript, ColorModeScript,
Description, Description,
@ -18,12 +18,12 @@ from pynecone.components.base import (
Script, Script,
Title, Title,
) )
from pynecone.components.component import Component, CustomComponent from reflex.components.component import Component, CustomComponent
from pynecone.event import get_hydrate_event from reflex.event import get_hydrate_event
from pynecone.state import State from reflex.state import State
from pynecone.style import Style from reflex.style import Style
from pynecone.utils import format, imports, path_ops from reflex.utils import format, imports, path_ops
from pynecone.vars import ImportVar from reflex.vars import ImportVar
# To re-export this function. # To re-export this function.
merge_imports = imports.merge_imports merge_imports = imports.merge_imports

View File

@ -3,10 +3,10 @@ from __future__ import annotations
from typing import Any from typing import Any
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.tags import Tag from reflex.components.tags import Tag
from pynecone.components.tags.tagless import Tagless from reflex.components.tags.tagless import Tagless
from pynecone.vars import Var from reflex.vars import Var
class Bare(Component): class Bare(Component):

View File

@ -1,6 +1,6 @@
"""Display the page body.""" """Display the page body."""
from pynecone.components.component import Component from reflex.components.component import Component
class Body(Component): class Body(Component):

View File

@ -1,7 +1,7 @@
"""Document components.""" """Document components."""
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
class NextDocumentLib(Component): class NextDocumentLib(Component):

View File

@ -1,6 +1,6 @@
"""The head component.""" """The head component."""
from pynecone.components.component import Component from reflex.components.component import Component
class NextHeadLib(Component): class NextHeadLib(Component):

View File

@ -1,8 +1,8 @@
"""Display the title of the current page.""" """Display the title of the current page."""
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.vars import Var from reflex.vars import Var
class RawLink(Component): class RawLink(Component):

View File

@ -2,8 +2,8 @@
from typing import Dict, Optional from typing import Dict, Optional
from pynecone.components.base.bare import Bare from reflex.components.base.bare import Bare
from pynecone.components.component import Component from reflex.components.component import Component
class Title(Component): class Title(Component):

View File

@ -7,10 +7,10 @@ from abc import ABC
from functools import wraps from functools import wraps
from typing import Any, Callable, Dict, List, Optional, Set, Type, Union from typing import Any, Callable, Dict, List, Optional, Set, Type, Union
from pynecone import constants from reflex import constants
from pynecone.base import Base from reflex.base import Base
from pynecone.components.tags import Tag from reflex.components.tags import Tag
from pynecone.event import ( from reflex.event import (
EVENT_ARG, EVENT_ARG,
EVENT_TRIGGERS, EVENT_TRIGGERS,
EventChain, EventChain,
@ -20,13 +20,13 @@ from pynecone.event import (
call_event_handler, call_event_handler,
get_handler_args, get_handler_args,
) )
from pynecone.style import Style from reflex.style import Style
from pynecone.utils import format, imports, types from reflex.utils import format, imports, types
from pynecone.vars import BaseVar, ImportVar, Var from reflex.vars import BaseVar, ImportVar, Var
class Component(Base, ABC): class Component(Base, ABC):
"""The base class for all Pynecone components.""" """The base class for all Reflex components."""
# The children nested within the component. # The children nested within the component.
children: List[Component] = [] children: List[Component] = []
@ -376,14 +376,14 @@ class Component(Base, ABC):
TypeError: If an invalid child is passed. TypeError: If an invalid child is passed.
""" """
# Import here to avoid circular imports. # Import here to avoid circular imports.
from pynecone.components.base.bare import Bare from reflex.components.base.bare import Bare
# Validate all the children. # Validate all the children.
for child in children: for child in children:
# Make sure the child is a valid type. # Make sure the child is a valid type.
if not types._isinstance(child, ComponentChild): if not types._isinstance(child, ComponentChild):
raise TypeError( raise TypeError(
"Children of Pynecone components must be other components, " "Children of Reflex components must be other components, "
"state vars, or primitive Python types. " "state vars, or primitive Python types. "
f"Got child {child} of type {type(child)}.", f"Got child {child} of type {type(child)}.",
) )

View File

@ -1,7 +1,7 @@
"""Badge component.""" """Badge component."""
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Badge(ChakraComponent): class Badge(ChakraComponent):

View File

@ -2,15 +2,15 @@
from typing import Dict from typing import Dict
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.forms import Button from reflex.components.forms import Button
from pynecone.components.layout import Box from reflex.components.layout import Box
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.components.media import Icon from reflex.components.media import Icon
from pynecone.event import set_clipboard from reflex.event import set_clipboard
from pynecone.style import Style from reflex.style import Style
from pynecone.utils import imports from reflex.utils import imports
from pynecone.vars import ImportVar, Var from reflex.vars import ImportVar, Var
# Path to the prism styles. # Path to the prism styles.
PRISM_STYLES_PATH = "/styles/code/prism" PRISM_STYLES_PATH = "/styles/code/prism"

View File

@ -2,10 +2,10 @@
from typing import Any, List from typing import Any, List
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.tags import Tag from reflex.components.tags import Tag
from pynecone.utils import format, imports, types from reflex.utils import format, imports, types
from pynecone.vars import BaseVar, ComputedVar, ImportVar, Var from reflex.vars import BaseVar, ComputedVar, ImportVar, Var
class Gridjs(Component): class Gridjs(Component):

View File

@ -1,7 +1,7 @@
"""A line to divide parts of the layout.""" """A line to divide parts of the layout."""
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Divider(ChakraComponent): class Divider(ChakraComponent):

View File

@ -1,6 +1,6 @@
"""A Keyboard Key Component.""" """A Keyboard Key Component."""
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
class KeyboardKey(ChakraComponent): class KeyboardKey(ChakraComponent):

View File

@ -1,9 +1,9 @@
"""List components.""" """List components."""
from pynecone.components import Component from reflex.components import Component
from pynecone.components.layout.foreach import Foreach from reflex.components.layout.foreach import Foreach
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class List(ChakraComponent): class List(ChakraComponent):

View File

@ -1,8 +1,8 @@
"""Statistics components.""" """Statistics components."""
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Stat(ChakraComponent): class Stat(ChakraComponent):

View File

@ -1,10 +1,10 @@
"""Table components.""" """Table components."""
from typing import List from typing import List
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.layout.foreach import Foreach from reflex.components.layout.foreach import Foreach
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Table(ChakraComponent): class Table(ChakraComponent):

View File

@ -1,9 +1,9 @@
"""Chakra Tag Component.""" """Chakra Tag Component."""
from typing import Optional from typing import Optional
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class TagLabel(ChakraComponent): class TagLabel(ChakraComponent):
@ -65,9 +65,9 @@ class Tag(ChakraComponent):
Args: Args:
label (Component): The label of the Tag that will be created. label (Component): The label of the Tag that will be created.
left_icon (Optional[Component]): Should be a pc.TagLeftIcon instance. left_icon (Optional[Component]): Should be a rx.TagLeftIcon instance.
right_icon (Optional[Component]): Should be a pc.TagRightIcon instance. right_icon (Optional[Component]): Should be a rx.TagRightIcon instance.
close_button (Optional[Component]): Should be a pc.TagCloseButton instance. close_button (Optional[Component]): Should be a rx.TagCloseButton instance.
props: The properties to be passed to the component. props: The properties to be passed to the component.
Returns: Returns:

View File

@ -2,9 +2,9 @@
from typing import List, Optional, Union from typing import List, Optional, Union
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Accordion(ChakraComponent): class Accordion(ChakraComponent):

View File

@ -1,8 +1,8 @@
"""Tab components.""" """Tab components."""
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Tabs(ChakraComponent): class Tabs(ChakraComponent):

View File

@ -1,8 +1,8 @@
"""A transition Component.""" """A transition Component."""
from typing import Union from typing import Union
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Transition(ChakraComponent): class Transition(ChakraComponent):

View File

@ -1,6 +1,6 @@
"""A component to display visually hidden text.""" """A component to display visually hidden text."""
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
class VisuallyHidden(ChakraComponent): class VisuallyHidden(ChakraComponent):

View File

@ -1,8 +1,8 @@
"""Alert components.""" """Alert components."""
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Alert(ChakraComponent): class Alert(ChakraComponent):

View File

@ -1,8 +1,8 @@
"""Container to stack elements with spacing.""" """Container to stack elements with spacing."""
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class CircularProgress(ChakraComponent): class CircularProgress(ChakraComponent):

View File

@ -2,8 +2,8 @@
from typing import Union from typing import Union
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Progress(ChakraComponent): class Progress(ChakraComponent):

View File

@ -1,7 +1,7 @@
"""Container to stack elements with spacing.""" """Container to stack elements with spacing."""
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Skeleton(ChakraComponent): class Skeleton(ChakraComponent):

View File

@ -1,7 +1,7 @@
"""Container to stack elements with spacing.""" """Container to stack elements with spacing."""
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Spinner(ChakraComponent): class Spinner(ChakraComponent):

View File

@ -1,7 +1,7 @@
"""A button component.""" """A button component."""
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Button(ChakraComponent): class Button(ChakraComponent):

View File

@ -2,9 +2,9 @@
from typing import Dict from typing import Dict
from pynecone.components.component import EVENT_ARG from reflex.components.component import EVENT_ARG
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Checkbox(ChakraComponent): class Checkbox(ChakraComponent):

View File

@ -3,10 +3,10 @@
To style components based on color mode, use style props with `color_mode_cond`: To style components based on color mode, use style props with `color_mode_cond`:
``` ```
pc.text( rx.text(
"Hover over me", "Hover over me",
_hover={ _hover={
"background": pc.color_mode_cond( "background": rx.color_mode_cond(
light="var(--chakra-colors-gray-200)", light="var(--chakra-colors-gray-200)",
dark="var(--chakra-colors-gray-700)", dark="var(--chakra-colors-gray-700)",
), ),
@ -18,11 +18,11 @@ from __future__ import annotations
from typing import Any from typing import Any
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.layout.cond import Cond, cond from reflex.components.layout.cond import Cond, cond
from pynecone.components.media.icon import Icon from reflex.components.media.icon import Icon
from pynecone.style import color_mode, toggle_color_mode from reflex.style import color_mode, toggle_color_mode
from pynecone.vars import BaseVar from reflex.vars import BaseVar
from .button import Button from .button import Button
from .switch import Switch from .switch import Switch

View File

@ -2,8 +2,8 @@
from typing import Set from typing import Set
from pynecone.components import Component from reflex.components import Component
from pynecone.vars import Var from reflex.vars import Var
class CopyToClipboard(Component): class CopyToClipboard(Component):

View File

@ -1,7 +1,7 @@
"""A date input component.""" """A date input component."""
from pynecone.components.forms.input import Input from reflex.components.forms.input import Input
from pynecone.vars import Var from reflex.vars import Var
class DatePicker(Input): class DatePicker(Input):

View File

@ -1,7 +1,7 @@
"""A datetime-local input component.""" """A datetime-local input component."""
from pynecone.components.forms.input import Input from reflex.components.forms.input import Input
from pynecone.vars import Var from reflex.vars import Var
class DateTimePicker(Input): class DateTimePicker(Input):

View File

@ -2,9 +2,9 @@
from typing import Dict from typing import Dict
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.event import EVENT_ARG from reflex.event import EVENT_ARG
from pynecone.vars import Var from reflex.vars import Var
class Editable(ChakraComponent): class Editable(ChakraComponent):

View File

@ -1,7 +1,7 @@
"""An email input component.""" """An email input component."""
from pynecone.components.forms.input import Input from reflex.components.forms.input import Input
from pynecone.vars import Var from reflex.vars import Var
class Email(Input): class Email(Input):

View File

@ -2,9 +2,9 @@
from typing import Dict from typing import Dict
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.vars import Var from reflex.vars import Var
class Form(ChakraComponent): class Form(ChakraComponent):

View File

@ -1,7 +1,7 @@
"""An icon button component.""" """An icon button component."""
from pynecone.components.typography.text import Text from reflex.components.typography.text import Text
from pynecone.vars import Var from reflex.vars import Var
class IconButton(Text): class IconButton(Text):

View File

@ -2,10 +2,10 @@
from typing import Dict from typing import Dict
from pynecone.components.component import EVENT_ARG from reflex.components.component import EVENT_ARG
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.utils import imports from reflex.utils import imports
from pynecone.vars import ImportVar, Var from reflex.vars import ImportVar, Var
class Input(ChakraComponent): class Input(ChakraComponent):

View File

@ -2,10 +2,10 @@
from typing import Any, Dict, List, Optional, Set, Union from typing import Any, Dict, List, Optional, Set, Union
from pynecone.base import Base from reflex.base import Base
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.event import EVENT_ARG from reflex.event import EVENT_ARG
from pynecone.vars import Var from reflex.vars import Var
class Option(Base): class Option(Base):

View File

@ -2,10 +2,10 @@
from typing import Dict from typing import Dict
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.event import EVENT_ARG from reflex.event import EVENT_ARG
from pynecone.vars import Var from reflex.vars import Var
class NumberInput(ChakraComponent): class NumberInput(ChakraComponent):

View File

@ -1,7 +1,7 @@
"""A password input component.""" """A password input component."""
from pynecone.components.forms.input import Input from reflex.components.forms.input import Input
from pynecone.vars import Var from reflex.vars import Var
class Password(Input): class Password(Input):

View File

@ -2,10 +2,10 @@
from typing import Dict from typing import Dict
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.event import EVENT_ARG from reflex.event import EVENT_ARG
from pynecone.vars import Var from reflex.vars import Var
class PinInput(ChakraComponent): class PinInput(ChakraComponent):

View File

@ -3,13 +3,13 @@
from typing import Any, Dict, List from typing import Any, Dict, List
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.layout.foreach import Foreach from reflex.components.layout.foreach import Foreach
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.components.typography.text import Text from reflex.components.typography.text import Text
from pynecone.event import EVENT_ARG from reflex.event import EVENT_ARG
from pynecone.utils import types from reflex.utils import types
from pynecone.vars import Var from reflex.vars import Var
class RadioGroup(ChakraComponent): class RadioGroup(ChakraComponent):

View File

@ -2,10 +2,10 @@
from typing import Dict, List from typing import Dict, List
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.event import EVENT_ARG from reflex.event import EVENT_ARG
from pynecone.vars import Var from reflex.vars import Var
class RangeSlider(ChakraComponent): class RangeSlider(ChakraComponent):

View File

@ -2,12 +2,12 @@
from typing import Any, Dict, List from typing import Any, Dict, List
from pynecone.components.component import EVENT_ARG, Component from reflex.components.component import EVENT_ARG, Component
from pynecone.components.layout.foreach import Foreach from reflex.components.layout.foreach import Foreach
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.components.typography.text import Text from reflex.components.typography.text import Text
from pynecone.utils import types from reflex.utils import types
from pynecone.vars import Var from reflex.vars import Var
class Select(ChakraComponent): class Select(ChakraComponent):

View File

@ -2,10 +2,10 @@
from typing import Dict from typing import Dict
from pynecone.components.component import Component from reflex.components.component import Component
from pynecone.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
from pynecone.event import EVENT_ARG from reflex.event import EVENT_ARG
from pynecone.vars import Var from reflex.vars import Var
class Slider(ChakraComponent): class Slider(ChakraComponent):

Some files were not shown because too many files have changed in this diff Show More