Spaces:
Runtime error
Runtime error
Yacine Jernite
commited on
Commit
•
ac6c40f
1
Parent(s):
6ddeb1a
initial commit
Browse files- app.py +110 -0
- datacards/__init__.py +6 -0
- datacards/considerations.py +13 -0
- datacards/context.py +13 -0
- datacards/curation.py +13 -0
- datacards/gem.py +13 -0
- datacards/overview.py +194 -0
- datacards/results.py +13 -0
- datacards/streamlit_utils.py +120 -0
- resources/bcp47.json +0 -0
- resources/licenses.json +452 -0
app.py
ADDED
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from datetime import datetime
|
2 |
+
|
3 |
+
import datacards
|
4 |
+
|
5 |
+
from datacards import (
|
6 |
+
considerations_page,
|
7 |
+
considerations_summary,
|
8 |
+
context_page,
|
9 |
+
context_summary,
|
10 |
+
curation_page,
|
11 |
+
curation_summary,
|
12 |
+
gem_page,
|
13 |
+
gem_summary,
|
14 |
+
overview_page,
|
15 |
+
overview_summary,
|
16 |
+
results_page,
|
17 |
+
results_summary,
|
18 |
+
)
|
19 |
+
|
20 |
+
import streamlit as st
|
21 |
+
|
22 |
+
##################
|
23 |
+
## streamlit
|
24 |
+
##################
|
25 |
+
st.set_page_config(
|
26 |
+
page_title="GEM Data Card Input Form",
|
27 |
+
page_icon="https://avatars.githubusercontent.com/u/72612128",
|
28 |
+
layout="wide",
|
29 |
+
initial_sidebar_state="auto",
|
30 |
+
)
|
31 |
+
|
32 |
+
page_description = """
|
33 |
+
# GEM Data Card Input Form
|
34 |
+
|
35 |
+
This application was designed to support the GEM v2 data hackathon.
|
36 |
+
|
37 |
+
It allows users to fill out all of the information going into the data documentation when submitting a new dataset.
|
38 |
+
|
39 |
+
Use the left sidebar to navigate:
|
40 |
+
- "**Dataset at a Glance**" shows selected information and tracks progress
|
41 |
+
- Each of the "**Section:**" pages opens a form for a specific section of the card
|
42 |
+
- Go to "**Review and Save**" when you are done to save your data card
|
43 |
+
"""
|
44 |
+
|
45 |
+
_N_FIELDS = datacards.considerations.N_FIELDS + \
|
46 |
+
datacards.context.N_FIELDS + \
|
47 |
+
datacards.curation.N_FIELDS + \
|
48 |
+
datacards.gem.N_FIELDS + \
|
49 |
+
datacards.overview.N_FIELDS + \
|
50 |
+
datacards.results.N_FIELDS
|
51 |
+
|
52 |
+
def main():
|
53 |
+
if "save_state" not in st.session_state:
|
54 |
+
st.session_state.save_state = {}
|
55 |
+
|
56 |
+
if "card_dict" not in st.session_state:
|
57 |
+
st.session_state.card_dict = {}
|
58 |
+
|
59 |
+
st.sidebar.markdown(page_description, unsafe_allow_html=True)
|
60 |
+
pages = {
|
61 |
+
"Dataset at a Glance": glance_page,
|
62 |
+
"Section: Dataset Overview": overview_page,
|
63 |
+
"Section: Dataset in GEM": gem_page,
|
64 |
+
"Section: Dataset Curation": curation_page,
|
65 |
+
"Section: Previous Results": results_page,
|
66 |
+
"Section: Considerations for Using Data": considerations_page,
|
67 |
+
"Section: Broader Social Context": context_page,
|
68 |
+
"Review and Save": review_page,
|
69 |
+
}
|
70 |
+
app_mode = st.sidebar.radio(
|
71 |
+
label="Navigation menu:",
|
72 |
+
options=list(pages.keys()),
|
73 |
+
index=0,
|
74 |
+
)
|
75 |
+
st.markdown("#### GEM Data Card Input Form")
|
76 |
+
pages[app_mode]()
|
77 |
+
|
78 |
+
def glance_page():
|
79 |
+
with st.expander("Dataset at a Glance", expanded=True):
|
80 |
+
st.markdown(f"### Dataset Name: {st.session_state.save_state.get('dataset_name', '')}")
|
81 |
+
dataset_summary = ""
|
82 |
+
dataset_summary += f"- **Dataset Website**: {st.session_state.save_state.get('overview_where_website', '')}\n"
|
83 |
+
dataset_summary += f"- **Dataset Contact**: {st.session_state.save_state.get('overview_where_contact-name', '')}\n"
|
84 |
+
dataset_summary += f"- **Dataset License**: {st.session_state.save_state.get('overview_languages_license', '')}\n"
|
85 |
+
dataset_summary += f"- **Multilingual Dataset**: {st.session_state.save_state.get('overview_languages_is-multilingual', '')}\n"
|
86 |
+
dataset_summary += f"- **Dataset Languages**: {', '.join(st.session_state.save_state.get('overview_languages_language-names', []))}\n"
|
87 |
+
dataset_summary += f"- **Dataset Supported Task**: {st.session_state.save_state.get('overview_languages_task', '')}\n"
|
88 |
+
dataset_summary += f"- **Communicative Goal**: {st.session_state.save_state.get('dataset_communicative', '')}\n"
|
89 |
+
dataset_summary += f"- **Language Data Origin**: {st.session_state.save_state.get('curation_language_origin', '')}\n"
|
90 |
+
dataset_summary += f"- **Annotation Data Origin**: {st.session_state.save_state.get('curation_annotation_origin', '')}\n"
|
91 |
+
dataset_summary += f"- **Likelihood of PII**: {st.session_state.save_state.get('pii_likelihood', '')}\n"
|
92 |
+
st.markdown(dataset_summary + "---\n")
|
93 |
+
num_fields = sum([len(dct) for k in st.session_state.get("card_dict", {}) for dct in st.session_state.card_dict.get(k, {}).values()])
|
94 |
+
st.markdown(f"You have currently filled out **{num_fields} of {_N_FIELDS} required fields** in the data card.")
|
95 |
+
left_col, right_col = st.columns(2)
|
96 |
+
with left_col:
|
97 |
+
overview_summary()
|
98 |
+
gem_summary()
|
99 |
+
curation_summary()
|
100 |
+
with right_col:
|
101 |
+
results_summary()
|
102 |
+
considerations_summary()
|
103 |
+
context_summary()
|
104 |
+
|
105 |
+
def review_page():
|
106 |
+
st.write(st.session_state.get("card_dict", {}))
|
107 |
+
# TODO add buttons to save and download
|
108 |
+
|
109 |
+
if __name__ == "__main__":
|
110 |
+
main()
|
datacards/__init__.py
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from .considerations import considerations_page, considerations_summary
|
2 |
+
from .context import context_page, context_summary
|
3 |
+
from .curation import curation_page, curation_summary
|
4 |
+
from .gem import gem_page, gem_summary
|
5 |
+
from .overview import overview_page, overview_summary
|
6 |
+
from .results import results_page, results_summary
|
datacards/considerations.py
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
from .streamlit_utils import (
|
4 |
+
make_text_input
|
5 |
+
)
|
6 |
+
|
7 |
+
N_FIELDS = 1
|
8 |
+
|
9 |
+
def considerations_page():
|
10 |
+
return None
|
11 |
+
|
12 |
+
def considerations_summary():
|
13 |
+
return None
|
datacards/context.py
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
from .streamlit_utils import (
|
4 |
+
make_text_input
|
5 |
+
)
|
6 |
+
|
7 |
+
N_FIELDS = 1
|
8 |
+
|
9 |
+
def context_page():
|
10 |
+
return None
|
11 |
+
|
12 |
+
def context_summary():
|
13 |
+
return None
|
datacards/curation.py
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
from .streamlit_utils import (
|
4 |
+
make_text_input
|
5 |
+
)
|
6 |
+
|
7 |
+
N_FIELDS = 1
|
8 |
+
|
9 |
+
def curation_page():
|
10 |
+
return None
|
11 |
+
|
12 |
+
def curation_summary():
|
13 |
+
return None
|
datacards/gem.py
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
from .streamlit_utils import (
|
4 |
+
make_text_input
|
5 |
+
)
|
6 |
+
|
7 |
+
N_FIELDS = 1
|
8 |
+
|
9 |
+
def gem_page():
|
10 |
+
return None
|
11 |
+
|
12 |
+
def gem_summary():
|
13 |
+
return None
|
datacards/overview.py
ADDED
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import streamlit as st
|
3 |
+
|
4 |
+
from os.path import join as pjoin
|
5 |
+
|
6 |
+
from .streamlit_utils import (
|
7 |
+
make_multiselect,
|
8 |
+
make_selectbox,
|
9 |
+
make_text_area,
|
10 |
+
make_text_input,
|
11 |
+
make_radio,
|
12 |
+
)
|
13 |
+
|
14 |
+
N_FIELDS_WHERE = 9
|
15 |
+
N_FIELDS_LANGUAGES = 6
|
16 |
+
N_FIELDS_CREDIT = 3
|
17 |
+
N_FIELDS_STRUCTURE = 7
|
18 |
+
|
19 |
+
N_FIELDS = N_FIELDS_WHERE + \
|
20 |
+
N_FIELDS_LANGUAGES + \
|
21 |
+
N_FIELDS_CREDIT + \
|
22 |
+
N_FIELDS_STRUCTURE
|
23 |
+
|
24 |
+
|
25 |
+
languages_bcp47 = [
|
26 |
+
x
|
27 |
+
for x in json.load(open(pjoin("resources", "bcp47.json"), encoding="utf-8"))["subtags"]
|
28 |
+
if x["type"] == "language"
|
29 |
+
]
|
30 |
+
|
31 |
+
license_list = json.load(open(pjoin("resources", "licenses.json"), encoding="utf-8"))
|
32 |
+
|
33 |
+
def overview_page():
|
34 |
+
st.session_state.card_dict["overview"] = st.session_state.card_dict.get("overview", {})
|
35 |
+
with st.expander("Where to find", expanded=False):
|
36 |
+
key_pref = ["overview", "where"]
|
37 |
+
st.session_state.card_dict["overview"]["where"] = st.session_state.card_dict.get("where", {})
|
38 |
+
make_text_input(
|
39 |
+
label="What is the webpage for the dataset (if it exists)?",
|
40 |
+
key_list=key_pref + ["website"],
|
41 |
+
help="[URL]",
|
42 |
+
)
|
43 |
+
make_text_input(
|
44 |
+
label="What is the link to where the original dataset is hosted?",
|
45 |
+
key_list=key_pref + ["data-url"],
|
46 |
+
help="[URL]",
|
47 |
+
)
|
48 |
+
make_text_input(
|
49 |
+
label="What is the link to the paper describing the dataset (open access preferred)?",
|
50 |
+
key_list=key_pref + ["paper-url"],
|
51 |
+
help="[URL]",
|
52 |
+
)
|
53 |
+
make_text_area(
|
54 |
+
label="Provide the BibTex-formatted reference for the dataset.",
|
55 |
+
key_list=key_pref + ["paper-bibtext"],
|
56 |
+
help="[free text]",
|
57 |
+
)
|
58 |
+
make_radio(
|
59 |
+
label="Does the dataset have an active leaderboard?",
|
60 |
+
options=["no", "yes"],
|
61 |
+
key_list=key_pref + ["has-leaderboard"],
|
62 |
+
help="If no, enter N/A for the following two fields",
|
63 |
+
)
|
64 |
+
make_text_input(
|
65 |
+
label="Provide a link to the leaderboard if it exists. Otherwise, enter N/A.",
|
66 |
+
key_list=key_pref + ["leaderboard-url"],
|
67 |
+
help="[URL] or N/A",
|
68 |
+
)
|
69 |
+
make_text_area(
|
70 |
+
label="Briefly describe how the leaderboard evaluates models if it exists. Otherwise, enter N/A.",
|
71 |
+
key_list=key_pref + ["leaderboard-description"],
|
72 |
+
help="[free text; a paragraph] or N/A",
|
73 |
+
)
|
74 |
+
make_text_input(
|
75 |
+
label="If known, provide the name of at least one person the reader can contact for questions about the dataset.",
|
76 |
+
key_list=key_pref + ["contact-name"],
|
77 |
+
help="[free text]",
|
78 |
+
)
|
79 |
+
make_text_input(
|
80 |
+
label="If known, provide the email of at least one person the reader can contact for questions about the dataset.",
|
81 |
+
key_list=key_pref + ["contact-email"],
|
82 |
+
help="[free text]",
|
83 |
+
)
|
84 |
+
with st.expander("Languages and Intended Use", expanded=False):
|
85 |
+
key_pref = ["overview", "languages"]
|
86 |
+
st.session_state.card_dict["overview"]["languages"] = st.session_state.card_dict.get("languages", {})
|
87 |
+
make_radio(
|
88 |
+
label="Is the dataset multilingual?",
|
89 |
+
options=["no", "yes"],
|
90 |
+
key_list=key_pref + ["is-multilingual"],
|
91 |
+
help="More than one language present in all of the text fields",
|
92 |
+
)
|
93 |
+
make_multiselect(
|
94 |
+
label="What languages/dialects are covered in the dataset?",
|
95 |
+
key_list=key_pref + ["language-names"],
|
96 |
+
options=[
|
97 |
+
", ".join(x["description"]) for x in languages_bcp47
|
98 |
+
],
|
99 |
+
help="This is a comprehensive list of languages obtained from the BCP-47 standard list.",
|
100 |
+
)
|
101 |
+
make_text_area(
|
102 |
+
label="What is the intended use of the dataset?",
|
103 |
+
key_list=key_pref + ["intended-use"],
|
104 |
+
help="[free text, paragraphs]",
|
105 |
+
)
|
106 |
+
make_selectbox(
|
107 |
+
label="What is the license of the dataset?",
|
108 |
+
key_list=key_pref + ["license"],
|
109 |
+
options=license_list,
|
110 |
+
help="select `other` if missing from list, `unkown` if not provided"
|
111 |
+
)
|
112 |
+
make_text_input(
|
113 |
+
label="What primary task does the dataset support?",
|
114 |
+
key_list=key_pref + ["task"],
|
115 |
+
help="[free text]",
|
116 |
+
)
|
117 |
+
make_text_area(
|
118 |
+
label="Provide a short description of the communicative goal of a model trained for this task on this dataset.",
|
119 |
+
key_list=key_pref + ["communicative"],
|
120 |
+
help="[free text, a paragraph] (e.g., describe a restaurant from a structured representation of its attributes)",
|
121 |
+
)
|
122 |
+
with st.expander("Credit", expanded=False):
|
123 |
+
key_pref = ["overview", "credit"]
|
124 |
+
st.session_state.card_dict["overview"]["credit"] = st.session_state.card_dict.get("credit", {})
|
125 |
+
make_text_input(
|
126 |
+
label="Who created the original dataset? List the people involved in collecting the dataset and their affiliation(s).",
|
127 |
+
key_list=key_pref + ["creators"],
|
128 |
+
help="name (affiliation); comma-separated",
|
129 |
+
)
|
130 |
+
make_text_input(
|
131 |
+
label="Who funded the data creation?",
|
132 |
+
key_list=key_pref + ["funding"],
|
133 |
+
help="[free text] enter N/A if unkown",
|
134 |
+
)
|
135 |
+
make_text_input(
|
136 |
+
label="Who contributed to the data card and adding the dataset to GEM? List the people+affiliations involved in creating this data card and who helped integrate this dataset into GEM.",
|
137 |
+
key_list=key_pref + ["gem-added-by"],
|
138 |
+
help="name (affiliation); comma-separated",
|
139 |
+
)
|
140 |
+
with st.expander("Structure", expanded=False):
|
141 |
+
key_pref = ["overview", "structure"]
|
142 |
+
st.session_state.card_dict["overview"]["structure"] = st.session_state.card_dict.get("structure", {})
|
143 |
+
data_fields_help = """
|
144 |
+
[free text; paragraphs]
|
145 |
+
- Mention their data type, and whether and how they are used as part of the generation pipeline.
|
146 |
+
- Describe each fields' attributes, such as whether they are at the character level or word level, whether they are contiguous or not, etc.
|
147 |
+
- If the datasets contain example IDs, state whether they have an inherent meaning, such as a mapping to other datasets or pointing to relationships between data points.
|
148 |
+
"""
|
149 |
+
make_text_area(
|
150 |
+
label="List and describe the fields present in the dataset.",
|
151 |
+
key_list=key_pref + ["data-fields"],
|
152 |
+
help=data_fields_help,
|
153 |
+
)
|
154 |
+
make_text_area(
|
155 |
+
label="How was the dataset structure determined?",
|
156 |
+
key_list=key_pref + ["structure-description"],
|
157 |
+
help="[free text; paragraph]",
|
158 |
+
)
|
159 |
+
make_text_area(
|
160 |
+
label="How were the labels chosen?",
|
161 |
+
key_list=key_pref + ["structure-labels"],
|
162 |
+
help="[free text; paragraph]",
|
163 |
+
)
|
164 |
+
make_text_area(
|
165 |
+
label="Provide a JSON formatted example of a typical instance in the dataset.",
|
166 |
+
key_list=key_pref + ["structure-example"],
|
167 |
+
help="[JSON]",
|
168 |
+
)
|
169 |
+
make_text_area(
|
170 |
+
label="Describe and name the splits in the dataset if there are more than one.",
|
171 |
+
key_list=key_pref + ["structure-splits"],
|
172 |
+
help="[free text, paragraphs] - As appropriate, provide any descriptive statistics for the features, such as size, average lengths of input and output.",
|
173 |
+
)
|
174 |
+
make_text_area(
|
175 |
+
label="Describe any criteria for splitting the data, if used. If there are differences between the splits (e.g., if the training annotations are machine-generated and the dev and test ones are created by humans, or if different numbers of annotators contributed to each example), describe them here.",
|
176 |
+
key_list=key_pref + ["structure-splits-criteria"],
|
177 |
+
help="[free text, paragraphs]",
|
178 |
+
)
|
179 |
+
make_text_area(
|
180 |
+
label="What does an outlier of the dataset in terms of length/perplexity/embedding look like?",
|
181 |
+
key_list=key_pref + ["structure-outlier"],
|
182 |
+
help="[free text + json formatted text/file for an example]",
|
183 |
+
)
|
184 |
+
|
185 |
+
|
186 |
+
def overview_summary():
|
187 |
+
with st.expander("Dataset Overview Completion", expanded=True):
|
188 |
+
completion_markdown = ""
|
189 |
+
completion_markdown += f"- **Overall competion:**\n - {sum([len(dct) for dct in st.session_state.card_dict.get('overview', {}).values()])} of {N_FIELDS} fields\n"
|
190 |
+
completion_markdown += f"- **Sub-section - Where to find:**\n - {len(st.session_state.card_dict.get('overview', {}).get('where', {}))} of {N_FIELDS_WHERE} fields\n"
|
191 |
+
completion_markdown += f"- **Sub-section - Languages and Intended Use:**\n - {len(st.session_state.card_dict.get('overview', {}).get('languages', {}))} of {N_FIELDS_LANGUAGES} fields\n"
|
192 |
+
completion_markdown += f"- **Sub-section - Credit:**\n - {len(st.session_state.card_dict.get('overview', {}).get('credit', {}))} of {N_FIELDS_CREDIT} fields\n"
|
193 |
+
completion_markdown += f"- **Sub-section - Structure:**\n - {len(st.session_state.card_dict.get('overview', {}).get('structure', {}))} of {N_FIELDS_STRUCTURE} fields\n"
|
194 |
+
st.markdown(completion_markdown)
|
datacards/results.py
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
from .streamlit_utils import (
|
4 |
+
make_text_input
|
5 |
+
)
|
6 |
+
|
7 |
+
N_FIELDS = 1
|
8 |
+
|
9 |
+
def results_page():
|
10 |
+
return None
|
11 |
+
|
12 |
+
def results_summary():
|
13 |
+
return None
|
datacards/streamlit_utils.py
ADDED
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
|
4 |
+
# Streamlit widgets with persistence
|
5 |
+
# TODO: better detection of whether a field has been updated
|
6 |
+
def update_card_dict(key_list, default=None):
|
7 |
+
state_key = "_".join(key_list)
|
8 |
+
if st.session_state.save_state.get(state_key, default) != default:
|
9 |
+
card_key = key_list[-1]
|
10 |
+
current_dict = st.session_state.card_dict
|
11 |
+
for key in key_list[:-1]:
|
12 |
+
current_dict = current_dict[key]
|
13 |
+
current_dict[card_key] = st.session_state.save_state[state_key]
|
14 |
+
|
15 |
+
|
16 |
+
def make_multiselect(
|
17 |
+
key_list, label, options, format_func=lambda x: x, help="", default=None
|
18 |
+
):
|
19 |
+
key = "_".join(key_list)
|
20 |
+
if key in st.session_state:
|
21 |
+
st.session_state.save_state[key] = st.session_state[key]
|
22 |
+
elif default is not None:
|
23 |
+
st.session_state.save_state[key] = default
|
24 |
+
res = st.multiselect(
|
25 |
+
label=label,
|
26 |
+
options=options,
|
27 |
+
format_func=format_func,
|
28 |
+
key=key,
|
29 |
+
default=st.session_state.save_state.get(key, []),
|
30 |
+
help=help,
|
31 |
+
)
|
32 |
+
update_card_dict(key_list, default=[])
|
33 |
+
return res
|
34 |
+
|
35 |
+
|
36 |
+
def make_selectbox(key_list, label, options, format_func=lambda x: x, help="", index=None, on_change=None):
|
37 |
+
key = "_".join(key_list)
|
38 |
+
if key in st.session_state:
|
39 |
+
st.session_state.save_state[key] = st.session_state[key]
|
40 |
+
elif index is not None:
|
41 |
+
st.session_state.save_state[key] = options[index]
|
42 |
+
res = st.selectbox(
|
43 |
+
label=label,
|
44 |
+
options=options,
|
45 |
+
format_func=format_func,
|
46 |
+
key=key,
|
47 |
+
index=options.index(
|
48 |
+
st.session_state.save_state.get(key, options[0])
|
49 |
+
), # if st.session_state.save_state.get(key, options[0]) in options else 0,
|
50 |
+
help=help,
|
51 |
+
on_change=on_change,
|
52 |
+
)
|
53 |
+
update_card_dict(key_list, default=[])
|
54 |
+
return res
|
55 |
+
|
56 |
+
|
57 |
+
def make_radio(key_list, label, options, format_func=lambda x: x, help="", index=None):
|
58 |
+
key = "_".join(key_list)
|
59 |
+
if key in st.session_state:
|
60 |
+
st.session_state.save_state[key] = st.session_state[key]
|
61 |
+
elif index is not None:
|
62 |
+
st.session_state.save_state[key] = options[index]
|
63 |
+
res = st.radio(
|
64 |
+
label=label,
|
65 |
+
options=options,
|
66 |
+
format_func=format_func,
|
67 |
+
key=key,
|
68 |
+
index=options.index(st.session_state.save_state.get(key, options[0])),
|
69 |
+
help=help,
|
70 |
+
)
|
71 |
+
update_card_dict(key_list)
|
72 |
+
return res
|
73 |
+
|
74 |
+
|
75 |
+
def make_text_input(key_list, label, help="", value=None):
|
76 |
+
key = "_".join(key_list)
|
77 |
+
if key in st.session_state:
|
78 |
+
st.session_state.save_state[key] = st.session_state[key]
|
79 |
+
elif value is not None:
|
80 |
+
st.session_state.save_state[key] = value
|
81 |
+
res = st.text_input(
|
82 |
+
label=label,
|
83 |
+
key=key,
|
84 |
+
value=st.session_state.save_state.get(key, ""),
|
85 |
+
help=help,
|
86 |
+
)
|
87 |
+
update_card_dict(key_list, default="")
|
88 |
+
return res
|
89 |
+
|
90 |
+
|
91 |
+
def make_text_area(key_list, label, help="", value=None):
|
92 |
+
key = "_".join(key_list)
|
93 |
+
if key in st.session_state:
|
94 |
+
st.session_state.save_state[key] = st.session_state[key]
|
95 |
+
elif value is not None:
|
96 |
+
st.session_state.save_state[key] = value
|
97 |
+
res = st.text_area(
|
98 |
+
label=label,
|
99 |
+
key=key,
|
100 |
+
value=st.session_state.save_state.get(key, ""),
|
101 |
+
help=help,
|
102 |
+
)
|
103 |
+
update_card_dict(key_list, default="")
|
104 |
+
return res
|
105 |
+
|
106 |
+
|
107 |
+
def make_checkbox(key_list, label, help="", value=None):
|
108 |
+
key = "_".join(key_list)
|
109 |
+
if key in st.session_state:
|
110 |
+
st.session_state.save_state[key] = st.session_state[key]
|
111 |
+
elif value is not None:
|
112 |
+
st.session_state.save_state[key] = value
|
113 |
+
res = st.checkbox(
|
114 |
+
label=label,
|
115 |
+
key=key,
|
116 |
+
value=st.session_state.save_state.get(key, False),
|
117 |
+
help=help,
|
118 |
+
)
|
119 |
+
update_card_dict(key_list)
|
120 |
+
return res
|
resources/bcp47.json
ADDED
The diff for this file is too large to render.
See raw diff
|
|
resources/licenses.json
ADDED
@@ -0,0 +1,452 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
"other: Other license",
|
3 |
+
"unknown: License information unavailable",
|
4 |
+
"0bsd: BSD Zero Clause License",
|
5 |
+
"aal: Attribution Assurance License",
|
6 |
+
"abstyles: Abstyles License",
|
7 |
+
"adobe-2006: Adobe Systems Incorporated Source Code License Agreement",
|
8 |
+
"adobe-glyph: Adobe Glyph List License",
|
9 |
+
"adsl: Amazon Digital Services License",
|
10 |
+
"afl-1.1: Academic Free License v1.1",
|
11 |
+
"afl-1.2: Academic Free License v1.2",
|
12 |
+
"afl-2.0: Academic Free License v2.0",
|
13 |
+
"afl-2.1: Academic Free License v2.1",
|
14 |
+
"afl-3.0: Academic Free License v3.0",
|
15 |
+
"afmparse: Afmparse License",
|
16 |
+
"agpl-1.0: Affero General Public License v1.0",
|
17 |
+
"agpl-1.0-only: Affero General Public License v1.0 only",
|
18 |
+
"agpl-1.0-or-later: Affero General Public License v1.0 or later",
|
19 |
+
"agpl-3.0: GNU Affero General Public License v3.0",
|
20 |
+
"agpl-3.0-only: GNU Affero General Public License v3.0 only",
|
21 |
+
"agpl-3.0-or-later: GNU Affero General Public License v3.0 or later",
|
22 |
+
"aladdin: Aladdin Free Public License",
|
23 |
+
"amdplpa: AMD's plpa_map.c License",
|
24 |
+
"aml: Apple MIT License",
|
25 |
+
"ampas: Academy of Motion Picture Arts and Sciences BSD",
|
26 |
+
"antlr-pd: ANTLR Software Rights Notice",
|
27 |
+
"antlr-pd-fallback: ANTLR Software Rights Notice with license fallback",
|
28 |
+
"apache-1.0: Apache License 1.0",
|
29 |
+
"apache-1.1: Apache License 1.1",
|
30 |
+
"apache-2.0: Apache License 2.0",
|
31 |
+
"apafml: Adobe Postscript AFM License",
|
32 |
+
"apl-1.0: Adaptive Public License 1.0",
|
33 |
+
"apsl-1.0: Apple Public Source License 1.0",
|
34 |
+
"apsl-1.1: Apple Public Source License 1.1",
|
35 |
+
"apsl-1.2: Apple Public Source License 1.2",
|
36 |
+
"apsl-2.0: Apple Public Source License 2.0",
|
37 |
+
"artistic-1.0: Artistic License 1.0",
|
38 |
+
"artistic-1.0-cl8: Artistic License 1.0 w/clause 8",
|
39 |
+
"artistic-1.0-perl: Artistic License 1.0 (Perl)",
|
40 |
+
"artistic-2.0: Artistic License 2.0",
|
41 |
+
"bahyph: Bahyph License",
|
42 |
+
"barr: Barr License",
|
43 |
+
"beerware: Beerware License",
|
44 |
+
"bittorrent-1.0: BitTorrent Open Source License v1.0",
|
45 |
+
"bittorrent-1.1: BitTorrent Open Source License v1.1",
|
46 |
+
"blessing: SQLite Blessing",
|
47 |
+
"blueoak-1.0.0: Blue Oak Model License 1.0.0",
|
48 |
+
"borceux: Borceux license",
|
49 |
+
"bsd-1-clause: BSD 1-Clause License",
|
50 |
+
"bsd-2-clause: BSD 2-Clause \"Simplified\" License",
|
51 |
+
"bsd-2-clause-freebsd: BSD 2-Clause FreeBSD License",
|
52 |
+
"bsd-2-clause-netbsd: BSD 2-Clause NetBSD License",
|
53 |
+
"bsd-2-clause-patent: BSD-2-Clause Plus Patent License",
|
54 |
+
"bsd-2-clause-views: BSD 2-Clause with views sentence",
|
55 |
+
"bsd-3-clause: BSD 3-Clause \"New\" or \"Revised\" License",
|
56 |
+
"bsd-3-clause-attribution: BSD with attribution",
|
57 |
+
"bsd-3-clause-clear: BSD 3-Clause Clear License",
|
58 |
+
"bsd-3-clause-lbnl: Lawrence Berkeley National Labs BSD variant license",
|
59 |
+
"bsd-3-clause-no-nuclear-license: BSD 3-Clause No Nuclear License",
|
60 |
+
"bsd-3-clause-no-nuclear-license-2014: BSD 3-Clause No Nuclear License 2014",
|
61 |
+
"bsd-3-clause-no-nuclear-warranty: BSD 3-Clause No Nuclear Warranty",
|
62 |
+
"bsd-3-clause-open-mpi: BSD 3-Clause Open MPI variant",
|
63 |
+
"bsd-4-clause: BSD 4-Clause \"Original\" or \"Old\" License",
|
64 |
+
"bsd-4-clause-uc: BSD-4-Clause (University of California-Specific)",
|
65 |
+
"bsd-protection: BSD Protection License",
|
66 |
+
"bsd-source-code: BSD Source Code Attribution",
|
67 |
+
"bsl-1.0: Boost Software License 1.0",
|
68 |
+
"busl-1.1: Business Source License 1.1",
|
69 |
+
"bzip2-1.0.5: bzip2 and libbzip2 License v1.0.5",
|
70 |
+
"bzip2-1.0.6: bzip2 and libbzip2 License v1.0.6",
|
71 |
+
"cal-1.0: Cryptographic Autonomy License 1.0",
|
72 |
+
"cal-1.0-combined-work-exception: Cryptographic Autonomy License 1.0 (Combined Work Exception)",
|
73 |
+
"caldera: Caldera License",
|
74 |
+
"catosl-1.1: Computer Associates Trusted Open Source License 1.1",
|
75 |
+
"cc-by-1.0: Creative Commons Attribution 1.0 Generic",
|
76 |
+
"cc-by-2.0: Creative Commons Attribution 2.0 Generic",
|
77 |
+
"cc-by-2.5: Creative Commons Attribution 2.5 Generic",
|
78 |
+
"cc-by-3.0: Creative Commons Attribution 3.0 Unported",
|
79 |
+
"cc-by-3.0-at: Creative Commons Attribution 3.0 Austria",
|
80 |
+
"cc-by-3.0-us: Creative Commons Attribution 3.0 United States",
|
81 |
+
"cc-by-4.0: Creative Commons Attribution 4.0 International",
|
82 |
+
"cc-by-nc-1.0: Creative Commons Attribution Non Commercial 1.0 Generic",
|
83 |
+
"cc-by-nc-2.0: Creative Commons Attribution Non Commercial 2.0 Generic",
|
84 |
+
"cc-by-nc-2.5: Creative Commons Attribution Non Commercial 2.5 Generic",
|
85 |
+
"cc-by-nc-3.0: Creative Commons Attribution Non Commercial 3.0 Unported",
|
86 |
+
"cc-by-nc-4.0: Creative Commons Attribution Non Commercial 4.0 International",
|
87 |
+
"cc-by-nc-nd-1.0: Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic",
|
88 |
+
"cc-by-nc-nd-2.0: Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic",
|
89 |
+
"cc-by-nc-nd-2.5: Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic",
|
90 |
+
"cc-by-nc-nd-3.0: Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported",
|
91 |
+
"cc-by-nc-nd-3.0-igo: Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO",
|
92 |
+
"cc-by-nc-nd-4.0: Creative Commons Attribution Non Commercial No Derivatives 4.0 International",
|
93 |
+
"cc-by-nc-sa-1.0: Creative Commons Attribution Non Commercial Share Alike 1.0 Generic",
|
94 |
+
"cc-by-nc-sa-2.0: Creative Commons Attribution Non Commercial Share Alike 2.0 Generic",
|
95 |
+
"cc-by-nc-sa-2.5: Creative Commons Attribution Non Commercial Share Alike 2.5 Generic",
|
96 |
+
"cc-by-nc-sa-3.0: Creative Commons Attribution Non Commercial Share Alike 3.0 Unported",
|
97 |
+
"cc-by-nc-sa-4.0: Creative Commons Attribution Non Commercial Share Alike 4.0 International",
|
98 |
+
"cc-by-nd-1.0: Creative Commons Attribution No Derivatives 1.0 Generic",
|
99 |
+
"cc-by-nd-2.0: Creative Commons Attribution No Derivatives 2.0 Generic",
|
100 |
+
"cc-by-nd-2.5: Creative Commons Attribution No Derivatives 2.5 Generic",
|
101 |
+
"cc-by-nd-3.0: Creative Commons Attribution No Derivatives 3.0 Unported",
|
102 |
+
"cc-by-nd-4.0: Creative Commons Attribution No Derivatives 4.0 International",
|
103 |
+
"cc-by-sa-1.0: Creative Commons Attribution Share Alike 1.0 Generic",
|
104 |
+
"cc-by-sa-2.0: Creative Commons Attribution Share Alike 2.0 Generic",
|
105 |
+
"cc-by-sa-2.0-uk: Creative Commons Attribution Share Alike 2.0 England and Wales",
|
106 |
+
"cc-by-sa-2.5: Creative Commons Attribution Share Alike 2.5 Generic",
|
107 |
+
"cc-by-sa-3.0: Creative Commons Attribution Share Alike 3.0 Unported",
|
108 |
+
"cc-by-sa-3.0-at: Creative Commons Attribution-Share Alike 3.0 Austria",
|
109 |
+
"cc-by-sa-4.0: Creative Commons Attribution Share Alike 4.0 International",
|
110 |
+
"cc-pddc: Creative Commons Public Domain Dedication and Certification",
|
111 |
+
"cc0-1.0: Creative Commons Zero v1.0 Universal",
|
112 |
+
"cddl-1.0: Common Development and Distribution License 1.0",
|
113 |
+
"cddl-1.1: Common Development and Distribution License 1.1",
|
114 |
+
"cdla-permissive-1.0: Community Data License Agreement Permissive 1.0",
|
115 |
+
"cdla-sharing-1.0: Community Data License Agreement Sharing 1.0",
|
116 |
+
"cecill-1.0: CeCILL Free Software License Agreement v1.0",
|
117 |
+
"cecill-1.1: CeCILL Free Software License Agreement v1.1",
|
118 |
+
"cecill-2.0: CeCILL Free Software License Agreement v2.0",
|
119 |
+
"cecill-2.1: CeCILL Free Software License Agreement v2.1",
|
120 |
+
"cecill-b: CeCILL-B Free Software License Agreement",
|
121 |
+
"cecill-c: CeCILL-C Free Software License Agreement",
|
122 |
+
"cern-ohl-1.1: CERN Open Hardware Licence v1.1",
|
123 |
+
"cern-ohl-1.2: CERN Open Hardware Licence v1.2",
|
124 |
+
"cern-ohl-p-2.0: CERN Open Hardware Licence Version 2 - Permissive",
|
125 |
+
"cern-ohl-s-2.0: CERN Open Hardware Licence Version 2 - Strongly Reciprocal",
|
126 |
+
"cern-ohl-w-2.0: CERN Open Hardware Licence Version 2 - Weakly Reciprocal",
|
127 |
+
"clartistic: Clarified Artistic License",
|
128 |
+
"cnri-jython: CNRI Jython License",
|
129 |
+
"cnri-python: CNRI Python License",
|
130 |
+
"cnri-python-gpl-compatible: CNRI Python Open Source GPL Compatible License Agreement",
|
131 |
+
"condor-1.1: Condor Public License v1.1",
|
132 |
+
"copyleft-next-0.3.0: copyleft-next 0.3.0",
|
133 |
+
"copyleft-next-0.3.1: copyleft-next 0.3.1",
|
134 |
+
"cpal-1.0: Common Public Attribution License 1.0",
|
135 |
+
"cpl-1.0: Common Public License 1.0",
|
136 |
+
"cpol-1.02: Code Project Open License 1.02",
|
137 |
+
"crossword: Crossword License",
|
138 |
+
"crystalstacker: CrystalStacker License",
|
139 |
+
"cua-opl-1.0: CUA Office Public License v1.0",
|
140 |
+
"cube: Cube License",
|
141 |
+
"curl: curl License",
|
142 |
+
"d-fsl-1.0: Deutsche Freie Software Lizenz",
|
143 |
+
"diffmark: diffmark license",
|
144 |
+
"doc: DOC License",
|
145 |
+
"dotseqn: Dotseqn License",
|
146 |
+
"dsdp: DSDP License",
|
147 |
+
"dvipdfm: dvipdfm License",
|
148 |
+
"ecl-1.0: Educational Community License v1.0",
|
149 |
+
"ecl-2.0: Educational Community License v2.0",
|
150 |
+
"ecos-2.0: eCos license version 2.0",
|
151 |
+
"efl-1.0: Eiffel Forum License v1.0",
|
152 |
+
"efl-2.0: Eiffel Forum License v2.0",
|
153 |
+
"egenix: eGenix.com Public License 1.1.0",
|
154 |
+
"entessa: Entessa Public License v1.0",
|
155 |
+
"epics: EPICS Open License",
|
156 |
+
"epl-1.0: Eclipse Public License 1.0",
|
157 |
+
"epl-2.0: Eclipse Public License 2.0",
|
158 |
+
"erlpl-1.1: Erlang Public License v1.1",
|
159 |
+
"etalab-2.0: Etalab Open License 2.0",
|
160 |
+
"eudatagrid: EU DataGrid Software License",
|
161 |
+
"eupl-1.0: European Union Public License 1.0",
|
162 |
+
"eupl-1.1: European Union Public License 1.1",
|
163 |
+
"eupl-1.2: European Union Public License 1.2",
|
164 |
+
"eurosym: Eurosym License",
|
165 |
+
"fair: Fair License",
|
166 |
+
"frameworx-1.0: Frameworx Open License 1.0",
|
167 |
+
"freeimage: FreeImage Public License v1.0",
|
168 |
+
"fsfap: FSF All Permissive License",
|
169 |
+
"fsful: FSF Unlimited License",
|
170 |
+
"fsfullr: FSF Unlimited License (with License Retention)",
|
171 |
+
"ftl: Freetype Project License",
|
172 |
+
"gfdl-1.1: GNU Free Documentation License v1.1",
|
173 |
+
"gfdl-1.1-invariants-only: GNU Free Documentation License v1.1 only - invariants",
|
174 |
+
"gfdl-1.1-invariants-or-later: GNU Free Documentation License v1.1 or later - invariants",
|
175 |
+
"gfdl-1.1-no-invariants-only: GNU Free Documentation License v1.1 only - no invariants",
|
176 |
+
"gfdl-1.1-no-invariants-or-later: GNU Free Documentation License v1.1 or later - no invariants",
|
177 |
+
"gfdl-1.1-only: GNU Free Documentation License v1.1 only",
|
178 |
+
"gfdl-1.1-or-later: GNU Free Documentation License v1.1 or later",
|
179 |
+
"gfdl-1.2: GNU Free Documentation License v1.2",
|
180 |
+
"gfdl-1.2-invariants-only: GNU Free Documentation License v1.2 only - invariants",
|
181 |
+
"gfdl-1.2-invariants-or-later: GNU Free Documentation License v1.2 or later - invariants",
|
182 |
+
"gfdl-1.2-no-invariants-only: GNU Free Documentation License v1.2 only - no invariants",
|
183 |
+
"gfdl-1.2-no-invariants-or-later: GNU Free Documentation License v1.2 or later - no invariants",
|
184 |
+
"gfdl-1.2-only: GNU Free Documentation License v1.2 only",
|
185 |
+
"gfdl-1.2-or-later: GNU Free Documentation License v1.2 or later",
|
186 |
+
"gfdl-1.3: GNU Free Documentation License v1.3",
|
187 |
+
"gfdl-1.3-invariants-only: GNU Free Documentation License v1.3 only - invariants",
|
188 |
+
"gfdl-1.3-invariants-or-later: GNU Free Documentation License v1.3 or later - invariants",
|
189 |
+
"gfdl-1.3-no-invariants-only: GNU Free Documentation License v1.3 only - no invariants",
|
190 |
+
"gfdl-1.3-no-invariants-or-later: GNU Free Documentation License v1.3 or later - no invariants",
|
191 |
+
"gfdl-1.3-only: GNU Free Documentation License v1.3 only",
|
192 |
+
"gfdl-1.3-or-later: GNU Free Documentation License v1.3 or later",
|
193 |
+
"giftware: Giftware License",
|
194 |
+
"gl2ps: GL2PS License",
|
195 |
+
"glide: 3dfx Glide License",
|
196 |
+
"glulxe: Glulxe License",
|
197 |
+
"glwtpl: Good Luck With That Public License",
|
198 |
+
"gnuplot: gnuplot License",
|
199 |
+
"gpl-1.0: GNU General Public License v1.0 only",
|
200 |
+
"gpl-1.0+: GNU General Public License v1.0 or later",
|
201 |
+
"gpl-1.0-only: GNU General Public License v1.0 only",
|
202 |
+
"gpl-1.0-or-later: GNU General Public License v1.0 or later",
|
203 |
+
"gpl-2.0: GNU General Public License v2.0 only",
|
204 |
+
"gpl-2.0+: GNU General Public License v2.0 or later",
|
205 |
+
"gpl-2.0-only: GNU General Public License v2.0 only",
|
206 |
+
"gpl-2.0-or-later: GNU General Public License v2.0 or later",
|
207 |
+
"gpl-2.0-with-autoconf-exception: GNU General Public License v2.0 w/Autoconf exception",
|
208 |
+
"gpl-2.0-with-bison-exception: GNU General Public License v2.0 w/Bison exception",
|
209 |
+
"gpl-2.0-with-classpath-exception: GNU General Public License v2.0 w/Classpath exception",
|
210 |
+
"gpl-2.0-with-font-exception: GNU General Public License v2.0 w/Font exception",
|
211 |
+
"gpl-2.0-with-gcc-exception: GNU General Public License v2.0 w/GCC Runtime Library exception",
|
212 |
+
"gpl-3.0: GNU General Public License v3.0 only",
|
213 |
+
"gpl-3.0+: GNU General Public License v3.0 or later",
|
214 |
+
"gpl-3.0-only: GNU General Public License v3.0 only",
|
215 |
+
"gpl-3.0-or-later: GNU General Public License v3.0 or later",
|
216 |
+
"gpl-3.0-with-autoconf-exception: GNU General Public License v3.0 w/Autoconf exception",
|
217 |
+
"gpl-3.0-with-gcc-exception: GNU General Public License v3.0 w/GCC Runtime Library exception",
|
218 |
+
"gsoap-1.3b: gSOAP Public License v1.3b",
|
219 |
+
"haskellreport: Haskell Language Report License",
|
220 |
+
"hippocratic-2.1: Hippocratic License 2.1",
|
221 |
+
"hpnd: Historical Permission Notice and Disclaimer",
|
222 |
+
"hpnd-sell-variant: Historical Permission Notice and Disclaimer - sell variant",
|
223 |
+
"htmltidy: HTML Tidy License",
|
224 |
+
"ibm-pibs: IBM PowerPC Initialization and Boot Software",
|
225 |
+
"icu: ICU License",
|
226 |
+
"ijg: Independent JPEG Group License",
|
227 |
+
"imagemagick: ImageMagick License",
|
228 |
+
"imatix: iMatix Standard Function Library Agreement",
|
229 |
+
"imlib2: Imlib2 License",
|
230 |
+
"info-zip: Info-ZIP License",
|
231 |
+
"intel: Intel Open Source License",
|
232 |
+
"intel-acpi: Intel ACPI Software License Agreement",
|
233 |
+
"interbase-1.0: Interbase Public License v1.0",
|
234 |
+
"ipa: IPA Font License",
|
235 |
+
"ipl-1.0: IBM Public License v1.0",
|
236 |
+
"isc: ISC License",
|
237 |
+
"jasper-2.0: JasPer License",
|
238 |
+
"jpnic: Japan Network Information Center License",
|
239 |
+
"json: JSON License",
|
240 |
+
"lal-1.2: Licence Art Libre 1.2",
|
241 |
+
"lal-1.3: Licence Art Libre 1.3",
|
242 |
+
"latex2e: Latex2e License",
|
243 |
+
"leptonica: Leptonica License",
|
244 |
+
"lgpl-2.0: GNU Library General Public License v2 only",
|
245 |
+
"lgpl-2.0+: GNU Library General Public License v2 or later",
|
246 |
+
"lgpl-2.0-only: GNU Library General Public License v2 only",
|
247 |
+
"lgpl-2.0-or-later: GNU Library General Public License v2 or later",
|
248 |
+
"lgpl-2.1: GNU Lesser General Public License v2.1 only",
|
249 |
+
"lgpl-2.1+: GNU Library General Public License v2.1 or later",
|
250 |
+
"lgpl-2.1-only: GNU Lesser General Public License v2.1 only",
|
251 |
+
"lgpl-2.1-or-later: GNU Lesser General Public License v2.1 or later",
|
252 |
+
"lgpl-3.0: GNU Lesser General Public License v3.0 only",
|
253 |
+
"lgpl-3.0+: GNU Lesser General Public License v3.0 or later",
|
254 |
+
"lgpl-3.0-only: GNU Lesser General Public License v3.0 only",
|
255 |
+
"lgpl-3.0-or-later: GNU Lesser General Public License v3.0 or later",
|
256 |
+
"lgpllr: Lesser General Public License For Linguistic Resources",
|
257 |
+
"libpng: libpng License",
|
258 |
+
"libpng-2.0: PNG Reference Library version 2",
|
259 |
+
"libselinux-1.0: libselinux public domain notice",
|
260 |
+
"libtiff: libtiff License",
|
261 |
+
"liliq-p-1.1: Licence Libre du Qu\u00e9bec \u2013 Permissive version 1.1",
|
262 |
+
"liliq-r-1.1: Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 version 1.1",
|
263 |
+
"liliq-rplus-1.1: Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 forte version 1.1",
|
264 |
+
"linux-openib: Linux Kernel Variant of OpenIB.org license",
|
265 |
+
"lpl-1.0: Lucent Public License Version 1.0",
|
266 |
+
"lpl-1.02: Lucent Public License v1.02",
|
267 |
+
"lppl-1.0: LaTeX Project Public License v1.0",
|
268 |
+
"lppl-1.1: LaTeX Project Public License v1.1",
|
269 |
+
"lppl-1.2: LaTeX Project Public License v1.2",
|
270 |
+
"lppl-1.3a: LaTeX Project Public License v1.3a",
|
271 |
+
"lppl-1.3c: LaTeX Project Public License v1.3c",
|
272 |
+
"makeindex: MakeIndex License",
|
273 |
+
"miros: The MirOS Licence",
|
274 |
+
"mit: MIT License",
|
275 |
+
"mit-0: MIT No Attribution",
|
276 |
+
"mit-advertising: Enlightenment License (e16)",
|
277 |
+
"mit-cmu: CMU License",
|
278 |
+
"mit-enna: enna License",
|
279 |
+
"mit-feh: feh License",
|
280 |
+
"mit-open-group: MIT Open Group variant",
|
281 |
+
"mitnfa: MIT +no-false-attribs license",
|
282 |
+
"motosoto: Motosoto License",
|
283 |
+
"mpich2: mpich2 License",
|
284 |
+
"mpl-1.0: Mozilla Public License 1.0",
|
285 |
+
"mpl-1.1: Mozilla Public License 1.1",
|
286 |
+
"mpl-2.0: Mozilla Public License 2.0",
|
287 |
+
"mpl-2.0-no-copyleft-exception: Mozilla Public License 2.0 (no copyleft exception)",
|
288 |
+
"ms-pl: Microsoft Public License",
|
289 |
+
"ms-rl: Microsoft Reciprocal License",
|
290 |
+
"mtll: Matrix Template Library License",
|
291 |
+
"mulanpsl-1.0: Mulan Permissive Software License, Version 1",
|
292 |
+
"mulanpsl-2.0: Mulan Permissive Software License, Version 2",
|
293 |
+
"multics: Multics License",
|
294 |
+
"mup: Mup License",
|
295 |
+
"nasa-1.3: NASA Open Source Agreement 1.3",
|
296 |
+
"naumen: Naumen Public License",
|
297 |
+
"nbpl-1.0: Net Boolean Public License v1",
|
298 |
+
"ncgl-uk-2.0: Non-Commercial Government Licence",
|
299 |
+
"ncsa: University of Illinois/NCSA Open Source License",
|
300 |
+
"net-snmp: Net-SNMP License",
|
301 |
+
"netcdf: NetCDF license",
|
302 |
+
"newsletr: Newsletr License",
|
303 |
+
"ngpl: Nethack General Public License",
|
304 |
+
"nist-pd: NIST Public Domain Notice",
|
305 |
+
"nist-pd-fallback: NIST Public Domain Notice with license fallback",
|
306 |
+
"nlod-1.0: Norwegian Licence for Open Government Data",
|
307 |
+
"nlpl: No Limit Public License",
|
308 |
+
"nokia: Nokia Open Source License",
|
309 |
+
"nosl: Netizen Open Source License",
|
310 |
+
"noweb: Noweb License",
|
311 |
+
"npl-1.0: Netscape Public License v1.0",
|
312 |
+
"npl-1.1: Netscape Public License v1.1",
|
313 |
+
"nposl-3.0: Non-Profit Open Software License 3.0",
|
314 |
+
"nrl: NRL License",
|
315 |
+
"ntp: NTP License",
|
316 |
+
"ntp-0: NTP No Attribution",
|
317 |
+
"nunit: Nunit License",
|
318 |
+
"o-uda-1.0: Open Use of Data Agreement v1.0",
|
319 |
+
"occt-pl: Open CASCADE Technology Public License",
|
320 |
+
"oclc-2.0: OCLC Research Public License 2.0",
|
321 |
+
"odbl-1.0: ODC Open Database License v1.0",
|
322 |
+
"odc-by-1.0: Open Data Commons Attribution License v1.0",
|
323 |
+
"ofl-1.0: SIL Open Font License 1.0",
|
324 |
+
"ofl-1.0-no-rfn: SIL Open Font License 1.0 with no Reserved Font Name",
|
325 |
+
"ofl-1.0-rfn: SIL Open Font License 1.0 with Reserved Font Name",
|
326 |
+
"ofl-1.1: SIL Open Font License 1.1",
|
327 |
+
"ofl-1.1-no-rfn: SIL Open Font License 1.1 with no Reserved Font Name",
|
328 |
+
"ofl-1.1-rfn: SIL Open Font License 1.1 with Reserved Font Name",
|
329 |
+
"ogc-1.0: OGC Software License, Version 1.0",
|
330 |
+
"ogl-canada-2.0: Open Government Licence - Canada",
|
331 |
+
"ogl-uk-1.0: Open Government Licence v1.0",
|
332 |
+
"ogl-uk-2.0: Open Government Licence v2.0",
|
333 |
+
"ogl-uk-3.0: Open Government Licence v3.0",
|
334 |
+
"ogtsl: Open Group Test Suite License",
|
335 |
+
"oldap-1.1: Open LDAP Public License v1.1",
|
336 |
+
"oldap-1.2: Open LDAP Public License v1.2",
|
337 |
+
"oldap-1.3: Open LDAP Public License v1.3",
|
338 |
+
"oldap-1.4: Open LDAP Public License v1.4",
|
339 |
+
"oldap-2.0: Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)",
|
340 |
+
"oldap-2.0.1: Open LDAP Public License v2.0.1",
|
341 |
+
"oldap-2.1: Open LDAP Public License v2.1",
|
342 |
+
"oldap-2.2: Open LDAP Public License v2.2",
|
343 |
+
"oldap-2.2.1: Open LDAP Public License v2.2.1",
|
344 |
+
"oldap-2.2.2: Open LDAP Public License 2.2.2",
|
345 |
+
"oldap-2.3: Open LDAP Public License v2.3",
|
346 |
+
"oldap-2.4: Open LDAP Public License v2.4",
|
347 |
+
"oldap-2.5: Open LDAP Public License v2.5",
|
348 |
+
"oldap-2.6: Open LDAP Public License v2.6",
|
349 |
+
"oldap-2.7: Open LDAP Public License v2.7",
|
350 |
+
"oldap-2.8: Open LDAP Public License v2.8",
|
351 |
+
"oml: Open Market License",
|
352 |
+
"openssl: OpenSSL License",
|
353 |
+
"opl-1.0: Open Public License v1.0",
|
354 |
+
"oset-pl-2.1: OSET Public License version 2.1",
|
355 |
+
"osl-1.0: Open Software License 1.0",
|
356 |
+
"osl-1.1: Open Software License 1.1",
|
357 |
+
"osl-2.0: Open Software License 2.0",
|
358 |
+
"osl-2.1: Open Software License 2.1",
|
359 |
+
"osl-3.0: Open Software License 3.0",
|
360 |
+
"parity-6.0.0: The Parity Public License 6.0.0",
|
361 |
+
"parity-7.0.0: The Parity Public License 7.0.0",
|
362 |
+
"pddl-1.0: ODC Public Domain Dedication & License 1.0",
|
363 |
+
"php-3.0: PHP License v3.0",
|
364 |
+
"php-3.01: PHP License v3.01",
|
365 |
+
"plexus: Plexus Classworlds License",
|
366 |
+
"polyform-noncommercial-1.0.0: PolyForm Noncommercial License 1.0.0",
|
367 |
+
"polyform-small-business-1.0.0: PolyForm Small Business License 1.0.0",
|
368 |
+
"postgresql: PostgreSQL License",
|
369 |
+
"psf-2.0: Python Software Foundation License 2.0",
|
370 |
+
"psfrag: psfrag License",
|
371 |
+
"psutils: psutils License",
|
372 |
+
"python-2.0: Python License 2.0",
|
373 |
+
"qhull: Qhull License",
|
374 |
+
"qpl-1.0: Q Public License 1.0",
|
375 |
+
"rdisc: Rdisc License",
|
376 |
+
"rhecos-1.1: Red Hat eCos Public License v1.1",
|
377 |
+
"rpl-1.1: Reciprocal Public License 1.1",
|
378 |
+
"rpl-1.5: Reciprocal Public License 1.5",
|
379 |
+
"rpsl-1.0: RealNetworks Public Source License v1.0",
|
380 |
+
"rsa-md: RSA Message-Digest License",
|
381 |
+
"rscpl: Ricoh Source Code Public License",
|
382 |
+
"ruby: Ruby License",
|
383 |
+
"sax-pd: Sax Public Domain Notice",
|
384 |
+
"saxpath: Saxpath License",
|
385 |
+
"scea: SCEA Shared Source License",
|
386 |
+
"sendmail: Sendmail License",
|
387 |
+
"sendmail-8.23: Sendmail License 8.23",
|
388 |
+
"sgi-b-1.0: SGI Free Software License B v1.0",
|
389 |
+
"sgi-b-1.1: SGI Free Software License B v1.1",
|
390 |
+
"sgi-b-2.0: SGI Free Software License B v2.0",
|
391 |
+
"shl-0.5: Solderpad Hardware License v0.5",
|
392 |
+
"shl-0.51: Solderpad Hardware License, Version 0.51",
|
393 |
+
"simpl-2.0: Simple Public License 2.0",
|
394 |
+
"sissl: Sun Industry Standards Source License v1.1",
|
395 |
+
"sissl-1.2: Sun Industry Standards Source License v1.2",
|
396 |
+
"sleepycat: Sleepycat License",
|
397 |
+
"smlnj: Standard ML of New Jersey License",
|
398 |
+
"smppl: Secure Messaging Protocol Public License",
|
399 |
+
"snia: SNIA Public License 1.1",
|
400 |
+
"spencer-86: Spencer License 86",
|
401 |
+
"spencer-94: Spencer License 94",
|
402 |
+
"spencer-99: Spencer License 99",
|
403 |
+
"spl-1.0: Sun Public License v1.0",
|
404 |
+
"ssh-openssh: SSH OpenSSH license",
|
405 |
+
"ssh-short: SSH short notice",
|
406 |
+
"sspl-1.0: Server Side Public License, v 1",
|
407 |
+
"standardml-nj: Standard ML of New Jersey License",
|
408 |
+
"sugarcrm-1.1.3: SugarCRM Public License v1.1.3",
|
409 |
+
"swl: Scheme Widget Library (SWL) Software License Agreement",
|
410 |
+
"tapr-ohl-1.0: TAPR Open Hardware License v1.0",
|
411 |
+
"tcl: TCL/TK License",
|
412 |
+
"tcp-wrappers: TCP Wrappers License",
|
413 |
+
"tmate: TMate Open Source License",
|
414 |
+
"torque-1.1: TORQUE v2.5+ Software License v1.1",
|
415 |
+
"tosl: Trusster Open Source License",
|
416 |
+
"tu-berlin-1.0: Technische Universitaet Berlin License 1.0",
|
417 |
+
"tu-berlin-2.0: Technische Universitaet Berlin License 2.0",
|
418 |
+
"ucl-1.0: Upstream Compatibility License v1.0",
|
419 |
+
"unicode-dfs-2015: Unicode License Agreement - Data Files and Software (2015)",
|
420 |
+
"unicode-dfs-2016: Unicode License Agreement - Data Files and Software (2016)",
|
421 |
+
"unicode-tou: Unicode Terms of Use",
|
422 |
+
"unlicense: The Unlicense",
|
423 |
+
"upl-1.0: Universal Permissive License v1.0",
|
424 |
+
"vim: Vim License",
|
425 |
+
"vostrom: VOSTROM Public License for Open Source",
|
426 |
+
"vsl-1.0: Vovida Software License v1.0",
|
427 |
+
"w3c: W3C Software Notice and License (2002-12-31)",
|
428 |
+
"w3c-19980720: W3C Software Notice and License (1998-07-20)",
|
429 |
+
"w3c-20150513: W3C Software Notice and Document License (2015-05-13)",
|
430 |
+
"watcom-1.0: Sybase Open Watcom Public License 1.0",
|
431 |
+
"wsuipa: Wsuipa License",
|
432 |
+
"wtfpl: Do What The F*ck You Want To Public License",
|
433 |
+
"wxwindows: wxWindows Library License",
|
434 |
+
"x11: X11 License",
|
435 |
+
"xerox: Xerox License",
|
436 |
+
"xfree86-1.1: XFree86 License 1.1",
|
437 |
+
"xinetd: xinetd License",
|
438 |
+
"xnet: X.Net License",
|
439 |
+
"xpp: XPP License",
|
440 |
+
"xskat: XSkat License",
|
441 |
+
"ypl-1.0: Yahoo! Public License v1.0",
|
442 |
+
"ypl-1.1: Yahoo! Public License v1.1",
|
443 |
+
"zed: Zed License",
|
444 |
+
"zend-2.0: Zend License v2.0",
|
445 |
+
"zimbra-1.3: Zimbra Public License v1.3",
|
446 |
+
"zimbra-1.4: Zimbra Public License v1.4",
|
447 |
+
"zlib: zlib License",
|
448 |
+
"zlib-acknowledgement: zlib/libpng License with Acknowledgement",
|
449 |
+
"zpl-1.1: Zope Public License 1.1",
|
450 |
+
"zpl-2.0: Zope Public License 2.0",
|
451 |
+
"zpl-2.1: Zope Public License 2.1"
|
452 |
+
]
|