Rename pynecone to reflex (#1236)
This commit is contained in:
parent
d9e4d6d130
commit
139ce38df1
@ -1,5 +1,5 @@
|
||||
[run]
|
||||
source = pynecone
|
||||
source = reflex
|
||||
branch = true
|
||||
|
||||
[report]
|
||||
|
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -22,7 +22,7 @@ If applicable, add screenshots to help explain your problem.
|
||||
|
||||
** Specifics (please complete the following information):**
|
||||
- Python Version:
|
||||
- Pynecone Version:
|
||||
- Reflex Version:
|
||||
- OS:
|
||||
- Browser (Optional):
|
||||
|
||||
|
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@ -48,8 +48,8 @@ jobs:
|
||||
if: steps.cache-deps.outputs.cache-hit != 'true'
|
||||
- run: poetry install --no-interaction
|
||||
- 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: find pynecone tests -name "*.py" -not -path pynecone/pc.py | xargs poetry run darglint
|
||||
- run: poetry run black --check pynecone tests
|
||||
- run: find reflex tests -name "*.py" -not -path reflex/reflex.py | xargs poetry run darglint
|
||||
- run: poetry run black --check reflex tests
|
||||
- run: poetry run coverage html
|
||||
|
6
.github/workflows/integration_examples.yml
vendored
6
.github/workflows/integration_examples.yml
vendored
@ -31,8 +31,8 @@ jobs:
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
# Clone Pynecone Website Repo For integration tests
|
||||
- name: Clone Pynecone Examples Repo
|
||||
# Clone Reflex Website Repo For integration tests
|
||||
- name: Clone Reflex Examples Repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: pynecone-io/pynecone-examples
|
||||
@ -64,7 +64,7 @@ jobs:
|
||||
run: poetry run pip install -r requirements.txt
|
||||
- name: Init Website
|
||||
working-directory: ./pynecone-examples/counter
|
||||
run: poetry run pc init
|
||||
run: poetry run reflex init
|
||||
- name: Check for errors
|
||||
run: |
|
||||
chmod +x ./scripts/integration.sh
|
||||
|
6
.github/workflows/integration_website.yml
vendored
6
.github/workflows/integration_website.yml
vendored
@ -31,8 +31,8 @@ jobs:
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
# Clone Pynecone Website Repo For integration tests
|
||||
- name: Clone Pynecone Website Repo
|
||||
# Clone Reflex Website Repo For integration tests
|
||||
- name: Clone Reflex Website Repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: pynecone-io/pcweb
|
||||
@ -65,7 +65,7 @@ jobs:
|
||||
run: poetry run pip install -r requirements.txt && poetry run pip install googletrans
|
||||
- name: Init Website
|
||||
working-directory: ./pcweb
|
||||
run: poetry run pc init
|
||||
run: poetry run reflex init
|
||||
- name: Run Website and Check for errors
|
||||
run: |
|
||||
chmod +x ./scripts/integration.sh
|
||||
|
@ -8,17 +8,17 @@ repos:
|
||||
rev: v1.1.313
|
||||
hooks:
|
||||
- id: pyright
|
||||
args: [pynecone, tests]
|
||||
args: [reflex, tests]
|
||||
language: system
|
||||
|
||||
- repo: https://github.com/terrencepreilly/darglint
|
||||
rev: v1.8.1
|
||||
hooks:
|
||||
- id: darglint
|
||||
exclude: '^pynecone/pc.py'
|
||||
exclude: '^reflex/reflex.py'
|
||||
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 22.10.0
|
||||
hooks:
|
||||
- id: black
|
||||
args: [pynecone, tests]
|
||||
args: [reflex, tests]
|
||||
|
@ -1,43 +1,43 @@
|
||||
# Welcome to Pynecone contributing guide! 🥳
|
||||
# Welcome to Reflex contributing guide! 🥳
|
||||
|
||||
## 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
|
||||
|
||||
- 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
|
||||
|
||||
* #### 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
|
||||
|
||||
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 don’t 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 don’t 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
|
||||
Here is a quick guide to how the run Pynecone repo locally so you can start contributing to the project.
|
||||
## 💻 How to Run a Local Build of Reflex
|
||||
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
|
||||
git clone https://github.com/pynecone-io/pynecone.git
|
||||
```
|
||||
|
||||
Navigate into the repo:
|
||||
``` 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 your local Pynecone build:
|
||||
Install your local Reflex build:
|
||||
``` bash
|
||||
poetry install
|
||||
```
|
||||
@ -56,18 +56,18 @@ cd example
|
||||
|
||||
Now Init/Run
|
||||
``` bash
|
||||
poetry run pc init
|
||||
poetry run pc run
|
||||
poetry run reflex init
|
||||
poetry run reflex run
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
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?
|
||||
- Any feature or significant change that has been added.
|
||||
@ -77,11 +77,11 @@ What to unit test?
|
||||
|
||||
## ✅ 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.
|
||||
|
||||
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%.
|
||||
``` bash
|
||||
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.
|
||||
``` bash
|
||||
poetry run ruff check .
|
||||
poetry run pyright pynecone tests
|
||||
find pynecone tests -name "*.py" -not -path pynecone/pc.py | xargs poetry run darglint
|
||||
poetry run pyright reflex tests
|
||||
find reflex tests -name "*.py" -not -path reflex/reflex.py | xargs poetry run darglint
|
||||
```
|
||||
Finally, run `black` to format your code.
|
||||
``` 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.
|
||||
@ -103,4 +103,4 @@ Note that pre-commit will only be installed when you use a Python version >= 3.8
|
||||
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!
|
||||
|
2
LICENSE
2
LICENSE
@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2023, Pynecone Inc
|
||||
Copyright 2023, Pynecone, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
16
README.md
16
README.md
@ -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">
|
||||
|
||||
<img src="docs/images/cones.png">
|
||||
|
@ -1,6 +1,6 @@
|
||||
FROM python:3.11-slim as base
|
||||
|
||||
RUN adduser --disabled-password pynecone
|
||||
RUN adduser --disabled-password reflex
|
||||
|
||||
|
||||
FROM base as build
|
||||
@ -34,16 +34,16 @@ FROM runtime as init
|
||||
WORKDIR /app
|
||||
ENV BUN_INSTALL="/app/.bun"
|
||||
COPY --from=build /app/ /app/
|
||||
RUN pc init
|
||||
RUN reflex init
|
||||
|
||||
|
||||
FROM runtime
|
||||
|
||||
COPY --chown=pynecone --from=init /app/ /app/
|
||||
USER pynecone
|
||||
COPY --chown=reflex --from=init /app/ /app/
|
||||
USER reflex
|
||||
WORKDIR /app
|
||||
|
||||
CMD ["pc","run" , "--env", "prod"]
|
||||
CMD ["rx","run" , "--env", "prod"]
|
||||
|
||||
EXPOSE 3000
|
||||
EXPOSE 8000
|
||||
|
@ -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
|
||||
|
||||
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
|
||||
import pynecone as pc
|
||||
import reflex as rx
|
||||
|
||||
config = pc.Config(
|
||||
config = rx.Config(
|
||||
app_name="app",
|
||||
api_url="0.0.0.0:8000",
|
||||
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:
|
||||
|
||||
```bash
|
||||
docker build -t pynecone-project:latest .
|
||||
docker build -t reflex-project:latest .
|
||||
```
|
||||
|
||||
## Start Container Service
|
||||
|
||||
Finally, you can start your Pynecone container service as follows:
|
||||
Finally, you can start your Reflex container service as follows:
|
||||
|
||||
```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
|
||||
```
|
||||
|
@ -1 +1 @@
|
||||
pynecone
|
||||
reflex
|
||||
|
@ -7,9 +7,9 @@
|
||||
|
||||
📑 [Docs](https://pynecone.io/docs/getting-started/introduction) 📱 [Component Library](https://pynecone.io/docs/library) 🖼️ [Gallery](https://pynecone.io/docs/gallery) 🛸 [Deployment](https://pynecone.io/docs/hosting/deploy)
|
||||
|
||||
[](https://badge.fury.io/py/pynecone)
|
||||
[](https://badge.fury.io/py/reflex)
|
||||

|
||||

|
||||

|
||||
[](https://discord.gg/T5WSbC2YtQ)
|
||||
|
||||
</div>
|
||||
@ -24,25 +24,25 @@
|
||||
|
||||
## 📦 1. 安裝
|
||||
|
||||
Pynecone 需要以下最低要求:
|
||||
Reflex 需要以下最低要求:
|
||||
|
||||
- Python 3.7+
|
||||
- [Node.js 16.8.0+](https://nodejs.org/en/) (不用擔心,你不需要寫任何 JavaScript!)
|
||||
|
||||
```
|
||||
pip install pynecone
|
||||
pip install reflex
|
||||
```
|
||||
|
||||
## 🥳 2. 建立你的第一個應用程式
|
||||
|
||||
安裝 Pynecone 的同時也會安裝 `pc` 命令行工具. 通過創建一個新專案來測試是否安裝成功。
|
||||
安裝 Reflex 的同時也會安裝 `rx` 命令行工具. 通過創建一個新專案來測試是否安裝成功。
|
||||
|
||||
把 my_app_name 替代為你的專案名字:
|
||||
|
||||
```
|
||||
mkdir my_app_name
|
||||
cd my_app_name
|
||||
pc init
|
||||
reflex init
|
||||
```
|
||||
|
||||
當你第一次運行這個命令,將會自動下載與安裝 [bun](https://bun.sh/)。
|
||||
@ -54,12 +54,12 @@ pc init
|
||||
你可以在開發者模式運行這個應用程式:
|
||||
|
||||
```
|
||||
pc run
|
||||
reflex run
|
||||
```
|
||||
|
||||
你可以看到你的應用程式運行在 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
|
||||
import pynecone as pc
|
||||
import reflex as rx
|
||||
import openai
|
||||
|
||||
openai.api_key = "YOUR_API_KEY"
|
||||
|
||||
class State(pc.State):
|
||||
class State(rx.State):
|
||||
"""應用程式狀態"""
|
||||
prompt = ""
|
||||
image_url = ""
|
||||
@ -101,22 +101,22 @@ class State(pc.State):
|
||||
self.image_made = True
|
||||
|
||||
def index():
|
||||
return pc.center(
|
||||
pc.vstack(
|
||||
pc.heading("DALL·E", font_size="1.5em"),
|
||||
pc.input(placeholder="Enter a prompt..", on_blur=State.set_prompt),
|
||||
pc.button(
|
||||
return rx.center(
|
||||
rx.vstack(
|
||||
rx.heading("DALL·E", font_size="1.5em"),
|
||||
rx.input(placeholder="Enter a prompt..", on_blur=State.set_prompt),
|
||||
rx.button(
|
||||
"產生圖片",
|
||||
on_click=[State.process_image, State.get_image],
|
||||
width="100%",
|
||||
),
|
||||
pc.divider(),
|
||||
pc.cond(
|
||||
rx.divider(),
|
||||
rx.cond(
|
||||
State.image_processing,
|
||||
pc.circular_progress(is_indeterminate=True),
|
||||
pc.cond(
|
||||
rx.circular_progress(is_indeterminate=True),
|
||||
rx.cond(
|
||||
State.image_made,
|
||||
pc.image(
|
||||
rx.image(
|
||||
src=State.image_url,
|
||||
height="25em",
|
||||
width="25em",
|
||||
@ -134,18 +134,18 @@ def index():
|
||||
)
|
||||
|
||||
# 把狀態跟頁面添加到應用程式。
|
||||
app = pc.App(state=State)
|
||||
app.add_page(index, title="Pynecone:DALL·E")
|
||||
app = rx.App(state=State)
|
||||
app.add_page(index, title="Reflex:DALL·E")
|
||||
app.compile()
|
||||
```
|
||||
|
||||
### **Pynecone 中的圖形使用者介面**
|
||||
### **Reflex 中的圖形使用者介面**
|
||||
|
||||
讓我們分解以上步驟。
|
||||
|
||||
```python
|
||||
def index():
|
||||
return pc.center(
|
||||
return rx.center(
|
||||
...
|
||||
)
|
||||
```
|
||||
@ -155,15 +155,15 @@ def index():
|
||||
我們用不同的元件像是 `center`, `vstack`, `input`, 和 `button` 來建立前端, 元件之間可以相互嵌入,來建立複雜的佈局。
|
||||
並且你可以使用關鍵字參數來使用 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)。
|
||||
|
||||
### **狀態**
|
||||
|
||||
Pynecone 用 State 來渲染你的 UI。
|
||||
Reflex 用 State 來渲染你的 UI。
|
||||
|
||||
```python
|
||||
class State(pc.State):
|
||||
class State(rx.State):
|
||||
"""應用程式狀態"""
|
||||
prompt = ""
|
||||
image_url = ""
|
||||
@ -191,7 +191,7 @@ State 定義了應用程式中所有可以更改的變數及變更他們的 func
|
||||
self.image_made = True
|
||||
```
|
||||
|
||||
在 State 中我們定義了事件處理程序來更改狀態變數,事件處理程序是我們在 Pynecone 中修改狀態的方法,可以使用它們來回應使用者操作,像是點擊按鈕或在文字框輸入這些動作都是一種事件。
|
||||
在 State 中我們定義了事件處理程序來更改狀態變數,事件處理程序是我們在 Reflex 中修改狀態的方法,可以使用它們來回應使用者操作,像是點擊按鈕或在文字框輸入這些動作都是一種事件。
|
||||
|
||||
我們的 DALL·E. 應用程式有兩個事件處理程序 `process_image` 表示正在生成圖片和 `get_image` 呼叫 OpenAI API。
|
||||
|
||||
@ -200,36 +200,36 @@ State 定義了應用程式中所有可以更改的變數及變更他們的 func
|
||||
最後定義我們的應用程式並傳送狀態給它。
|
||||
|
||||
```python
|
||||
app = pc.App(state=State)
|
||||
app = rx.App(state=State)
|
||||
```
|
||||
|
||||
添加從應用程式根目錄到 index 元件的路由。 我們也添加了一個標題將會顯示在 預覽/瀏覽 分頁。
|
||||
|
||||
```python
|
||||
app.add_page(index, title="Pynecone:DALL-E")
|
||||
app.add_page(index, title="Reflex:DALL-E")
|
||||
app.compile()
|
||||
```
|
||||
|
||||
你可以藉由通過添加路由來增加更多頁面。
|
||||
|
||||
## Pynecone 狀態
|
||||
## Reflex 狀態
|
||||
|
||||
Pynecone 於 2022 年 12 月推出。
|
||||
Reflex 於 2022 年 12 月推出。
|
||||
|
||||
截至 2023 年 3 月,我們處於 **Public Beta** 階段。
|
||||
|
||||
- :white_check_mark: **Public Alpha**: 任何人都可以安裝與使用 Pynecone,或許包含問題, 但我們正在積極的解決他們。
|
||||
- :white_check_mark: **Public Alpha**: 任何人都可以安裝與使用 Reflex,或許包含問題, 但我們正在積極的解決他們。
|
||||
- :large_orange_diamond: **Public Beta**: 對於非軟體產品來說足夠穩定。
|
||||
- **Public Hosting Beta**: _Optionally_, 部屬跟託管你的 Pynecone!
|
||||
- **Public**: 這版本的 Pynecone 是可用於軟體產品的。
|
||||
- **Public Hosting Beta**: _Optionally_, 部屬跟託管你的 Reflex!
|
||||
- **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 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
327
poetry.lock
generated
@ -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]]
|
||||
name = "anyio"
|
||||
@ -285,18 +285,18 @@ test = ["pytest (>=6)"]
|
||||
|
||||
[[package]]
|
||||
name = "fastapi"
|
||||
version = "0.96.0"
|
||||
version = "0.96.1"
|
||||
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "fastapi-0.96.0-py3-none-any.whl", hash = "sha256:b8e11fe81e81eab4e1504209917338e0b80f783878a42c2b99467e5e1019a1e9"},
|
||||
{file = "fastapi-0.96.0.tar.gz", hash = "sha256:71232d47c2787446991c81c41c249f8a16238d52d779c0e6b43927d3773dbe3c"},
|
||||
{file = "fastapi-0.96.1-py3-none-any.whl", hash = "sha256:22d773ce95f14f04f8f37a0c8998fc163e67af83b65510d2879de6cbaaa10215"},
|
||||
{file = "fastapi-0.96.1.tar.gz", hash = "sha256:5c1d243030e63089ccfc0aec69c2da6d619943917727e8e82ee502358d5119bf"},
|
||||
]
|
||||
|
||||
[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"
|
||||
|
||||
[package.extras]
|
||||
@ -307,19 +307,19 @@ test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==23.1.0)", "coverage[toml] (>=6
|
||||
|
||||
[[package]]
|
||||
name = "filelock"
|
||||
version = "3.12.0"
|
||||
version = "3.12.2"
|
||||
description = "A platform independent file lock."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "filelock-3.12.0-py3-none-any.whl", hash = "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9"},
|
||||
{file = "filelock-3.12.0.tar.gz", hash = "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"},
|
||||
{file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"},
|
||||
{file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
docs = ["furo (>=2023.3.27)", "sphinx (>=6.1.3)", "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)"]
|
||||
docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
|
||||
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]]
|
||||
name = "greenlet"
|
||||
@ -506,14 +506,14 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "importlib-metadata"
|
||||
version = "6.6.0"
|
||||
version = "6.7.0"
|
||||
description = "Read metadata from Python packages"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"},
|
||||
{file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"},
|
||||
{file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"},
|
||||
{file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -523,7 +523,7 @@ zipp = ">=0.5"
|
||||
[package.extras]
|
||||
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
|
||||
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]]
|
||||
name = "iniconfig"
|
||||
@ -583,62 +583,62 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
|
||||
|
||||
[[package]]
|
||||
name = "markupsafe"
|
||||
version = "2.1.2"
|
||||
version = "2.1.3"
|
||||
description = "Safely add untrusted strings to HTML/XML markup."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"},
|
||||
{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.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"},
|
||||
{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.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"},
|
||||
{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.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"},
|
||||
{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.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"},
|
||||
{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.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"},
|
||||
{file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"},
|
||||
{file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"},
|
||||
{file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"},
|
||||
{file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"},
|
||||
{file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"},
|
||||
{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.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"},
|
||||
{file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"},
|
||||
{file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"},
|
||||
{file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"},
|
||||
{file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"},
|
||||
{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.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
|
||||
{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.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"},
|
||||
{file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"},
|
||||
{file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"},
|
||||
{file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"},
|
||||
{file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"},
|
||||
{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.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"},
|
||||
{file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"},
|
||||
{file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"},
|
||||
{file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"},
|
||||
{file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"},
|
||||
{file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"},
|
||||
{file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"},
|
||||
{file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"},
|
||||
{file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"},
|
||||
{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.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"},
|
||||
{file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"},
|
||||
{file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"},
|
||||
{file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"},
|
||||
{file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"},
|
||||
{file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -759,6 +759,41 @@ files = [
|
||||
{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]]
|
||||
name = "packaging"
|
||||
version = "23.1"
|
||||
@ -876,33 +911,33 @@ files = [
|
||||
|
||||
[[package]]
|
||||
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\"."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "platformdirs-3.5.1-py3-none-any.whl", hash = "sha256:e2378146f1964972c03c085bb5662ae80b2b8c06226c54b2ff4aa9483e8a13a5"},
|
||||
{file = "platformdirs-3.5.1.tar.gz", hash = "sha256:412dae91f52a6f84830f39a8078cecd0e866cb72294a5c66808e74d5e88d251f"},
|
||||
{file = "platformdirs-3.8.0-py3-none-any.whl", hash = "sha256:ca9ed98ce73076ba72e092b23d3c93ea6c4e186b3f1c3dad6edd98ff6ffcca2e"},
|
||||
{file = "platformdirs-3.8.0.tar.gz", hash = "sha256:b0cabcb11063d21a0b261d557acb0a9d2126350e63b70cdf7db6347baea456dc"},
|
||||
]
|
||||
|
||||
[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]
|
||||
docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.2.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)"]
|
||||
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.1)", "pytest-mock (>=3.10)"]
|
||||
|
||||
[[package]]
|
||||
name = "plotly"
|
||||
version = "5.14.1"
|
||||
version = "5.15.0"
|
||||
description = "An open-source, interactive data visualization library for Python"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
files = [
|
||||
{file = "plotly-5.14.1-py2.py3-none-any.whl", hash = "sha256:a63f3ad9e4cc2e02902a738e5e3e7f3d1307f2732ac71a6c28f1238ed3052826"},
|
||||
{file = "plotly-5.14.1.tar.gz", hash = "sha256:bcac86d7fcba3eff7260c1eddc36ca34dae2aded10a0709808446565e0e53b93"},
|
||||
{file = "plotly-5.15.0-py2.py3-none-any.whl", hash = "sha256:3508876bbd6aefb8a692c21a7128ca87ce42498dd041efa5c933ee44b55aab24"},
|
||||
{file = "plotly-5.15.0.tar.gz", hash = "sha256:822eabe53997d5ebf23c77e1d1fcbf3bb6aa745eb05d532afd4b6f9a2e2ab02f"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -911,14 +946,14 @@ tenacity = ">=6.2.0"
|
||||
|
||||
[[package]]
|
||||
name = "pluggy"
|
||||
version = "1.0.0"
|
||||
version = "1.2.0"
|
||||
description = "plugin and hook calling mechanisms for python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
||||
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
|
||||
{file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"},
|
||||
{file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -930,14 +965,14 @@ testing = ["pytest", "pytest-benchmark"]
|
||||
|
||||
[[package]]
|
||||
name = "pre-commit"
|
||||
version = "3.3.2"
|
||||
version = "3.3.3"
|
||||
description = "A framework for managing and maintaining multi-language pre-commit hooks."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "pre_commit-3.3.2-py2.py3-none-any.whl", hash = "sha256:8056bc52181efadf4aac792b1f4f255dfd2fb5a350ded7335d251a68561e8cb6"},
|
||||
{file = "pre_commit-3.3.2.tar.gz", hash = "sha256:66e37bec2d882de1f17f88075047ef8962581f83c234ac08da21a0c58953d1f0"},
|
||||
{file = "pre_commit-3.3.3-py2.py3-none-any.whl", hash = "sha256:10badb65d6a38caff29703362271d7dca483d01da88f9d7e05d0b97171c136cb"},
|
||||
{file = "pre_commit-3.3.3.tar.gz", hash = "sha256:a2256f489cd913d575c145132ae196fe335da32d91a8294b7afe6622335dd023"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -976,48 +1011,48 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
|
||||
|
||||
[[package]]
|
||||
name = "pydantic"
|
||||
version = "1.10.8"
|
||||
version = "1.10.9"
|
||||
description = "Data validation and settings management using python type hints"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "pydantic-1.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1243d28e9b05003a89d72e7915fdb26ffd1d39bdd39b00b7dbe4afae4b557f9d"},
|
||||
{file = "pydantic-1.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0ab53b609c11dfc0c060d94335993cc2b95b2150e25583bec37a49b2d6c6c3f"},
|
||||
{file = "pydantic-1.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9613fadad06b4f3bc5db2653ce2f22e0de84a7c6c293909b48f6ed37b83c61f"},
|
||||
{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.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0c6fafa0965b539d7aab0a673a046466d23b86e4b0e8019d25fd53f4df62c277"},
|
||||
{file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e82d4566fcd527eae8b244fa952d99f2ca3172b7e97add0b43e2d97ee77f81ab"},
|
||||
{file = "pydantic-1.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:ab523c31e22943713d80d8d342d23b6f6ac4b792a1e54064a8d0cf78fd64e800"},
|
||||
{file = "pydantic-1.10.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:666bdf6066bf6dbc107b30d034615d2627e2121506c555f73f90b54a463d1f33"},
|
||||
{file = "pydantic-1.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:35db5301b82e8661fa9c505c800d0990bc14e9f36f98932bb1d248c0ac5cada5"},
|
||||
{file = "pydantic-1.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c1e29f447557e9e26afb1c4dbf8768a10cc676e3781b6a577841ade126b85"},
|
||||
{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.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88f195f582851e8db960b4a94c3e3ad25692c1c1539e2552f3df7a9e972ef60e"},
|
||||
{file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:34d327c81e68a1ecb52fe9c8d50c8a9b3e90d3c8ad991bfc8f953fb477d42fb4"},
|
||||
{file = "pydantic-1.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:d532bf00f381bd6bc62cabc7d1372096b75a33bc197a312b03f5838b4fb84edd"},
|
||||
{file = "pydantic-1.10.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7d5b8641c24886d764a74ec541d2fc2c7fb19f6da2a4001e6d580ba4a38f7878"},
|
||||
{file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1f6cb446470b7ddf86c2e57cd119a24959af2b01e552f60705910663af09a4"},
|
||||
{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.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1952526ba40b220b912cdc43c1c32bcf4a58e3f192fa313ee665916b26befb68"},
|
||||
{file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bb14388ec45a7a0dc429e87def6396f9e73c8c77818c927b6a60706603d5f2ea"},
|
||||
{file = "pydantic-1.10.8-cp37-cp37m-win_amd64.whl", hash = "sha256:16f8c3e33af1e9bb16c7a91fc7d5fa9fe27298e9f299cff6cb744d89d573d62c"},
|
||||
{file = "pydantic-1.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ced8375969673929809d7f36ad322934c35de4af3b5e5b09ec967c21f9f7887"},
|
||||
{file = "pydantic-1.10.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93e6bcfccbd831894a6a434b0aeb1947f9e70b7468f274154d03d71fabb1d7c6"},
|
||||
{file = "pydantic-1.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:191ba419b605f897ede9892f6c56fb182f40a15d309ef0142212200a10af4c18"},
|
||||
{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.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ceb6a23bf1ba4b837d0cfe378329ad3f351b5897c8d4914ce95b85fba96da5a1"},
|
||||
{file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f2e754d5566f050954727c77f094e01793bcb5725b663bf628fa6743a5a9108"},
|
||||
{file = "pydantic-1.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:6a82d6cda82258efca32b40040228ecf43a548671cb174a1e81477195ed3ed56"},
|
||||
{file = "pydantic-1.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e59417ba8a17265e632af99cc5f35ec309de5980c440c255ab1ca3ae96a3e0e"},
|
||||
{file = "pydantic-1.10.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84d80219c3f8d4cad44575e18404099c76851bc924ce5ab1c4c8bb5e2a2227d0"},
|
||||
{file = "pydantic-1.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e4148e635994d57d834be1182a44bdb07dd867fa3c2d1b37002000646cc5459"},
|
||||
{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.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42aa0c4b5c3025483240a25b09f3c09a189481ddda2ea3a831a9d25f444e03c1"},
|
||||
{file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17aef11cc1b997f9d574b91909fed40761e13fac438d72b81f902226a69dac01"},
|
||||
{file = "pydantic-1.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:66a703d1983c675a6e0fed8953b0971c44dba48a929a2000a493c3772eb61a5a"},
|
||||
{file = "pydantic-1.10.8-py3-none-any.whl", hash = "sha256:7456eb22ed9aaa24ff3e7b4757da20d9e5ce2a81018c1b3ebd81a0b88a18f3b2"},
|
||||
{file = "pydantic-1.10.8.tar.gz", hash = "sha256:1410275520dfa70effadf4c21811d755e7ef9bb1f1d077a21958153a92c8d9ca"},
|
||||
{file = "pydantic-1.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca"},
|
||||
{file = "pydantic-1.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f"},
|
||||
{file = "pydantic-1.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896"},
|
||||
{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.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f"},
|
||||
{file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4"},
|
||||
{file = "pydantic-1.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f"},
|
||||
{file = "pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0"},
|
||||
{file = "pydantic-1.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7"},
|
||||
{file = "pydantic-1.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d"},
|
||||
{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.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91"},
|
||||
{file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8"},
|
||||
{file = "pydantic-1.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f"},
|
||||
{file = "pydantic-1.10.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece"},
|
||||
{file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a"},
|
||||
{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.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60"},
|
||||
{file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf"},
|
||||
{file = "pydantic-1.10.9-cp37-cp37m-win_amd64.whl", hash = "sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29"},
|
||||
{file = "pydantic-1.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82"},
|
||||
{file = "pydantic-1.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6"},
|
||||
{file = "pydantic-1.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766"},
|
||||
{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.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572"},
|
||||
{file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e"},
|
||||
{file = "pydantic-1.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb"},
|
||||
{file = "pydantic-1.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298"},
|
||||
{file = "pydantic-1.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276"},
|
||||
{file = "pydantic-1.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60"},
|
||||
{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.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a"},
|
||||
{file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4"},
|
||||
{file = "pydantic-1.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1"},
|
||||
{file = "pydantic-1.10.9-py3-none-any.whl", hash = "sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305"},
|
||||
{file = "pydantic-1.10.9.tar.gz", hash = "sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -1044,14 +1079,14 @@ plugins = ["importlib-metadata"]
|
||||
|
||||
[[package]]
|
||||
name = "pyright"
|
||||
version = "1.1.311"
|
||||
version = "1.1.315"
|
||||
description = "Command line wrapper for pyright"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "pyright-1.1.311-py3-none-any.whl", hash = "sha256:04df30c6b31d05068effe5563411291c876f5e4221d0af225a267b61dce1ca85"},
|
||||
{file = "pyright-1.1.311.tar.gz", hash = "sha256:554b555d3f770e8da2e76d6bb94e2ac63b3edc7dcd5fb8de202f9dd53e36689a"},
|
||||
{file = "pyright-1.1.315-py3-none-any.whl", hash = "sha256:262744daa7455f6056f6d6609b6278258e2fd7bd100d8937203516ee71d0eb93"},
|
||||
{file = "pyright-1.1.315.tar.gz", hash = "sha256:f124400a1a72ccc5fd04836e7e48ed235e8f7929bcc42b270a571fb34df17979"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -1064,14 +1099,14 @@ dev = ["twine (>=3.4.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "pytest"
|
||||
version = "7.3.1"
|
||||
version = "7.4.0"
|
||||
description = "pytest: simple powerful testing with Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"},
|
||||
{file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"},
|
||||
{file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"},
|
||||
{file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -1084,7 +1119,7 @@ pluggy = ">=0.12,<2.0"
|
||||
tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
|
||||
|
||||
[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]]
|
||||
name = "pytest-asyncio"
|
||||
@ -1127,14 +1162,14 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale
|
||||
|
||||
[[package]]
|
||||
name = "pytest-mock"
|
||||
version = "3.10.0"
|
||||
version = "3.11.1"
|
||||
description = "Thin-wrapper around the mock package for easier use with pytest"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "pytest-mock-3.10.0.tar.gz", hash = "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f"},
|
||||
{file = "pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"},
|
||||
{file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
|
||||
{file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -1326,18 +1361,18 @@ idna2008 = ["idna"]
|
||||
|
||||
[[package]]
|
||||
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"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7.0"
|
||||
files = [
|
||||
{file = "rich-13.4.1-py3-none-any.whl", hash = "sha256:d204aadb50b936bf6b1a695385429d192bc1fdaf3e8b907e8e26f4c4e4b5bf75"},
|
||||
{file = "rich-13.4.1.tar.gz", hash = "sha256:76f6b65ea7e5c5d924ba80e322231d7cb5b5981aa60bfc1e694f1bc097fe6fe1"},
|
||||
{file = "rich-13.4.2-py3-none-any.whl", hash = "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec"},
|
||||
{file = "rich-13.4.2.tar.gz", hash = "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
markdown-it-py = ">=2.2.0,<3.0.0"
|
||||
markdown-it-py = ">=2.2.0"
|
||||
pygments = ">=2.13.0,<3.0.0"
|
||||
typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""}
|
||||
|
||||
@ -1372,14 +1407,14 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "setuptools"
|
||||
version = "67.8.0"
|
||||
version = "68.0.0"
|
||||
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"},
|
||||
{file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"},
|
||||
{file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"},
|
||||
{file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
@ -1463,7 +1498,7 @@ files = [
|
||||
]
|
||||
|
||||
[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\""}
|
||||
|
||||
[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]]
|
||||
name = "typing-extensions"
|
||||
version = "4.6.2"
|
||||
version = "4.6.3"
|
||||
description = "Backported and Experimental Type Hints for Python 3.7+"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "typing_extensions-4.6.2-py3-none-any.whl", hash = "sha256:3a8b36f13dd5fdc5d1b16fe317f5668545de77fa0b8e02006381fd49d731ab98"},
|
||||
{file = "typing_extensions-4.6.2.tar.gz", hash = "sha256:06006244c70ac8ee83fa8282cb188f697b8db25bc8b4df07be1873c43897060c"},
|
||||
{file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"},
|
||||
{file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1689,24 +1724,24 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)",
|
||||
|
||||
[[package]]
|
||||
name = "virtualenv"
|
||||
version = "20.23.0"
|
||||
version = "20.23.1"
|
||||
description = "Virtual Python Environment builder"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"},
|
||||
{file = "virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"},
|
||||
{file = "virtualenv-20.23.1-py3-none-any.whl", hash = "sha256:34da10f14fea9be20e0fd7f04aba9732f84e593dac291b757ce42e3368a39419"},
|
||||
{file = "virtualenv-20.23.1.tar.gz", hash = "sha256:8ff19a38c1021c742148edc4f81cb43d7f8c6816d2ede2ab72af5b84c749ade1"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
distlib = ">=0.3.6,<1"
|
||||
filelock = ">=3.11,<4"
|
||||
platformdirs = ">=3.2,<4"
|
||||
filelock = ">=3.12,<4"
|
||||
platformdirs = ">=3.5.1,<4"
|
||||
|
||||
[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)"]
|
||||
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)"]
|
||||
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.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]]
|
||||
name = "watchdog"
|
||||
|
@ -1 +0,0 @@
|
||||
"""The Pynecone compiler."""
|
File diff suppressed because it is too large
Load Diff
@ -1 +0,0 @@
|
||||
"""Pynecone utiiities."""
|
@ -1,5 +1,5 @@
|
||||
[tool.poetry]
|
||||
name = "pynecone"
|
||||
name = "reflex"
|
||||
version = "0.1.34"
|
||||
description = "Web apps in pure Python."
|
||||
license = "Apache-2.0"
|
||||
@ -19,7 +19,7 @@ classifiers = [
|
||||
"Development Status :: 4 - Beta",
|
||||
]
|
||||
packages = [
|
||||
{include = "pynecone"}
|
||||
{include = "reflex"}
|
||||
]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
@ -62,7 +62,7 @@ asynctest = "^0.13.0"
|
||||
pre-commit = {version = "^3.2.1", python = ">=3.8,<4.0"}
|
||||
|
||||
[tool.poetry.scripts]
|
||||
pc = "pynecone.pc:main"
|
||||
reflex = "reflex.reflex:main"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.5.1"]
|
||||
@ -82,4 +82,4 @@ target-version = "py37"
|
||||
|
||||
"__init__.py" = ["F401"]
|
||||
"tests/*.py" = ["D100", "D103", "D104"]
|
||||
"pynecone/.templates/*.py" = ["D100", "D103", "D104"]
|
||||
"reflex/.templates/*.py" = ["D100", "D103", "D104"]
|
@ -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 pynecone as pc
|
||||
import reflex as rx
|
||||
|
||||
|
||||
class State(pc.State):
|
||||
class State(rx.State):
|
||||
"""The app state."""
|
||||
|
||||
count = 0
|
||||
@ -22,19 +22,19 @@ class State(pc.State):
|
||||
self.count = random.randint(0, 100)
|
||||
|
||||
|
||||
def index() -> pc.Component:
|
||||
return pc.center(
|
||||
pc.vstack(
|
||||
pc.heading(State.count),
|
||||
pc.hstack(
|
||||
pc.button("Decrement", on_click=State.decrement, color_scheme="red"),
|
||||
pc.button(
|
||||
def index() -> rx.Component:
|
||||
return rx.center(
|
||||
rx.vstack(
|
||||
rx.heading(State.count),
|
||||
rx.hstack(
|
||||
rx.button("Decrement", on_click=State.decrement, color_scheme="red"),
|
||||
rx.button(
|
||||
"Randomize",
|
||||
on_click=State.random,
|
||||
background_image="linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(0,176,34,1) 100%)",
|
||||
color="white",
|
||||
),
|
||||
pc.button("Increment", on_click=State.increment, color_scheme="green"),
|
||||
rx.button("Increment", on_click=State.increment, color_scheme="green"),
|
||||
),
|
||||
padding="1em",
|
||||
bg="#ededed",
|
||||
@ -48,6 +48,6 @@ def index() -> pc.Component:
|
||||
|
||||
|
||||
# Add state and page to the app.
|
||||
app = pc.App(state=State)
|
||||
app = rx.App(state=State)
|
||||
app.add_page(index, title="Counter")
|
||||
app.compile()
|
@ -1,32 +1,32 @@
|
||||
"""Welcome to Pynecone! This file outlines the steps to create a basic app."""
|
||||
from pcconfig import config
|
||||
"""Welcome to Reflex! This file outlines the steps to create a basic app."""
|
||||
from rxconfig import config
|
||||
|
||||
import pynecone as pc
|
||||
import reflex as rx
|
||||
|
||||
docs_url = "https://pynecone.io/docs/getting-started/introduction"
|
||||
filename = f"{config.app_name}/{config.app_name}.py"
|
||||
|
||||
|
||||
class State(pc.State):
|
||||
class State(rx.State):
|
||||
"""The app state."""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
def index() -> pc.Component:
|
||||
return pc.fragment(
|
||||
pc.color_mode_button(pc.color_mode_icon(), float="right"),
|
||||
pc.vstack(
|
||||
pc.heading("Welcome to Pynecone!", font_size="2em"),
|
||||
pc.box("Get started by editing ", pc.code(filename, font_size="1em")),
|
||||
pc.link(
|
||||
def index() -> rx.Component:
|
||||
return rx.fragment(
|
||||
rx.color_mode_button(rx.color_mode_icon(), float="right"),
|
||||
rx.vstack(
|
||||
rx.heading("Welcome to Reflex!", font_size="2em"),
|
||||
rx.box("Get started by editing ", rx.code(filename, font_size="1em")),
|
||||
rx.link(
|
||||
"Check out our docs!",
|
||||
href=docs_url,
|
||||
border="0.1em solid",
|
||||
padding="0.5em",
|
||||
border_radius="0.5em",
|
||||
_hover={
|
||||
"color": pc.color_mode_cond(
|
||||
"color": rx.color_mode_cond(
|
||||
light="rgb(107,99,246)",
|
||||
dark="rgb(179, 175, 255)",
|
||||
)
|
||||
@ -40,6 +40,6 @@ def index() -> pc.Component:
|
||||
|
||||
|
||||
# Add state and page to the app.
|
||||
app = pc.App(state=State)
|
||||
app = rx.App(state=State)
|
||||
app.add_page(index)
|
||||
app.compile()
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@ -1,10 +1,10 @@
|
||||
import pynecone as pc
|
||||
import reflex as rx
|
||||
|
||||
class {{ config_name }}(pc.Config):
|
||||
class {{ config_name }}(rx.Config):
|
||||
pass
|
||||
|
||||
config = {{ config_name }}(
|
||||
app_name="{{ app_name }}",
|
||||
db_url="{{ const.db_url }}",
|
||||
env=pc.Env.DEV,
|
||||
env=rx.Env.DEV,
|
||||
)
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "pynecone",
|
||||
"name": "reflex",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"export": "next build && next export -o _static",
|
@ -1,4 +1,4 @@
|
||||
// State management for Pynecone web apps.
|
||||
// State management for Reflex web apps.
|
||||
import axios from "axios";
|
||||
import io from "socket.io-client";
|
||||
import JSON5 from "json5";
|
@ -1,6 +1,6 @@
|
||||
"""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,
|
||||
we use the Flask "import name as name" syntax.
|
||||
"""
|
@ -1,4 +1,4 @@
|
||||
"""The Pynecone Admin Dashboard."""
|
||||
"""The Reflex Admin Dashboard."""
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Optional
|
||||
|
@ -1,4 +1,4 @@
|
||||
"""The main Pynecone app."""
|
||||
"""The main Reflex app."""
|
||||
|
||||
import asyncio
|
||||
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.view import ModelView
|
||||
|
||||
from pynecone import constants
|
||||
from pynecone.admin import AdminDash
|
||||
from pynecone.base import Base
|
||||
from pynecone.compiler import compiler
|
||||
from pynecone.compiler import utils as compiler_utils
|
||||
from pynecone.components.component import Component, ComponentStyle
|
||||
from pynecone.components.layout.fragment import Fragment
|
||||
from pynecone.config import get_config
|
||||
from pynecone.event import Event, EventHandler, EventSpec
|
||||
from pynecone.middleware import HydrateMiddleware, Middleware
|
||||
from pynecone.model import Model
|
||||
from pynecone.route import (
|
||||
from reflex import constants
|
||||
from reflex.admin import AdminDash
|
||||
from reflex.base import Base
|
||||
from reflex.compiler import compiler
|
||||
from reflex.compiler import utils as compiler_utils
|
||||
from reflex.components.component import Component, ComponentStyle
|
||||
from reflex.components.layout.fragment import Fragment
|
||||
from reflex.config import get_config
|
||||
from reflex.event import Event, EventHandler, EventSpec
|
||||
from reflex.middleware import HydrateMiddleware, Middleware
|
||||
from reflex.model import Model
|
||||
from reflex.route import (
|
||||
DECORATED_ROUTES,
|
||||
catchall_in_route,
|
||||
catchall_prefix,
|
||||
get_route_args,
|
||||
verify_route_validity,
|
||||
)
|
||||
from pynecone.state import DefaultState, State, StateManager, StateUpdate
|
||||
from pynecone.utils import format, types
|
||||
from reflex.state import DefaultState, State, StateManager, StateUpdate
|
||||
from reflex.utils import format, types
|
||||
|
||||
# Define custom types.
|
||||
ComponentCallable = Callable[[], Component]
|
||||
@ -49,7 +49,7 @@ Reducer = Callable[[Event], Coroutine[Any, Any, StateUpdate]]
|
||||
|
||||
|
||||
class App(Base):
|
||||
"""A Pynecone application."""
|
||||
"""A Reflex application."""
|
||||
|
||||
# A map from a page route to the component to render.
|
||||
pages: Dict[str, Component] = {}
|
||||
@ -424,7 +424,7 @@ class App(Base):
|
||||
if config.admin_dash.admin
|
||||
else Admin(
|
||||
engine=Model.get_db_engine(),
|
||||
title="Pynecone Admin Dashboard",
|
||||
title="Reflex Admin Dashboard",
|
||||
logo_url="https://pynecone.io/logo.png",
|
||||
)
|
||||
)
|
||||
@ -600,7 +600,7 @@ def upload(app: App):
|
||||
if not handler_upload_param:
|
||||
raise ValueError(
|
||||
f"`{handler}` handler should have a parameter annotated as List["
|
||||
f"pc.UploadFile]"
|
||||
f"rx.UploadFile]"
|
||||
)
|
||||
|
||||
event = Event(
|
@ -1,17 +1,14 @@
|
||||
"""Define the base Pynecone class."""
|
||||
"""Define the base Reflex class."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, TypeVar
|
||||
from typing import Any, Dict
|
||||
|
||||
import pydantic
|
||||
from pydantic.fields import ModelField
|
||||
|
||||
# Typevar to represent any class subclassing Base.
|
||||
PcType = TypeVar("PcType")
|
||||
|
||||
|
||||
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
|
||||
serialization and setting fields.
|
||||
@ -35,7 +32,7 @@ class Base(pydantic.BaseModel):
|
||||
"""
|
||||
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.
|
||||
|
||||
Args:
|
1
reflex/compiler/__init__.py
Normal file
1
reflex/compiler/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
"""The Reflex compiler."""
|
@ -1,18 +1,18 @@
|
||||
"""Compiler for the pynecone apps."""
|
||||
"""Compiler for the reflex apps."""
|
||||
from __future__ import annotations
|
||||
|
||||
from functools import wraps
|
||||
from typing import Callable, List, Set, Tuple, Type
|
||||
|
||||
from pynecone import constants
|
||||
from pynecone.compiler import templates, utils
|
||||
from pynecone.components.component import Component, CustomComponent
|
||||
from pynecone.state import State
|
||||
from pynecone.style import Style
|
||||
from pynecone.utils import imports
|
||||
from pynecone.vars import ImportVar
|
||||
from reflex import constants
|
||||
from reflex.compiler import templates, utils
|
||||
from reflex.components.component import Component, CustomComponent
|
||||
from reflex.state import State
|
||||
from reflex.style import Style
|
||||
from reflex.utils import imports
|
||||
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 = {
|
||||
"react": {
|
||||
ImportVar(tag="Fragment"),
|
@ -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 pynecone import constants
|
||||
from pynecone.utils import path_ops
|
||||
from pynecone.utils.format import json_dumps
|
||||
from reflex import constants
|
||||
from reflex.utils import path_ops
|
||||
from reflex.utils.format import json_dumps
|
||||
|
||||
|
||||
class PyneconeJinjaEnvironment(Environment):
|
||||
class ReflexJinjaEnvironment(Environment):
|
||||
"""The template class for jinja environment."""
|
||||
|
||||
def __init__(self) -> None:
|
||||
@ -53,11 +53,11 @@ def get_template(name: str) -> Template:
|
||||
Returns:
|
||||
A render function.
|
||||
"""
|
||||
return PyneconeJinjaEnvironment().get_template(name=name)
|
||||
return ReflexJinjaEnvironment().get_template(name=name)
|
||||
|
||||
|
||||
# Template for the Pynecone config file.
|
||||
PCCONFIG = get_template("app/pcconfig.py.jinja2")
|
||||
# Template for the Reflex config file.
|
||||
RXCONFIG = get_template("app/rxconfig.py.jinja2")
|
||||
|
||||
# Code to render a NextJS Document root.
|
||||
DOCUMENT_ROOT = get_template("web/pages/_document.js.jinja2")
|
@ -3,8 +3,8 @@
|
||||
import os
|
||||
from typing import Dict, List, Optional, Set, Tuple, Type
|
||||
|
||||
from pynecone import constants
|
||||
from pynecone.components.base import (
|
||||
from reflex import constants
|
||||
from reflex.components.base import (
|
||||
Body,
|
||||
ColorModeScript,
|
||||
Description,
|
||||
@ -18,12 +18,12 @@ from pynecone.components.base import (
|
||||
Script,
|
||||
Title,
|
||||
)
|
||||
from pynecone.components.component import Component, CustomComponent
|
||||
from pynecone.event import get_hydrate_event
|
||||
from pynecone.state import State
|
||||
from pynecone.style import Style
|
||||
from pynecone.utils import format, imports, path_ops
|
||||
from pynecone.vars import ImportVar
|
||||
from reflex.components.component import Component, CustomComponent
|
||||
from reflex.event import get_hydrate_event
|
||||
from reflex.state import State
|
||||
from reflex.style import Style
|
||||
from reflex.utils import format, imports, path_ops
|
||||
from reflex.vars import ImportVar
|
||||
|
||||
# To re-export this function.
|
||||
merge_imports = imports.merge_imports
|
@ -3,10 +3,10 @@ from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.tags import Tag
|
||||
from pynecone.components.tags.tagless import Tagless
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.tags import Tag
|
||||
from reflex.components.tags.tagless import Tagless
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Bare(Component):
|
@ -1,6 +1,6 @@
|
||||
"""Display the page body."""
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from reflex.components.component import Component
|
||||
|
||||
|
||||
class Body(Component):
|
@ -1,7 +1,7 @@
|
||||
"""Document components."""
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
|
||||
|
||||
class NextDocumentLib(Component):
|
@ -1,6 +1,6 @@
|
||||
"""The head component."""
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from reflex.components.component import Component
|
||||
|
||||
|
||||
class NextHeadLib(Component):
|
@ -1,8 +1,8 @@
|
||||
"""Display the title of the current page."""
|
||||
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class RawLink(Component):
|
@ -2,8 +2,8 @@
|
||||
|
||||
from typing import Dict, Optional
|
||||
|
||||
from pynecone.components.base.bare import Bare
|
||||
from pynecone.components.component import Component
|
||||
from reflex.components.base.bare import Bare
|
||||
from reflex.components.component import Component
|
||||
|
||||
|
||||
class Title(Component):
|
@ -7,10 +7,10 @@ from abc import ABC
|
||||
from functools import wraps
|
||||
from typing import Any, Callable, Dict, List, Optional, Set, Type, Union
|
||||
|
||||
from pynecone import constants
|
||||
from pynecone.base import Base
|
||||
from pynecone.components.tags import Tag
|
||||
from pynecone.event import (
|
||||
from reflex import constants
|
||||
from reflex.base import Base
|
||||
from reflex.components.tags import Tag
|
||||
from reflex.event import (
|
||||
EVENT_ARG,
|
||||
EVENT_TRIGGERS,
|
||||
EventChain,
|
||||
@ -20,13 +20,13 @@ from pynecone.event import (
|
||||
call_event_handler,
|
||||
get_handler_args,
|
||||
)
|
||||
from pynecone.style import Style
|
||||
from pynecone.utils import format, imports, types
|
||||
from pynecone.vars import BaseVar, ImportVar, Var
|
||||
from reflex.style import Style
|
||||
from reflex.utils import format, imports, types
|
||||
from reflex.vars import BaseVar, ImportVar, Var
|
||||
|
||||
|
||||
class Component(Base, ABC):
|
||||
"""The base class for all Pynecone components."""
|
||||
"""The base class for all Reflex components."""
|
||||
|
||||
# The children nested within the component.
|
||||
children: List[Component] = []
|
||||
@ -376,14 +376,14 @@ class Component(Base, ABC):
|
||||
TypeError: If an invalid child is passed.
|
||||
"""
|
||||
# Import here to avoid circular imports.
|
||||
from pynecone.components.base.bare import Bare
|
||||
from reflex.components.base.bare import Bare
|
||||
|
||||
# Validate all the children.
|
||||
for child in children:
|
||||
# Make sure the child is a valid type.
|
||||
if not types._isinstance(child, ComponentChild):
|
||||
raise TypeError(
|
||||
"Children of Pynecone components must be other components, "
|
||||
"Children of Reflex components must be other components, "
|
||||
"state vars, or primitive Python types. "
|
||||
f"Got child {child} of type {type(child)}.",
|
||||
)
|
@ -1,7 +1,7 @@
|
||||
"""Badge component."""
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Badge(ChakraComponent):
|
@ -2,15 +2,15 @@
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.forms import Button
|
||||
from pynecone.components.layout import Box
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.components.media import Icon
|
||||
from pynecone.event import set_clipboard
|
||||
from pynecone.style import Style
|
||||
from pynecone.utils import imports
|
||||
from pynecone.vars import ImportVar, Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.forms import Button
|
||||
from reflex.components.layout import Box
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.components.media import Icon
|
||||
from reflex.event import set_clipboard
|
||||
from reflex.style import Style
|
||||
from reflex.utils import imports
|
||||
from reflex.vars import ImportVar, Var
|
||||
|
||||
# Path to the prism styles.
|
||||
PRISM_STYLES_PATH = "/styles/code/prism"
|
@ -2,10 +2,10 @@
|
||||
|
||||
from typing import Any, List
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.tags import Tag
|
||||
from pynecone.utils import format, imports, types
|
||||
from pynecone.vars import BaseVar, ComputedVar, ImportVar, Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.tags import Tag
|
||||
from reflex.utils import format, imports, types
|
||||
from reflex.vars import BaseVar, ComputedVar, ImportVar, Var
|
||||
|
||||
|
||||
class Gridjs(Component):
|
@ -1,7 +1,7 @@
|
||||
"""A line to divide parts of the layout."""
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Divider(ChakraComponent):
|
@ -1,6 +1,6 @@
|
||||
"""A Keyboard Key Component."""
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
|
||||
|
||||
class KeyboardKey(ChakraComponent):
|
@ -1,9 +1,9 @@
|
||||
"""List components."""
|
||||
|
||||
from pynecone.components import Component
|
||||
from pynecone.components.layout.foreach import Foreach
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components import Component
|
||||
from reflex.components.layout.foreach import Foreach
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class List(ChakraComponent):
|
@ -1,8 +1,8 @@
|
||||
"""Statistics components."""
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Stat(ChakraComponent):
|
@ -1,10 +1,10 @@
|
||||
"""Table components."""
|
||||
from typing import List
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.layout.foreach import Foreach
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.layout.foreach import Foreach
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Table(ChakraComponent):
|
@ -1,9 +1,9 @@
|
||||
"""Chakra Tag Component."""
|
||||
from typing import Optional
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class TagLabel(ChakraComponent):
|
||||
@ -65,9 +65,9 @@ class Tag(ChakraComponent):
|
||||
|
||||
Args:
|
||||
label (Component): The label of the Tag that will be created.
|
||||
left_icon (Optional[Component]): Should be a pc.TagLeftIcon instance.
|
||||
right_icon (Optional[Component]): Should be a pc.TagRightIcon instance.
|
||||
close_button (Optional[Component]): Should be a pc.TagCloseButton instance.
|
||||
left_icon (Optional[Component]): Should be a rx.TagLeftIcon instance.
|
||||
right_icon (Optional[Component]): Should be a rx.TagRightIcon instance.
|
||||
close_button (Optional[Component]): Should be a rx.TagCloseButton instance.
|
||||
props: The properties to be passed to the component.
|
||||
|
||||
Returns:
|
@ -2,9 +2,9 @@
|
||||
|
||||
from typing import List, Optional, Union
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Accordion(ChakraComponent):
|
@ -1,8 +1,8 @@
|
||||
"""Tab components."""
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Tabs(ChakraComponent):
|
@ -1,8 +1,8 @@
|
||||
"""A transition Component."""
|
||||
from typing import Union
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Transition(ChakraComponent):
|
@ -1,6 +1,6 @@
|
||||
"""A component to display visually hidden text."""
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
|
||||
|
||||
class VisuallyHidden(ChakraComponent):
|
@ -1,8 +1,8 @@
|
||||
"""Alert components."""
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Alert(ChakraComponent):
|
@ -1,8 +1,8 @@
|
||||
"""Container to stack elements with spacing."""
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class CircularProgress(ChakraComponent):
|
@ -2,8 +2,8 @@
|
||||
|
||||
from typing import Union
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Progress(ChakraComponent):
|
@ -1,7 +1,7 @@
|
||||
"""Container to stack elements with spacing."""
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Skeleton(ChakraComponent):
|
@ -1,7 +1,7 @@
|
||||
"""Container to stack elements with spacing."""
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Spinner(ChakraComponent):
|
@ -1,7 +1,7 @@
|
||||
"""A button component."""
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Button(ChakraComponent):
|
@ -2,9 +2,9 @@
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from pynecone.components.component import EVENT_ARG
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import EVENT_ARG
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Checkbox(ChakraComponent):
|
@ -3,10 +3,10 @@
|
||||
To style components based on color mode, use style props with `color_mode_cond`:
|
||||
|
||||
```
|
||||
pc.text(
|
||||
rx.text(
|
||||
"Hover over me",
|
||||
_hover={
|
||||
"background": pc.color_mode_cond(
|
||||
"background": rx.color_mode_cond(
|
||||
light="var(--chakra-colors-gray-200)",
|
||||
dark="var(--chakra-colors-gray-700)",
|
||||
),
|
||||
@ -18,11 +18,11 @@ from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.layout.cond import Cond, cond
|
||||
from pynecone.components.media.icon import Icon
|
||||
from pynecone.style import color_mode, toggle_color_mode
|
||||
from pynecone.vars import BaseVar
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.layout.cond import Cond, cond
|
||||
from reflex.components.media.icon import Icon
|
||||
from reflex.style import color_mode, toggle_color_mode
|
||||
from reflex.vars import BaseVar
|
||||
|
||||
from .button import Button
|
||||
from .switch import Switch
|
@ -2,8 +2,8 @@
|
||||
|
||||
from typing import Set
|
||||
|
||||
from pynecone.components import Component
|
||||
from pynecone.vars import Var
|
||||
from reflex.components import Component
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class CopyToClipboard(Component):
|
@ -1,7 +1,7 @@
|
||||
"""A date input component."""
|
||||
|
||||
from pynecone.components.forms.input import Input
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.forms.input import Input
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class DatePicker(Input):
|
@ -1,7 +1,7 @@
|
||||
"""A datetime-local input component."""
|
||||
|
||||
from pynecone.components.forms.input import Input
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.forms.input import Input
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class DateTimePicker(Input):
|
@ -2,9 +2,9 @@
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.event import EVENT_ARG
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.event import EVENT_ARG
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Editable(ChakraComponent):
|
@ -1,7 +1,7 @@
|
||||
"""An email input component."""
|
||||
|
||||
from pynecone.components.forms.input import Input
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.forms.input import Input
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Email(Input):
|
@ -2,9 +2,9 @@
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Form(ChakraComponent):
|
@ -1,7 +1,7 @@
|
||||
"""An icon button component."""
|
||||
|
||||
from pynecone.components.typography.text import Text
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.typography.text import Text
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class IconButton(Text):
|
@ -2,10 +2,10 @@
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from pynecone.components.component import EVENT_ARG
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.utils import imports
|
||||
from pynecone.vars import ImportVar, Var
|
||||
from reflex.components.component import EVENT_ARG
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.utils import imports
|
||||
from reflex.vars import ImportVar, Var
|
||||
|
||||
|
||||
class Input(ChakraComponent):
|
@ -2,10 +2,10 @@
|
||||
|
||||
from typing import Any, Dict, List, Optional, Set, Union
|
||||
|
||||
from pynecone.base import Base
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.event import EVENT_ARG
|
||||
from pynecone.vars import Var
|
||||
from reflex.base import Base
|
||||
from reflex.components.component import Component
|
||||
from reflex.event import EVENT_ARG
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Option(Base):
|
@ -2,10 +2,10 @@
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.event import EVENT_ARG
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.event import EVENT_ARG
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class NumberInput(ChakraComponent):
|
@ -1,7 +1,7 @@
|
||||
"""A password input component."""
|
||||
|
||||
from pynecone.components.forms.input import Input
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.forms.input import Input
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Password(Input):
|
@ -2,10 +2,10 @@
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.event import EVENT_ARG
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.event import EVENT_ARG
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class PinInput(ChakraComponent):
|
@ -3,13 +3,13 @@
|
||||
|
||||
from typing import Any, Dict, List
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.layout.foreach import Foreach
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.components.typography.text import Text
|
||||
from pynecone.event import EVENT_ARG
|
||||
from pynecone.utils import types
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.layout.foreach import Foreach
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.components.typography.text import Text
|
||||
from reflex.event import EVENT_ARG
|
||||
from reflex.utils import types
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class RadioGroup(ChakraComponent):
|
@ -2,10 +2,10 @@
|
||||
|
||||
from typing import Dict, List
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.event import EVENT_ARG
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.event import EVENT_ARG
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class RangeSlider(ChakraComponent):
|
@ -2,12 +2,12 @@
|
||||
|
||||
from typing import Any, Dict, List
|
||||
|
||||
from pynecone.components.component import EVENT_ARG, Component
|
||||
from pynecone.components.layout.foreach import Foreach
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.components.typography.text import Text
|
||||
from pynecone.utils import types
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import EVENT_ARG, Component
|
||||
from reflex.components.layout.foreach import Foreach
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.components.typography.text import Text
|
||||
from reflex.utils import types
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Select(ChakraComponent):
|
@ -2,10 +2,10 @@
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from pynecone.components.component import Component
|
||||
from pynecone.components.libs.chakra import ChakraComponent
|
||||
from pynecone.event import EVENT_ARG
|
||||
from pynecone.vars import Var
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.libs.chakra import ChakraComponent
|
||||
from reflex.event import EVENT_ARG
|
||||
from reflex.vars import Var
|
||||
|
||||
|
||||
class Slider(ChakraComponent):
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user