From c473a8a290b8dd9879af7f11a5f79164c019d651 Mon Sep 17 00:00:00 2001 From: Nicole Date: Fri, 26 Mar 2021 15:41:46 -0700 Subject: [PATCH 1/2] add a config for streamlit app --- .streamlit/config.toml | 195 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 .streamlit/config.toml diff --git a/.streamlit/config.toml b/.streamlit/config.toml new file mode 100644 index 0000000..010bb92 --- /dev/null +++ b/.streamlit/config.toml @@ -0,0 +1,195 @@ +# last updated 2021-03-12 + +[global] + +# By default, Streamlit checks if the Python watchdog module is available and, if not, prints a warning asking for you to install it. The watchdog module is not required, but highly recommended. It improves Streamlit's ability to detect changes to files in your filesystem. +# If you'd like to turn off this warning, set this to True. +# Default: false +disableWatchdogWarning = false + +# If True, will show a warning when you run a Streamlit-enabled script via "python my_script.py". +# Default: true +showWarningOnDirectExecution = true + +[logger] + +# Level of logging: 'error', 'warning', 'info', or 'debug'. +# Default: 'info' +level = "debug" + +# String format for logging messages. If logger.datetimeFormat is set, logger messages will default to `%(asctime)s.%(msecs)03d %(message)s`. See [Python's documentation](https://docs.python.org/2.6/library/logging.html#formatter-objects) for available attributes. +# Default: None +messageFormat = "%(asctime)s %(levelname) -7s %(name)s: %(message)s" + +[client] + +# Whether to enable st.cache. +# Default: true +caching = true + +# If false, makes your Streamlit script not draw to a Streamlit app. +# Default: true +displayEnabled = true + +# Controls whether uncaught app exceptions are displayed in the browser. By default, this is set to True and Streamlit displays app exceptions and associated tracebacks in the browser. +# If set to False, an exception will result in a generic message being shown in the browser, and exceptions and tracebacks will be printed to the console only. +# Default: true +showErrorDetails = true + +[runner] + +# Allows you to type a variable or string by itself in a single line of Python code to write it to the app. +# Default: true +magicEnabled = true + +# Install a Python tracer to allow you to stop or pause your script at any point and introspect it. As a side-effect, this slows down your script's execution. +# Default: false +installTracer = false + +# Sets the MPLBACKEND environment variable to Agg inside Streamlit to prevent Python crashing. +# Default: true +fixMatplotlib = true + +[server] + +# List of folders that should not be watched for changes. This impacts both "Run on Save" and @st.cache. +# Relative paths will be taken as relative to the current working directory. +# Example: ['/home/user1/env', 'relative/path/to/folder'] +# Default: [] +folderWatchBlacklist = [] + +# Change the type of file watcher used by Streamlit, or turn it off completely. +# Allowed values: * "auto" : Streamlit will attempt to use the watchdog module, and falls back to polling if watchdog is not available. * "watchdog" : Force Streamlit to use the watchdog module. * "poll" : Force Streamlit to always use polling. * "none" : Streamlit will not watch files. +# Default: "auto" +fileWatcherType = "auto" + +# Symmetric key used to produce signed cookies. If deploying on multiple replicas, this should be set to the same value across all replicas to ensure they all share the same secret. +# Default: randomly generated secret key. +cookieSecret = "f8b7582082c5a4903916139e55a911170246459cdd73190983f806b7fc81623e" + +# If false, will attempt to open a browser window on start. +# Default: false unless (1) we are on a Linux box where DISPLAY is unset, or (2) server.liveSave is set. +headless = false + +# Automatically rerun script when the file is modified on disk. +# Default: false +runOnSave = false + +# The address where the server will listen for client and browser connections. Use this if you want to bind the server to a specific address. If set, the server will only be accessible from this address, and not from any aliases (like localhost). +# Default: (unset) +#address = + +# The port where the server will listen for browser connections. +# Default: 8501 +port = 8501 + +# The base path for the URL where Streamlit should be served from. +# Default: "" +baseUrlPath = "" + +# Enables support for Cross-Origin Request Sharing (CORS) protection, for added security. +# Due to conflicts between CORS and XSRF, if `server.enableXsrfProtection` is on and `server.enableCORS` is off at the same time, we will prioritize `server.enableXsrfProtection`. +# Default: true +enableCORS = true + +# Enables support for Cross-Site Request Forgery (XSRF) protection, for added security. +# Due to conflicts between CORS and XSRF, if `server.enableXsrfProtection` is on and `server.enableCORS` is off at the same time, we will prioritize `server.enableXsrfProtection`. +# Default: true +enableXsrfProtection = true + +# Max size, in megabytes, for files uploaded with the file_uploader. +# Default: 200 +maxUploadSize = 200 + +# Enables support for websocket compression. +# Default: true +enableWebsocketCompression = true + +[browser] + +# Internet address where users should point their browsers in order to connect to the app. Can be IP address or DNS name and path. +# This is used to: - Set the correct URL for CORS and XSRF protection purposes. - Show the URL on the terminal - Open the browser - Tell the browser where to connect to the server when in liveSave mode. +# Default: 'localhost' +serverAddress = "localhost" + +# Whether to send usage statistics to Streamlit. +# Default: true +gatherUsageStats = true + +# Port where users should point their browsers in order to connect to the app. +# This is used to: - Set the correct URL for CORS and XSRF protection purposes. - Show the URL on the terminal - Open the browser - Tell the browser where to connect to the server when in liveSave mode. +# Default: whatever value is set in server.port. +serverPort = 8501 + +[mapbox] + +# Configure Streamlit to use a custom Mapbox token for elements like st.pydeck_chart and st.map. To get a token for yourself, create an account at https://mapbox.com. It's free (for moderate usage levels)! +# Default: "" +token = "" + +[deprecation] + +# Set to false to disable the deprecation warning for the file uploader encoding. +# Default: "True" +showfileUploaderEncoding = "True" + +# Set to false to disable the deprecation warning for the image format parameter. +# Default: "True" +# +# DEPRECATED. +# The format parameter for st.image has been removed. +# This option will be removed on or after 2021-03-24. +# +# showImageFormat = "True" + +# Set to false to disable the deprecation warning for using the global pyplot instance. +# Default: "True" +showPyplotGlobalUse = "True" + +[s3] + +# Name of the AWS S3 bucket to save apps. +# Default: (unset) +#bucket = + +# URL root for external view of Streamlit apps. +# Default: (unset) +#url = + +# Access key to write to the S3 bucket. +# Leave unset if you want to use an AWS profile. +# Default: (unset) +#accessKeyId = + +# Secret access key to write to the S3 bucket. +# Leave unset if you want to use an AWS profile. +# Default: (unset) +#secretAccessKey = + +# The "subdirectory" within the S3 bucket where to save apps. +# S3 calls paths "keys" which is why the keyPrefix is like a subdirectory. Use "" to mean the root directory. +# Default: "" +keyPrefix = "" + +# AWS region where the bucket is located, e.g. "us-west-2". +# Default: (unset) +#region = + +# AWS credentials profile to use. +# Leave unset to use your default profile. +# Default: (unset) +#profile = + + +[theme] +primaryColor="#ee133f" +backgroundColor="#FFFFFF" +secondaryBackgroundColor="#cfe2f1" +textColor="#262730" +font="sans serif" + + +# Font family for all text in the app, except code blocks. One of "sans serif", "serif", or "monospace". +# Default: "sans serif" +font="calibri" + From b6f9ac45ce691a4d5463e8daffdff005414da78a Mon Sep 17 00:00:00 2001 From: Nicole Date: Fri, 26 Mar 2021 16:56:33 -0700 Subject: [PATCH 2/2] taxa logo and some cover prose --- src/apps/colophon.py | 42 ++++++++++++++++++++++++++++++++++++++++ src/apps/image/TAXA.png | Bin 0 -> 26963 bytes 2 files changed, 42 insertions(+) create mode 100644 src/apps/colophon.py create mode 100644 src/apps/image/TAXA.png diff --git a/src/apps/colophon.py b/src/apps/colophon.py new file mode 100644 index 0000000..d056a4e --- /dev/null +++ b/src/apps/colophon.py @@ -0,0 +1,42 @@ +# TAXA March 2021 + +import streamlit as st +import base64 +from PIL import Image + + +#st.set_page_config(layout="wide") + + +#image = Image.open('image/TAXA.png') + +TAXA_LOGO = "image/TAXA.png" +colophon = st.beta_container() + +#st.image(image, caption="Help discover species occurrences hiding in library collections.") + +with colophon: + + + st.markdown( + f""" +
+ +
+ """, + unsafe_allow_html=True + ) + + + st.write('# Help discover species hiding in library collections.') + + st.write("The Stanford Libraries AI group is training computers to recognize species occurrence data in digitized student papers. By verifying the genus-species, the time, and location, you can help check the computers' work and improve the model.") + st.button("GET STARTED") + st.markdown("---") + st.markdown("To learn more about this project see the [Project Book for TAXA](https://library-ai.stanford.edu) or go directly to the [code repository](https://library-ai.stanford.edu). To learn more about all AI projects at Stanford Libraries, visit [library-ai.stanford.edu](https://library-ai.stanford.edu)") + + + + + + diff --git a/src/apps/image/TAXA.png b/src/apps/image/TAXA.png new file mode 100644 index 0000000000000000000000000000000000000000..7e27e77858b5ce4ab9e86e8e40c8bebfa9e3d7ca GIT binary patch literal 26963 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

!LsVOUsd0+~+G9oA1dYDjSGdMNb_oE~L#4=MLC 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 w*ij#RW+