Git Product home page Git Product logo

marcskovmadsen / awesome-streamlit Goto Github PK

View Code? Open in Web Editor NEW
2.0K 44.0 343.0 117.63 MB

The purpose of this project is to share knowledge on how awesome Streamlit is and can be

Home Page: https://awesome-streamlit.org

License: Creative Commons Attribution Share Alike 4.0 International

Python 4.95% Shell 0.01% Jupyter Notebook 0.11% HTML 94.94% Batchfile 0.01% Procfile 0.01%
data models analytics streamlit machine-learning apps python data-science innovation exploration mathematics finance trading fun awesome-list

awesome-streamlit's Introduction

Awesome Streamlit Awesome

The fastest way to build Awesome Tools and Apps! Powered by Python!

The purpose of this project is to share knowledge on how Awesome Streamlit is and can become. Pull requests are very welcome!

Streamlit has just been announced (Oct 2019) but I see the potential of becoming the Iphone of Data Science Apps. And maybe it can even become the Iphone of Technical Writing, Code, Micro Apps and Python.

This project provides

  • A curated list of Awesome Streamlit resources. See below.
  • An awesome Streamlit application with a gallery of Awesome Streamlit Apps.
    • Feel free to add your awesome app to the gallery via a Pull request. It's easy (see below).
  • A vision on how awesome Streamlit is and can become.
  • A best practices example and starter template of an awesome, multipage app with an automated CI/ CD pipeline, deployed to the cloud and running in a Docker container.

Visit the app at awesome-streamlit.org!

Awesome Streamlit Org Animation

The Magic of Streamlit

The only way to truly understand how magical Streamlit is to play around with it. But if you need to be convinced first, then here is the 4 minute introduction to Streamlit!

Afterwards you can go to the Streamlit docs to get started. You might also visit Awesome Streamlit docs.

Introduction to Streamlit

Awesome Resources

A curated list of awesome streamlit resources. Inspired by awesome-python and awesome-pandas.

Alternative

App

Article

Awesome-Streamlit.org

Code

Guide

Sister Sites

Social

Streamlit.io

Technical

Tutorial

Governance

This repo is maintained by me :-)

I'm Marc, Skov, Madsen, PhD, CFA®, Lead Data Scientist Developer at Ørsted

You can learn more about me at datamodelsanalytics.com

I try my best to govern and maintain this project in the spirit of the Zen of Python.

But i'm not an experienced open source maintainer so helpfull suggestions are appreciated.

Thanks

Contribute

GitHub Issues and Pull requests are very welcome!

If you believe Awesome Streamlit is awesome and would like to join as a Core Developer feel free to reach out via datamodelsanalytics.com

How to contribute awesome links

The best way to contribute an awesome link is via a Pull request.

In the pull request you should

Thanks.

How to contribute awesome apps

The best way to contribute an awesome app is via a Pull request.

In the pull request you should

  • describe why your contribution is awesome and should be included.
  • create a new folder gallery/<your_app_name> and app file gallery/<your_app_name>/<your_app_name.py>.
  • Add your app code conforming to the template
"""
## APP NAME

DESCRIPTION

Author: [YOUR NAME](https://URL_TO_YOU))\n
Source: [Github](https://github.com/URL_TO_CODE)
"""
import streamlit as st

# Your imports goes below

def main():
    st.title("APP NAME")
    st.markdown("DESCRIPTION")

    # Your code goes below

if __name__ == "__main__":
    main()
  • Please note magic in sub pages does not work. So don't use magic.
  • add the your_app_name to the
  • update the requirements_base.txt file. Please specify the required versions.
  • Run the automated tests using invoke test.all and fix all errors from your app
  • Run the full app via streamlit run app.py and manually test your contribution.

Please note that your app should not require high compute power as we are running on one of the cheapest tiers available on Azure.

Feel free to reach out if you have comments, questions or need help.

Thanks.

How to contribute to the Streamlit Community

Please sign up to and participate in the community at discuss.streamlit.io

How to contribute to the Streamlit Package

Please contribute to improving the Streamlit package at GitHub/streamlit/streamlit

How to contribute to Streamlit.io

Streamlit.io is in the position of trying to balance building an awesome, succesfull business and providing an awesome product to the open source community.

If you are in a Team please consider signing up for the beta of

How to sponsor the Awesome Streamlit project

If you would like to sponsor my time or the infrastructure the platform is running on, feel free to reach out via datamodelsanalytics.com.

You can also appreciate the work I have already done if you

Buy me a coffee

Thanks

Marc

LICENSE

Attribution-ShareAlike 4.0 International

Getting Started with the Awesome Streamlit Repository

Prerequisites

  • An Operating System like Windows, OsX or Linux
  • A working Python installation.
    • We recommend using 64bit Python 3.7.4.
  • a Shell
    • We recommend Git Bash for Windows 8.1
    • We recommend wsl for For Windows 10
  • an Editor
  • The Git cli

Installation

Clone the repo

git clone https://github.com/MarcSkovMadsen/awesome-streamlit.git

cd into the project root folder

cd awesome-streamlit

Create virtual environment

via python

Then you should create a virtual environment named .venv

python -m venv .venv

and activate the environment.

On Linux, OsX or in a Windows Git Bash terminal it's

source .venv/Scripts/activate

or alternatively

source .venv/bin/activate

In a Windows terminal it's

.venv/Scripts/activate.bat
or via anaconda

Create virtual environment named awesome-streamlit

conda create -n awesome-streamlit python=3.7.4

and activate environment.

activate awesome-streamlit

If you are on windows you need to install some things required by GeoPandas by following these instructions.

Then you should install the local requirements

pip install -r requirements_local.txt

Finally you need to install some spacy dependencies

python -m spacy download en_core_web_sm
python -m spacy download en_core_web_md
python -m spacy download de_core_news_sm

Build and run the Application Locally

streamlit run app.py

or as a Docker container via

invoke docker.build --rebuild
invoke docker.run-server

Run the Application using the image on Dockerhub

If you don't wan't to clone the repo and build the docker container you can just use docker run to run the image from Dockerhub

To run bash interactively

docker run -it -p 80:80 --entrypoint "/bin/bash" marcskovmadsen/awesome-streamlit:latest

To run the streamlit interactively on port 80

docker run -it -p 80:80 --entrypoint "streamlit" marcskovmadsen/awesome-streamlit:latest run app.py

Code quality and Tests

We use

  • isort for sorting import statements
  • autoflake to remove unused imports and unused variables
  • black the opinionated code formatter
  • pylint for static analysis
  • mypy for static type checking
  • pytest for unit to functional tests

to ensure a high quality of our code and application.

You can run all tests using

invoke test.all

Streamlit Tests

I've created a first version of an awesome streamlit test runner. You run it via

streamlit run test_runner_app.py

or in Docker

docker run -it -p 80:80 --entrypoint "streamlit" marcskovmadsen/awesome-streamlit:latest run test_runner_app.py

Awesome Streamlit Test Runner

Workflow

We use the power of Invoke to semi-automate the local workflow. You can see the list of available commands using

$ invoke --list
Available tasks:

  docker.build                            Build Docker image
  docker.push                             Push the Docker container
  docker.run                              Run the Docker container interactively.
  docker.run-server                       Run the Docker container interactively
  docker.system-prune                     The docker system prune command will free up space
  test.all (test.pre-commit, test.test)   Runs isort, autoflake, black, pylint, mypy and pytest
  test.autoflake                          Runs autoflake to remove unused imports on all .py files recursively
  test.bandit                             Runs Bandit the security linter from PyCQA.
  test.black                              Runs black (autoformatter) on all .py files recursively
  test.isort                              Runs isort (import sorter) on all .py files recursively
  test.mypy                               Runs mypy (static type checker) on all .py files recursively
  test.pylint                             Runs pylint (linter) on all .py files recursively to identify coding errors
  test.pytest                             Runs pytest to identify failing tests

Configuration

You can configure the app in the config.py file.

Please note that Streamlit has its own config files in the ~/.streamlit folder.

CI/ CD and Hosting

The application is

  • build as a Docker image and tested via Azure Pipelines builds
    • You find the Dockerfiles here and the Azure pipelines yml files here

Azure Pipelines

Dockerhub

  • released via Azure Pipelines

Azure Pipelines

  • to a web app for containers service on Azure on the cheapest non-free pricing tier

Azure Pipelines

The Awesome-Streamlit Package

You can build the package using

cd package
python setup.py sdist bdist_wheel

If you wan't to publish the package to PyPi you should first

update the version number in the setup.py file. The format is YYYYmmdd.version. For example 20191014.2

Then you run

twine upload dist/awesome-streamlit-YYYYmmdd.version.tar.gz -u <the-pypi-username> -p <the-pypi-password>

For more info see the package README.md

Project Layout

The basic layout of a application is as simple as

.
└── app.py

As our application grows we would refactor our app.py file into multiple folders and files.

  • assets here we keep our css and images assets.
  • models - Defines the layout of our data in the form of
    • Classes: Name, attribute names, types
    • DataFrame Schemas: column and index names, dtypes
    • SQLAlchemy Tables: columns names, types
  • pages - Defines the different pages of the Streamlit app
  • services - Organizes and shares business logic, models, data and functions with different pages of the Streamlit App.
    • Database interactions: Select, Insert, Update, Delete
    • REST API interactions, get, post, put, delete
    • Pandas transformations

and end up with a project structure like

.
├── app.py
└── src
    └── assets
    |    └── css
    |    |   ├── app.css
    |    |   ├── component1.css
    |    |   ├── component2.css
    |    |   ├── page1.css
    |    |   └── page2.css
    |    └── images
    |    |   ├── image1.png
    |    |   └── image2.png
    ├── core
    |   └── services
    |       ├── service1.py
    |       └── service2.py
    └── pages
    |   └── pages
    |       ├── page1.py
    |       └── page2.py
    └── shared
        └── models
        |   ├── model1.py
        |   └── model2.py
        └── components
            ├── component1.py
            └── component2.py

Further refactoring is guided by by this blog post and the Angular Style Guide.

We place our tests in a test folder in the root folder organized with folders similar to the app folder and file names with a test_ prefix.

.
└── test
    ├── test_app.py
    ├── core
    |   └── services
    |       ├── test_service1.py
    |       └── test_service2.py
    └── pages
    |   └── pages
    |       ├── page1
    |       |   └── test_page1.py
    |       └── page2
    └── shared
        └── models
        |   ├── test_model1.py
        |   └── test_model2.py
        └── components
            ├── test_component1.py
            └── test_component2.py

awesome-streamlit's People

Contributors

adfi avatar aliavni avatar arvkevi avatar collinprather avatar dpguthrie avatar dstar55 avatar jcharis avatar lyqht avatar marcskovmadsen avatar ozert avatar r-fred avatar scriptautomate avatar stabacco avatar waylonwalker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-streamlit's Issues

Installation instruction for anaconda(readme.md)

Extend Readme.md with description how to install awesome-streamlit via anaconda.
Commands would be:

Prerequisite:

  • Anaconda installed

commands:
...

create awesome-streamlit envronment

conda create -n awesome-streamlit python=3.7.4 anaconda

activate environment

activate awesome-streamlit
...

awesome-streamlit application in docker container gets unresponsive

When I run my awesome-streamlit docker container locally or on Azure it's snappy. But over time it gets unresponsive.

When the docker container is just run

docker run -it -p 80:80 --entrypoint "streamlit" marcskovmadsen/awesome-streamlit:latest run app.py

I can navigate from the Home to the Vision page in much less than a second.

image

It's the same when the container is deployed to https://awesome-streamlit.azurewebsites.net

But after some time the response time increases on Azure but not locally. For example after runing 30 minutes in Azure the response time is like 8 seconds. And in the end it gets so unresponsive that nobody would ever wait on it.

Gallery apps not working fully

First off, thanks for the great resource!

I tried containerizing a simple demo myself, and can't get it working on a CentOS (though it works on Windows); however, your image works 👍

But an issue with the gallery piece (only spacy demo is working), as shown below:

streamlit_error

Exact error message is:

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)>
File "/usr/local/lib/python3.7/site-packages/streamlit/ScriptRunner.py", line 306, in _run_script exec(code, module.__dict__)
File "/app/app.py", line 40, in <module> src.st_extensions.write_page(page)
File "/app/src/st_extensions.py", line 32, in write_page page.write()
File "/app/src/pages/gallery/index.py", line 51, in write python_code = get_file_content_as_string(run_app.url)
File "/usr/local/lib/python3.7/site-packages/streamlit/caching.py", line 544, in wrapped_func return get_or_set_cache()
File "/usr/local/lib/python3.7/site-packages/streamlit/caching.py", line 526, in get_or_set_cache return_value = func(*args, **kwargs)
File "/app/src/pages/gallery/index.py", line 122, in get_file_content_as_string data = urllib.request.urlopen(url).read()
File "/usr/local/lib/python3.7/urllib/request.py", line 222, in urlopen return opener.open(url, data, timeout)
File "/usr/local/lib/python3.7/urllib/request.py", line 525, in open response = self._open(req, data)
File "/usr/local/lib/python3.7/urllib/request.py", line 543, in _open '_open', req)
File "/usr/local/lib/python3.7/urllib/request.py", line 503, in _call_chain result = func(*args)
File "/usr/local/lib/python3.7/urllib/request.py", line 1360, in https_open context=self._context, check_hostname=self._check_hostname)
File "/usr/local/lib/python3.7/urllib/request.py", line 1319, in do_open raise URLError(err)

First boked demo is not displaying

Hi, I tried running the first bokeh demo from the gallery. I was able to launch the app, but the bokeh plot was not displayed.

Code and expected result:
Capture

The outcome was just a blank streamlit app.

I'll follow-up if I find a fix

Stream: page names with spaces crash app.

When using page names with spaces, the application can not start. Example of the error message below.

File "C:\Users\fches\Documents\_Programming\02_Python\tests\streamlit\LuXRD\app.py", line 7 import src.pages.Processed samples as Processed samples ^ SyntaxError: invalid syntax

Fix being worked on.

Error installing awesome-streamlit in anaconda navigator

I installed anaconda navigator and created a new enviroment with Python version 3.8.2.

I launched the anaconda navigator prompt and did:

conda activate awesome-streamlit

Once the environment was activated, I changed to the directory to where awesome-streamlit is present and did:

(awesome-streamlit) C:\Users\kashy\OneDrive\Desktop\ediapp>pip install -r requirements.txt

Following which, I start getting the error:

(awesome-streamlit) C:\Users\kashy\OneDrive\Desktop\ediapp>pip install -r requirements.txt
Collecting streamlit==0.49.0
  Using cached streamlit-0.49.0-py2.py3-none-any.whl (5.1 MB)
Collecting invoke==1.3.0
  Using cached invoke-1.3.0-py3-none-any.whl (207 kB)
Collecting pandas==0.24.2
  Downloading pandas-0.24.2.tar.gz (11.8 MB)
     |████████████████████████████████| 11.8 MB 2.0 kB/s
Collecting xlrd==1.2.0
  Using cached xlrd-1.2.0-py2.py3-none-any.whl (103 kB)
Collecting pytest
  Using cached pytest-5.4.2-py3-none-any.whl (247 kB)
Collecting pytest-sugar
  Using cached pytest-sugar-0.9.3.tar.gz (12 kB)
Collecting pytest-mock
  Using cached pytest_mock-3.1.0-py2.py3-none-any.whl (10 kB)
Collecting pytest-cov
  Using cached pytest_cov-2.8.1-py2.py3-none-any.whl (18 kB)
Requirement already satisfied: isort>=4.3.15 in c:\users\kashy\anaconda3\envs\awesome-streamlit\lib\site-packages (from -r ./requirements_base.txt (line 22)) (4.3.21)
Requirement already satisfied: pylint in c:\users\kashy\anaconda3\envs\awesome-streamlit\lib\site-packages (from -r ./requirements_base.txt (line 23)) (2.5.0)
Collecting pylint2junit
  Using cached pylint2junit-1.0.1-py3-none-any.whl (6.5 kB)
Collecting black
  Using cached black-19.10b0-py36-none-any.whl (97 kB)
Collecting autoflake
  Using cached autoflake-1.3.1.tar.gz (17 kB)
Collecting coverage
  Downloading coverage-5.1-cp38-cp38-win_amd64.whl (206 kB)
     |████████████████████████████████| 206 kB 2.2 MB/s
Collecting mypy
  Downloading mypy-0.770-cp38-cp38-win_amd64.whl (7.8 MB)
     |████████████████████████████████| 7.8 MB 3.3 MB/s
Collecting bandit
  Using cached bandit-1.6.2-py2.py3-none-any.whl (122 kB)
Collecting Sphinx==1.8.4
  Using cached Sphinx-1.8.4-py2.py3-none-any.whl (3.1 MB)
Collecting sphinx_rtd_theme
  Using cached sphinx_rtd_theme-0.4.3-py2.py3-none-any.whl (6.4 MB)
Collecting recommonmark
  Using cached recommonmark-0.6.0-py2.py3-none-any.whl (10 kB)
Collecting sphinx-autobuild
  Using cached sphinx-autobuild-0.7.1.tar.gz (14 kB)
Collecting doc8
  Using cached doc8-0.8.0-py2.py3-none-any.whl (19 kB)
Collecting spacy==2.2.1
  Downloading spacy-2.2.1.tar.gz (5.8 MB)
     |████████████████████████████████| 5.8 MB 218 kB/s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Users\kashy\anaconda3\envs\awesome-streamlit\python.exe' 'C:\Users\kashy\anaconda3\envs\awesome-streamlit\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\kashy\AppData\Local\Temp\pip-build-env-q38svyds\normal' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- wheel 'cymem<2.1.0,>=2.0.2' 'preshed<3.1.0,>=3.0.2' 'thinc<7.2.0,>=7.1.1' 'cython>=0.25' 'murmurhash<1.1.0,>=0.28.0'
       cwd: None
  Complete output (215 lines):
  Collecting wheel
    Using cached wheel-0.34.2-py2.py3-none-any.whl (26 kB)
  Collecting cymem<2.1.0,>=2.0.2
    Downloading cymem-2.0.3-cp38-cp38-win_amd64.whl (33 kB)
  Collecting preshed<3.1.0,>=3.0.2
    Downloading preshed-3.0.2-cp38-cp38-win_amd64.whl (115 kB)
  Collecting thinc<7.2.0,>=7.1.1
    Downloading thinc-7.1.1.tar.gz (1.9 MB)
  Collecting cython>=0.25
    Downloading Cython-0.29.17-cp38-cp38-win_amd64.whl (1.7 MB)
  Collecting murmurhash<1.1.0,>=0.28.0
    Downloading murmurhash-1.0.2-cp38-cp38-win_amd64.whl (20 kB)
  Collecting blis<0.5.0,>=0.4.0
    Downloading blis-0.4.1-cp38-cp38-win_amd64.whl (5.0 MB)
  Collecting wasabi<1.1.0,>=0.0.9
    Using cached wasabi-0.6.0-py3-none-any.whl (20 kB)
  Collecting srsly<1.1.0,>=0.0.6
    Downloading srsly-1.0.2-cp38-cp38-win_amd64.whl (181 kB)
  Collecting numpy>=1.7.0
    Downloading numpy-1.18.4-cp38-cp38-win_amd64.whl (12.8 MB)
  Collecting plac<1.0.0,>=0.9.6
    Using cached plac-0.9.6-py2.py3-none-any.whl (20 kB)
  Collecting tqdm<5.0.0,>=4.10.0
    Using cached tqdm-4.46.0-py2.py3-none-any.whl (63 kB)
  Building wheels for collected packages: thinc
    Building wheel for thinc (setup.py): started
    Building wheel for thinc (setup.py): finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: 'C:\Users\kashy\anaconda3\envs\awesome-streamlit\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\kashy\\AppData\\Local\\Temp\\pip-install-062p5m4u\\thinc\\setup.py'"'"'; __file__='"'"'C:\\Users\\kashy\\AppData\\Local\\Temp\\pip-install-062p5m4u\\thinc\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\kashy\AppData\Local\Temp\pip-wheel-shptm3u2'
         cwd: C:\Users\kashy\AppData\Local\Temp\pip-install-062p5m4u\thinc\
    Complete output (166 lines):
    running bdist_wheel
    running build
    running build_py
    creating build
    creating build\lib.win-amd64-3.8
    creating build\lib.win-amd64-3.8\thinc
    copying thinc\about.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\api.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\check.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\compat.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\describe.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\exceptions.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\i2v.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\loss.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\misc.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\rates.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\t2t.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\t2v.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\v2v.py -> build\lib.win-amd64-3.8\thinc
    copying thinc\__init__.py -> build\lib.win-amd64-3.8\thinc
    creating build\lib.win-amd64-3.8\thinc\tests
    copying thinc\tests\conftest.py -> build\lib.win-amd64-3.8\thinc\tests
    copying thinc\tests\strategies.py -> build\lib.win-amd64-3.8\thinc\tests
    copying thinc\tests\test_api_funcs.py -> build\lib.win-amd64-3.8\thinc\tests
    copying thinc\tests\test_util.py -> build\lib.win-amd64-3.8\thinc\tests
    copying thinc\tests\util.py -> build\lib.win-amd64-3.8\thinc\tests
    copying thinc\tests\__init__.py -> build\lib.win-amd64-3.8\thinc\tests
    creating build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_about.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_affine.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_beam_search.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_check_exceptions.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_difference.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_feature_extracter.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_hash_embed.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_imports.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_linear.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_loss.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_mem.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_model.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_ops.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_pickle.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_pooling.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_pytorch_wrapper.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_rates.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\test_rnn.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    copying thinc\tests\unit\__init__.py -> build\lib.win-amd64-3.8\thinc\tests\unit
    creating build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\test_affine_learns.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\test_basic_tagger.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\test_batch_norm.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\test_feed_forward.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\test_mnist.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\test_pickle.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\test_roundtrip_bytes.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\test_shape_check.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    copying thinc\tests\integration\__init__.py -> build\lib.win-amd64-3.8\thinc\tests\integration
    creating build\lib.win-amd64-3.8\thinc\tests\linear
    copying thinc\tests\linear\test_avgtron.py -> build\lib.win-amd64-3.8\thinc\tests\linear
    copying thinc\tests\linear\test_linear.py -> build\lib.win-amd64-3.8\thinc\tests\linear
    copying thinc\tests\linear\test_sparse_array.py -> build\lib.win-amd64-3.8\thinc\tests\linear
    copying thinc\tests\linear\__init__.py -> build\lib.win-amd64-3.8\thinc\tests\linear
    creating build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\__init__.py -> build\lib.win-amd64-3.8\thinc\linear
    creating build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\mem.py -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\pooling.py -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\train.py -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\util.py -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\vec2vec.py -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\vecs2vec.py -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\vecs2vecs.py -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\_lsuv.py -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\__init__.py -> build\lib.win-amd64-3.8\thinc\neural
    creating build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\datasets.py -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\hpbff.py -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\load_nlp.py -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\visualizer.py -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\wrappers.py -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\__init__.py -> build\lib.win-amd64-3.8\thinc\extra
    creating build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\affine.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\attention.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\batchnorm.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\convolution.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\difference.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\elu.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\embed.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\encoder_decoder.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\feature_extracter.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\feed_forward.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\function_layer.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\hash_embed.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\layernorm.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\maxout.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\model.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\multiheaded_attention.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\relu.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\resnet.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\rnn.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\selu.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\softmax.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\static_vectors.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    copying thinc\neural\_classes\__init__.py -> build\lib.win-amd64-3.8\thinc\neural\_classes
    creating build\lib.win-amd64-3.8\thinc\extra\_vendorized
    copying thinc\extra\_vendorized\keras_datasets.py -> build\lib.win-amd64-3.8\thinc\extra\_vendorized
    copying thinc\extra\_vendorized\keras_data_utils.py -> build\lib.win-amd64-3.8\thinc\extra\_vendorized
    copying thinc\extra\_vendorized\keras_generic_utils.py -> build\lib.win-amd64-3.8\thinc\extra\_vendorized
    copying thinc\extra\_vendorized\__init__.py -> build\lib.win-amd64-3.8\thinc\extra\_vendorized
    creating build\lib.win-amd64-3.8\thinc\extra\wrapt
    copying thinc\extra\wrapt\decorators.py -> build\lib.win-amd64-3.8\thinc\extra\wrapt
    copying thinc\extra\wrapt\importer.py -> build\lib.win-amd64-3.8\thinc\extra\wrapt
    copying thinc\extra\wrapt\wrappers.py -> build\lib.win-amd64-3.8\thinc\extra\wrapt
    copying thinc\extra\wrapt\__init__.py -> build\lib.win-amd64-3.8\thinc\extra\wrapt
    copying thinc\linalg.pyx -> build\lib.win-amd64-3.8\thinc
    copying thinc\structs.pyx -> build\lib.win-amd64-3.8\thinc
    copying thinc\typedefs.pyx -> build\lib.win-amd64-3.8\thinc
    copying thinc\cpu.pxd -> build\lib.win-amd64-3.8\thinc
    copying thinc\linalg.pxd -> build\lib.win-amd64-3.8\thinc
    copying thinc\structs.pxd -> build\lib.win-amd64-3.8\thinc
    copying thinc\typedefs.pxd -> build\lib.win-amd64-3.8\thinc
    copying thinc\__init__.pxd -> build\lib.win-amd64-3.8\thinc
    copying thinc\compile_time_constants.pxi -> build\lib.win-amd64-3.8\thinc
    copying thinc\linalg.cpp -> build\lib.win-amd64-3.8\thinc
    copying thinc\structs.cpp -> build\lib.win-amd64-3.8\thinc
    copying thinc\typedefs.cpp -> build\lib.win-amd64-3.8\thinc
    copying thinc\linear\avgtron.pyx -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\features.pyx -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\linear.pyx -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\serialize.pyx -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\sparse.pyx -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\avgtron.pxd -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\features.pxd -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\serialize.pxd -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\sparse.pxd -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\__init__.pxd -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\avgtron.cpp -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\features.cpp -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\linear.cpp -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\serialize.cpp -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\linear\sparse.cpp -> build\lib.win-amd64-3.8\thinc\linear
    copying thinc\neural\ops.pyx -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\optimizers.pyx -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\_aligned_alloc.pyx -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\cpu.pxd -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\ops.pxd -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\__init__.pxd -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\ops.cpp -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\optimizers.cpp -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\neural\_aligned_alloc.cpp -> build\lib.win-amd64-3.8\thinc\neural
    copying thinc\extra\cache.pyx -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\eg.pyx -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\mb.pyx -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\search.pyx -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\cache.pxd -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\eg.pxd -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\mb.pxd -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\search.pxd -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\__init__.pxd -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\cache.cpp -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\eg.cpp -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\mb.cpp -> build\lib.win-amd64-3.8\thinc\extra
    copying thinc\extra\search.cpp -> build\lib.win-amd64-3.8\thinc\extra
    running build_ext
    error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
    ----------------------------------------
    ERROR: Failed building wheel for thinc
    Running setup.py clean for thinc
  Failed to build thinc
  Installing collected packages: wheel, cymem, murmurhash, preshed, numpy, blis, wasabi, srsly, plac, tqdm, thinc, cython
      Running setup.py install for thinc: started
      Running setup.py install for thinc: finished with status 'error'
      ERROR: Command errored out with exit status 1:
       command: 'C:\Users\kashy\anaconda3\envs\awesome-streamlit\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\kashy\\AppData\\Local\\Temp\\pip-install-062p5m4u\\thinc\\setup.py'"'"'; __file__='"'"'C:\\Users\\kashy\\AppData\\Local\\Temp\\pip-install-062p5m4u\\thinc\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\kashy\AppData\Local\Temp\pip-record-du2vb3ti\install-record.txt' --single-version-externally-managed --prefix 'C:\Users\kashy\AppData\Local\Temp\pip-build-env-q38svyds\normal' --compile --install-headers 'C:\Users\kashy\AppData\Local\Temp\pip-build-env-q38svyds\normal\Include\thinc'
           cwd: C:\Users\kashy\AppData\Local\Temp\pip-install-062p5m4u\thinc\
      Complete output (5 lines):
      running install
      running build
      running build_py
      running build_ext
      error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
      ----------------------------------------
  ERROR: Command errored out with exit status 1: 'C:\Users\kashy\anaconda3\envs\awesome-streamlit\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\kashy\\AppData\\Local\\Temp\\pip-install-062p5m4u\\thinc\\setup.py'"'"'; __file__='"'"'C:\\Users\\kashy\\AppData\\Local\\Temp\\pip-install-062p5m4u\\thinc\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\kashy\AppData\Local\Temp\pip-record-du2vb3ti\install-record.txt' --single-version-externally-managed --prefix 'C:\Users\kashy\AppData\Local\Temp\pip-build-env-q38svyds\normal' --compile --install-headers 'C:\Users\kashy\AppData\Local\Temp\pip-build-env-q38svyds\normal\Include\thinc' Check the logs for full command output.
  ----------------------------------------
ERROR: Command errored out with exit status 1: 'C:\Users\kashy\anaconda3\envs\awesome-streamlit\python.exe' 'C:\Users\kashy\anaconda3\envs\awesome-streamlit\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\kashy\AppData\Local\Temp\pip-build-env-q38svyds\normal' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- wheel 'cymem<2.1.0,>=2.0.2' 'preshed<3.1.0,>=3.0.2' 'thinc<7.2.0,>=7.1.1' 'cython>=0.25' 'murmurhash<1.1.0,>=0.28.0' Check the logs for full command output.

Trouble using docker app

I'm just beginning to use streamlit and was wondering how to use it from a docker container, somehow I found your project and lots of responses.

However I have trouble using your docker app and feel like I might be missing something:

docker run -ti -p 80:80 --entrypoint "streamlit" marcskovmadsen/awesome-streamlit:latest run app.py
Initialized tornado logs
Server state: None -> State.INITIAL
Creating new context for ws PREHEATED_REPORT_SESSION
No singleton. Registering one.
Watcher created for /app/app.py
ReportSession initialized (id=0)
Beginning script thread
Starting server...
Running script RerunData(widget_state=None)
Serving static content from /usr/local/lib/python3.7/site-packages/streamlit/static
OnScriptRunnerEvent: ScriptRunnerEvent.SCRIPT_STARTED
New browser connection: gather_usage_stats=True, sharing_enabled=False, max_cached_message_age=2
Server started on port 80
Server state: State.INITIAL -> State.WAITING_FOR_FIRST_BROWSER

  You can now view your Streamlit app in your browser.

  URL: http://0.0.0.0:80

Hashing arguments to set_logging_format of 213 bytes.
Hashing function set_logging_format in 170 bytes.
Cache key: 58a14a7193f513268e179c87de37b6f5
Memory cache MISS: 58a14a7193f513268e179c87de37b6f5
2019-10-30 09:45:29,478 streamlit.ReportSession: OnScriptRunnerEvent: ScriptRunnerEvent.SCRIPT_STOPPED_WITH_SUCCESS
2019-10-30 09:45:29,478 streamlit.ReportSession: OnScriptRunnerEvent: ScriptRunnerEvent.SHUTDOWN

I actually can't reach the 0.0.0.0 URL.

Is there something obvious I missed ?

Thanks you for your help

Parallel query computation question

thanks for releasing this awesome repo - it's very helpful!

I'd greatly appreciate some clarification on a basic Streamlit concept: I have a Streamlit app running on my laptop. I'd like to share the url with some friends, and would like the computation of any query based on the user inputs from each instance of the app to run in parallel, so any user would have to wait the same amount of time as a single user of the app.

Does Streamlit already handle this (via Tornado), or do I have to build in concurrent computation in my code?

I'm posting this query here as you have made an app available to multiple users that are able to use the app.

I hope my question makes sense. Looking forward to your reply.

really slow/non working website

Hi!

I just fount out about streamlit and this project, and I'm evaluating using it for my next project.

Before diving in, I was browsing projects made with streamlit, starring from awesome-streamlit.org.

Sadly, I encounter many problems in doing that:

  • The first time I opened the link, nothing showed (and no loading sign) - but that could be a temporary problem in my network
  • Then, I could enter the website, but it took a very long time to pass the "Please wait..." message;
  • After that, the site responded for some clicks, but gave up when I tried to filter the list;
  • Refreshing the page a few times brought me back to the "please wait..." message, but nothing else came up; in the chrome devtools I saw the error message of the websocket connection closed before the connection is established.

Not a great advertisement of the product, I must say!

Is this a problem with streamlit or is it that the hosting is crippled and doesn't handle the traffic well?
EDIT: Just tried cloning the repo and running locally, it works fine! so it's something related to the network (not on my side, I tried with both ADSL and LTE connections, same result) or hosting

Multiselect not working when navigating between pages

When I navigate away from a page like the resources page or the gallery the multiselect does not work as expected.

To reproduce this

  1. Open https://awesome-streamlit.org/
  2. Navigate to the Gallery
    image
  3. Select Author Ines
    image
  4. Navigate to Home
    image
  5. Navigate to the Gallery

image
6. Verify in the Image above the "Marc Skov Madsen" is selected as Author but everything is refers to the SpacyIO application of Ines.

Question: Why is importlib necessary?

I was looking at this line and was confused why you had to do that.

I feel like whatever you're trying to accomplish is something which Streamlit should fix automatically. Could you please share some insight?

Thanks!
Adrien

Did you find a way to execute Script immediately?

Hello Marc,

I read your very nice hack to create a login widget (gallery/custom_widget_hack/custom_login_widget.py)

I need a way to "unfocus" all the buttonson the form. (in javascript document.activeElement.blur())
any idea if I can use the bokeh_chart hack to run this javascript line?

I tried and I can't find a way.

Readme typo

Hi, great repo !

Just a small mistake in the Readme.md,

On Linux, OsX or in a Windows Git Bash terminal it's

source .venv/bin/activate

(instead of Scripts)

Have a great day,

Gallery display

From what I can tell the Gallery radio button in the sidebar directs users to the interactive gaussian demo, but other examples are not visible.

ModuleNotFoundError: No module named 'awesome_streamlit.database'

I'm using a Python3.7 conda environment with streamlit installed:

$ streamlit --version
Streamlit, version 0.57.3
$ python --version
Python 3.7.7
$ pip freeze | grep awesome-streamlit
awesome-streamlit==20191018.1

However, if I try to import it in the Python repl:

import awesome_streamlit as ast

I get

ModuleNotFoundError: No module named 'awesome_streamlit.database'

Display pyLDAvis

A question regarding the bokeh.models.Div workaround for running custom HTML and JS.
I am trying to display a pyLDAvis output, and I am aware the streamlit does not support this currently. I have been attempting to use the workaround in the Custom Widgets Hack, but it does not seem to work by passing in the JS and HTML outputs from the pyLDAvis.save_html() output. Do you know of any workaround that could get the display running? I have attached a sample output from pyLDAvis.save_html().

Any guidance is greatly appreciated.
lda_vis.zip

Run app on external URL

@MarcSkovMadsen

I am following your docker image:

sudo docker run -it -p 80:80 --entrypoint "streamlit" marcskovmadsen/awesome-streamlit:latest run app.py

when I run I get this output:

  You can now view your Streamlit app in your browser.

  URL: http://0.0.0.0:80

My question is this app is on a ubuntu PC and runs successfully on localhost.

But when I try to connect to this app using <Ubuntu_PC_ExternalIP>:80 through another wifi network. I don't get any results. Why is that? How can I fix it ?

How to deploy streamlit on an Apache server?

Hi Marc,

Hope you are well.

Thanks for this amazing resource.

I have found many tutorials for deploying streamlit applications on cloud (Heroku, AWS, ...) but any for standalone servers. I have an Apache server running web applications on port 80 and would like to deploy streamlit as a subdomain. Do you have a tutorial to do this?

Sorry if it is a silly question but I'm used to working with Flask applications, there is a service like mod_wsgi for deploying streamlit with Apache?

Cheers!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.