用于快速构建 基于python的web应用

dinhlongnguyen 546517f92d Fix Packaging action 1 gadu atpakaļ
.github 546517f92d Fix Packaging action 1 gadu atpakaļ
gui 9b4c7e2a48 no state to get submission fn (#355) (#356) 1 gadu atpakaļ
readme_img 603b8e7ab1 README.md update (#120) 2 gadi atpakaļ
src fbe2b037d2 change version to 3.0.0 1 gadu atpakaļ
tests 2fe7eb7e92 fix: update migrate message on cli 1 gadu atpakaļ
tools 977405991a comply isort 1 gadu atpakaļ
.editorconfig 41469f5724 feat(ScenarioSelector): adjust and improve styles (#138) 2 gadi atpakaļ
.flake8 2c82477fe2 fix typing for taipy.run (#85) 2 gadi atpakaļ
.gitattributes 7f0b872e89 Add taipy-rest package (#13) 3 gadi atpakaļ
.gitignore 9e8e2510b2 Datanode viewer: Refresh data and history tabs if needed (#353) 1 gadu atpakaļ
.license-header 571c632d7a chore: update licence year 2 gadi atpakaļ
.pre-commit-config.yaml 70238d6ac8 feat: add linter workflow 2 gadi atpakaļ
CODE_OF_CONDUCT.md 571c461f13 add CONTRIBUTING.md and CODE_OF_CONDUCT.md 3 gadi atpakaļ
CONTRIBUTING.md f86b207630 propagate changes on shared file. 2 gadi atpakaļ
LICENSE 571c632d7a chore: update licence year 2 gadi atpakaļ
MANIFEST.in 239597e4a5 chore: remove templates folder 1 gadu atpakaļ
Pipfile fbe2b037d2 change version to 3.0.0 1 gadu atpakaļ
README.md 8bab46395e rename sequence to pipeline and fix pipfile and tox.ini 1 gadu atpakaļ
contributors.txt e984b7f7a7 Update contributors.txt 1 gadu atpakaļ
mypy.ini 2c82477fe2 fix typing for taipy.run (#85) 2 gadi atpakaļ
pyproject.toml 2c82477fe2 fix typing for taipy.run (#85) 2 gadi atpakaļ
setup.py f6fbc26b26 Remove setup requires 1 gadu atpakaļ
tox.ini 86b7ae9514 Pipenv was upgraded (#265) 1 gadu atpakaļ

README.md



Taipy Logo


Welcome to Taipy

<a href="https://pypi.python.org/pypi/taipy/" alt="Taipy version">
    <img alt="PyPI" src="https://img.shields.io/pypi/v/taipy.svg?label=pip&logo=PyPI&color=ff462b&labelColor=283282"></a>
<a href="https://pypi.org/project/taipy" alt="Python version">
    <img alt="PyPI" src="https://img.shields.io/pypi/pyversions/taipy?color=ff462b&labelColor=283282"></a>
<a href="https://www.youtube.com/@taipy8009" alt="YouTube">
    <img src="https://img.shields.io/badge/youtube-click_to_watch_videos-red.svg?color=ff462b&labelColor=283282&logo=youtube" /></a>
 <a href="https://twitter.com/Taipy_io" alt="Twitter">
    <img src="https://img.shields.io/badge/twitter-click_for_tweets-red.svg?color=ff462b&labelColor=283282&logo=twitter" /></a>


Turns Data and AI algorithms into full web applications in no time.

How? Taipy GUI with Taipy Core pops out as a 360° platform to build production-ready web applications



Open Source, 100% Python




📊 We make both ends meet ⚙️


TAIPY GUI - the frond-end TAIPY Core - the back-end
Taipy GUI Animation Taipy Core Animation



Installation

Open a terminal and run:

$ pip install taipy

You're all set! All aboard the Taipy journey 🚂


Community

Join our Discord to give us feedback, share your creations or just to have a chat with us.


Ready, Set, GUI

Tiny Taipy GUI Demo

from taipy import Gui

excitement_page = """
# Welcome to Taipy
## Getting started with Taipy GUI
### How excited are you to try Taipy?

<|{excitement}|slider|min=1|max=100|>

My excitement level: <|{excitement}|text|>
"""
excitement = 100

Gui(page=excitement_page).run()

*RUN*🏃🏽‍♀️

🎊 TA-DA! 🎊

GUI demo



Find out more

Check out our Getting Started and Documentation



EN-CORE?

Let's create a back-end execution, also called scenario using Taipy Core. Our scenario will filter movie data based on the genre you choose. This scenario will be submitted (i.e., executed) each time the genre selection changes and output the seven most popular movies of that genre.


Here is our filter function: a standard Python function that is used by the unique task in the scenario

def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
    filtered_dataset = initial_dataset[initial_dataset['genres'].str.contains(selected_genre)]
    filtered_data = filtered_dataset.nlargest(7, 'Popularity %')
    return filtered_data

This is the execution graph of the scenario we are implementing

Taipy Core Graph

Taipy Studio - The easy peasy way

You can use the Taipy Studio extension in VSCode to configure your sequence with no code

GUI demo

Your configuration is automatically saved as a TOML file



Find out more

Check out our Getting Started and Documentation





Taipy Core - a walk on the code side

For more advanced use cases or if you prefer coding your configurations instead of using Taipy Studio, Taipy has your back!

Check out the movie genre demo scenario creation with this Demo




Find out more

Check out our Getting Started and Documentation




Front-end ➕ Back-end

Now, let's load this configuration and add a user interface on top for a 🎉FULL APPLICATION🎉

import taipy as tp
import pandas as pd
from taipy import Config, Scope, Gui

# TAIPY Core

# Filtering function - task
def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
    filtered_dataset = initial_dataset[initial_dataset['genres'].str.contains(selected_genre)]
    filtered_data = filtered_dataset.nlargest(7, 'Popularity %')
    return filtered_data

# Load the configuration made with Taipy Studio
Config.load('config.toml')
scenario_cfg = Config.scenarios['scenario']

# Start Taipy Core service
tp.Core().run()

# Create a scenario
scenario = tp.create_scenario(scenario_cfg)


# TAIPY GUI
# Let's add Taipy GUI to our Taipy Core for a full application

# Callback definition - submits scenario with genre selection
def on_genre_selected(state):
    scenario.selected_genre_node.write(state.selected_genre)
    tp.submit(scenario)
    state.df = scenario.filtered_data.read()

# Get list of genres
genres = [
    'Action', 'Adventure', 'Animation', 'Children', 'Comedy', 'Fantasy', 'IMAX'
    'Romance','Sci-FI', 'Western', 'Crime', 'Mystery', 'Drama', 'Horror', 'Thriller', 'Film-Noir','War', 'Musical', 'Documentary'
    ]

# Initialization of variables
df = pd.DataFrame(columns=['Title', 'Popularity %'])
selected_genre = None

# User interface definition
my_page = """
# Film recommendation

## Choose your favorite genre
<|{selected_genre}|selector|lov={genres}|on_change=on_genre_selected|dropdown|>

## Here are the top seven picks by popularity
<|{df}|chart|x=Title|y=Popularity %|type=bar|title=Film Popularity|>
"""

Gui(page=my_page).run()

*RUN*🏃🏽‍♀️


🎊TA-DA!🎊

GUI demo





Contributing ⚒⚒

Want to help build Taipy? Check out our CONTRIBUTING.md file.

Code of conduct

Want to be part of the Taipy community? Check out our CODE_OF_CONDUCT.md file.

License

Copyright 2023 Avaiga Private Limited

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.