Code
-terms_inequality = pd.read_csv("data/supplementary/terms_inequality.csv")
+terms_inequality = pd.read_csv("02-data/supplementary/terms_inequality.csv")
md(tabulate(terms_inequality.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
@@ -5759,7 +5759,7 @@ Table 4: Inequality term cluster
An overview of the respective criteria used for inclusion or exclusion can be found in Table 5. It restricts studies to those that comprise primary research published after 2000, with a focus on the narrowing criteria specified in Table 5.
Code
-inclusion_criteria = pd.read_csv("data/supplementary/inclusion-criteria.tsv", sep="\t")
+inclusion_criteria = pd.read_csv("02-data/supplementary/inclusion-criteria.tsv", sep="\t")
md(tabulate(inclusion_criteria, showindex=False, headers="keys", tablefmt="grid"))
@@ -9294,7 +9294,7 @@ Figure 4: Available studies by primary type of intervention
def strength_for(val):
return list(study_strength_bins.keys())[list(study_strength_bins.values()).index(val)]
-findings_institutional = pd.read_csv("data/supplementary/findings-institutional.csv")
+findings_institutional = pd.read_csv("02-data/supplementary/findings-institutional.csv")
fd_df = validity.add_to_findings(findings_institutional, by_intervention, study_strength_bins)
md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
@@ -9558,7 +9558,7 @@ Table 6: Summary of main findings for institutional policies
Code
from src.model import validity
-findings_structural = pd.read_csv("data/supplementary/findings-structural.csv")
+findings_structural = pd.read_csv("02-data/supplementary/findings-structural.csv")
fd_df = validity.add_to_findings(findings_structural, by_intervention, study_strength_bins)
md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
@@ -9794,7 +9794,7 @@ Table 7: Summary of main findings for structural policies
Code
from src.model import validity
-findings_agency = pd.read_csv("data/supplementary/findings-agency.csv")
+findings_agency = pd.read_csv("02-data/supplementary/findings-agency.csv")
fd_df = validity.add_to_findings(findings_agency, by_intervention, study_strength_bins)
md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
@@ -22545,7 +22545,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
sns.set_style("whitegrid")
-DATA_DIR=Path("./data")
+DATA_DIR=Path("./02-data")
RAW_DATA=DATA_DIR.joinpath("raw")
WORKING_DATA=DATA_DIR.joinpath("intermediate")
PROCESSED_DATA=DATA_DIR.joinpath("processed")
@@ -22835,7 +22835,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
```{python}
#| label: tbl-wow-terms
#| tbl-cap: World of work term cluster
-terms_wow = pd.read_csv("data/supplementary/terms_wow.csv")
+terms_wow = pd.read_csv("02-data/supplementary/terms_wow.csv")
md(tabulate(terms_wow.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
```
@@ -22857,7 +22857,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
```{python}
#| label: tbl-intervention-terms
#| tbl-cap: Intervention term cluster
-terms_policy = pd.read_csv("data/supplementary/terms_policy.csv")
+terms_policy = pd.read_csv("02-data/supplementary/terms_policy.csv")
# different headers to include 'social norms'
headers = ["General", "Institutional", "Structural", "Agency & social norms"]
md(tabulate(terms_policy.fillna(""), showindex=False, headers=headers, tablefmt="grid"))
@@ -22873,7 +22873,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
```{python}
#| label: tbl-inequality-terms
#| tbl-cap: Inequality term cluster
-terms_inequality = pd.read_csv("data/supplementary/terms_inequality.csv")
+terms_inequality = pd.read_csv("02-data/supplementary/terms_inequality.csv")
md(tabulate(terms_inequality.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
```
@@ -22897,7 +22897,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
```{python}
#| label: tbl-inclusion-criteria
-inclusion_criteria = pd.read_csv("data/supplementary/inclusion-criteria.tsv", sep="\t")
+inclusion_criteria = pd.read_csv("02-data/supplementary/inclusion-criteria.tsv", sep="\t")
md(tabulate(inclusion_criteria, showindex=False, headers="keys", tablefmt="grid"))
```
@@ -22948,7 +22948,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
nr_extraction_done = len([1 for kw in all_keywords if "done::extracted" in kw])
t3 = "`" * 3
-# FIXME use data/supplementary undeduplciated counts to get database starting and snowballing counts
+# FIXME use 02-data/supplementary undeduplciated counts to get database starting and snowballing counts
# from: https://github.com/quarto-dev/quarto-cli/discussions/6508
print(f"""
```{mermaid}
@@ -23145,7 +23145,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
def strength_for(val):
return list(study_strength_bins.keys())[list(study_strength_bins.values()).index(val)]
-findings_institutional = pd.read_csv("data/supplementary/findings-institutional.csv")
+findings_institutional = pd.read_csv("02-data/supplementary/findings-institutional.csv")
fd_df = validity.add_to_findings(findings_institutional, by_intervention, study_strength_bins)
md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
@@ -23378,7 +23378,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
#| label: tbl-findings-structural
from src.model import validity
-findings_structural = pd.read_csv("data/supplementary/findings-structural.csv")
+findings_structural = pd.read_csv("02-data/supplementary/findings-structural.csv")
fd_df = validity.add_to_findings(findings_structural, by_intervention, study_strength_bins)
md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
@@ -23615,7 +23615,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
#| label: tbl-findings-agency
from src.model import validity
-findings_agency = pd.read_csv("data/supplementary/findings-agency.csv")
+findings_agency = pd.read_csv("02-data/supplementary/findings-agency.csv")
fd_df = validity.add_to_findings(findings_agency, by_intervention, study_strength_bins)
md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
diff --git a/final_document/scoping_review.pdf b/05-final_paper/scoping_review.pdf
similarity index 100%
rename from final_document/scoping_review.pdf
rename to 05-final_paper/scoping_review.pdf
diff --git a/Makefile b/Makefile
index 681a5d3..7ad96ff 100644
--- a/Makefile
+++ b/Makefile
@@ -8,9 +8,6 @@ render: scoping_review.qmd
extract: scoping_review.qmd
poetry extract
- poetry prisma
release: scoping_review.qmd
- poetry extract
- poetry prisma
poetry milestone
diff --git a/README.md b/README.md
deleted file mode 100644
index fbf9a15..0000000
--- a/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Scoping Review: Inequalities on the Labour Market
-
-This repository contains all data, modelling and processing source code and the complete textual content to reproduce the scoping review study.
-The most up-to-date version of this repository can always be found [here](https://git.martyoeh.me/professional/wow-inequalities).
-
-Raw references, extracted and processed data can all be found in the `data/` directory:
-Reference data include the unmodified database queries using the scoping review search terms,
-and the bibtex file produced by Zotero after tagging and sorting in a Zotero library, ready to be re-imported into the application.
-Extracted data include the fully extracted studies which make up the main sample for the review.
-Processed data are ready to import into a dataframe or visualize in a report.
-
-All full texts and visualization code reside in the `manuscripts/` directory.
-The full working paper text and code can be found in the `scoping_review.qmd` file.
-The full article text can be found in the `article.qmd` file.
-
-They both make use of supplementary extraction and processing code which resides in the `src/` directory,
-mainly to load processed data from the `data/` directory and turn it into `.csv` data,
-as well as pre-processing for visualization and validity ranking within the study.
-
-## Execution and Reproduction
-
-To reproduce the content herein, there are 3 requirements:
-
-- [Python](https://www.python.org/) (minimum version 3.11)
-- [Poetry package manager](https://python-poetry.org/)
-- [Quarto publishing system](https://quarto.org/)
-
-Once you have all required software to install all necessary package dependencies,
-invoke poetry from the main repository directory:
-
-```bash
-poetry install
-```
-
-Now, by invoking `make` the project can be rendered:
-
-```bash
-make
-```
-
-Make will by default extract the processed data and use it to render the full project into a pdf, an html and a docx version of the review, which are deposited in the `outputs/` directory.
-
-You can invoke any of the `extract`, `render`, `release` steps manually instead by executing e.g. `make extract`.
diff --git a/_extensions/quarto-journals/elsevier/_extension.yml b/_extensions/quarto-journals/elsevier/_extension.yml
deleted file mode 100644
index b8993c5..0000000
--- a/_extensions/quarto-journals/elsevier/_extension.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-title: Elsevier Journal Format
-author: Charles Teague
-version: 0.4.2
-quarto-required: ">=1.2.198"
-contributes:
- formats:
- common:
- date-format: full
- filters:
- - elsevier.lua
- pdf:
- documentclass: elsarticle
- template-partials: ["partials/before-body.tex", "partials/title.tex"]
- format-resources:
- - elsarticle.cls
- cite-method: natbib
- number-sections: true
- html:
- theme: styles/elsevier.scss
diff --git a/_extensions/quarto-journals/elsevier/bib/elsarticle-harv.bst b/_extensions/quarto-journals/elsevier/bib/elsarticle-harv.bst
deleted file mode 100644
index 3bf1acb..0000000
--- a/_extensions/quarto-journals/elsevier/bib/elsarticle-harv.bst
+++ /dev/null
@@ -1,1598 +0,0 @@
-%%
-%% This is file `elsarticle-harv.bst' (Version 2.1),
-%%
-%% Copyright 2009-2020 Elsevier Ltd
-%%
-%% This file is part of the 'Elsarticle Bundle'.
-%% ---------------------------------------------
-%%
-%% It may be distributed under the conditions of the LaTeX Project Public
-%% License, either version 1.2 of this license or (at your option) any
-%% later version. The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.2 or later is part of all distributions of LaTeX
-%% version 1999/12/01 or later.
-%%
-%% $Id: elsarticle-harv.bst 194 2020-11-23 11:29:27Z rishi $
-%%
-%% $URL: https://lenova.river-valley.com/svn/elsarticle/trunk/elsarticle-harv.bst $
-%%
-
-ENTRY
- { address
- archive
- author
- booktitle
- chapter
- collaboration
- edition
- editor
- howpublished
- institution
- journal
- key
- month
- note
- number
- organization
- pages
- publisher
- school
- series
- title
- type
- volume
- year
- url
- doi
- eprint
- pubmed
- }
- {}
- { label extra.label sort.label short.list }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-STRINGS { urlprefix doiprefix eprintprefix pubmedprefix }
-
-FUNCTION {init.web.variables}
-{
- "\URLprefix " 'urlprefix :=
- "\DOIprefix" 'doiprefix :=
- "\ArXivprefix " 'eprintprefix :=
- "\Pubmedprefix " 'pubmedprefix :=
-}
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-STRINGS { s t}
-FUNCTION {output.comma}
-{ ", " * write$}
-
-FUNCTION {output.nonnull}
-{ 's :=
- output.state mid.sentence =
- { ". " * write$ }
- { output.state after.block =
- { add.period$ write$
- newline$
- "\newblock " write$
- }
- { output.state before.all =
- 'write$
- { ", " * write$ }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-FUNCTION {output.commanull}
-{ 's :=
- output.state mid.sentence =
- { ", " * write$ }
- { output.state after.block =
- { ", " * write$
- newline$
- "\newblock " write$
- }
- { output.state before.all =
- 'write$
- { add.period$ " " * write$ }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-FUNCTION {output}
-{ duplicate$ empty$
- 'pop$
- 'output.nonnull
- if$
-}
-FUNCTION {output.check}
-{ 't :=
- duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-FUNCTION {output.book.check}
-{ 't :=
- duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-FUNCTION {fin.entry}
-{ add.period$
- write$
- newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-FUNCTION {new.sentence}
-{ output.state after.block =
- 'skip$
- { output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-FUNCTION {add.blank}
-{ " " * before.all 'output.state :=
-}
-
-FUNCTION {date.block}
-{
- new.block
-}
-
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
-}
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
- if$
-}
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
- if$
-}
-FUNCTION {new.block.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.block
- if$
-}
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
- if$
-}
-FUNCTION {emphasize}
-{ duplicate$ empty$
- { pop$ "" }
- { "\textit{" swap$ * "}" * }
- if$
-}
-FUNCTION {tie.or.space.prefix}
-{ duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$
-}
-
-FUNCTION {capitalize}
-{ "u" change.case$ "t" change.case$ }
-
-FUNCTION {space.word}
-{ " " swap$ * " " * }
- % Here are the language-specific definitions for explicit words.
- % Each function has a name bbl.xxx where xxx is the English word.
- % The language selected here is ENGLISH
-FUNCTION {bbl.and}
-{ "and"}
-
-FUNCTION {bbl.etal}
-{ "et~al." }
-
-FUNCTION {bbl.editors}
-{ "Eds." }
-
-FUNCTION {bbl.editor}
-{ "Ed." }
-
-FUNCTION {bbl.edby}
-{ "edited by" }
-
-FUNCTION {bbl.edition}
-{ "ed." }
-
-FUNCTION {bbl.volume}
-{ "volume" }
-
-FUNCTION {bbl.of}
-{ "of" }
-
-FUNCTION {bbl.number}
-{ "number" }
-
-FUNCTION {bbl.nr}
-{ "no." }
-
-FUNCTION {bbl.in}
-{ "in" }
-
-FUNCTION {bbl.pages}
-{ "pp." }
-
-FUNCTION {bbl.page}
-{ "p." }
-
-FUNCTION {bbl.chapter}
-{ "chapter" }
-
-FUNCTION {bbl.techrep}
-{ "Technical Report" }
-
-FUNCTION {bbl.mthesis}
-{ "Master's thesis" }
-
-FUNCTION {bbl.phdthesis}
-{ "Ph.D. thesis" }
-
-MACRO {jan} {"January"}
-
-MACRO {feb} {"February"}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"April"}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"August"}
-
-MACRO {sep} {"September"}
-
-MACRO {oct} {"October"}
-
-MACRO {nov} {"November"}
-
-MACRO {dec} {"December"}
-
-MACRO {acmcs} {"ACM Comput. Surv."}
-
-MACRO {acta} {"Acta Inf."}
-
-MACRO {cacm} {"Commun. ACM"}
-
-MACRO {ibmjrd} {"IBM J. Res. Dev."}
-
-MACRO {ibmsj} {"IBM Syst.~J."}
-
-MACRO {ieeese} {"IEEE Trans. Software Eng."}
-
-MACRO {ieeetc} {"IEEE Trans. Comput."}
-
-MACRO {ieeetcad}
- {"IEEE Trans. Comput. Aid. Des."}
-
-MACRO {ipl} {"Inf. Process. Lett."}
-
-MACRO {jacm} {"J.~ACM"}
-
-MACRO {jcss} {"J.~Comput. Syst. Sci."}
-
-MACRO {scp} {"Sci. Comput. Program."}
-
-MACRO {sicomp} {"SIAM J. Comput."}
-
-MACRO {tocs} {"ACM Trans. Comput. Syst."}
-
-MACRO {tods} {"ACM Trans. Database Syst."}
-
-MACRO {tog} {"ACM Trans. Graphic."}
-
-MACRO {toms} {"ACM Trans. Math. Software"}
-
-MACRO {toois} {"ACM Trans. Office Inf. Syst."}
-
-MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
-
-MACRO {tcs} {"Theor. Comput. Sci."}
-
-FUNCTION {bibinfo.check}
-{ swap$
- duplicate$ missing$
- {
- pop$ pop$
- ""
- }
- { duplicate$ empty$
- {
- swap$ pop$
- }
- { swap$
- "\bibinfo{" swap$ * "}{" * swap$ * "}" *
- }
- if$
- }
- if$
-}
-FUNCTION {bibinfo.warn}
-{ swap$
- duplicate$ missing$
- {
- swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
- ""
- }
- { duplicate$ empty$
- {
- swap$ "empty " swap$ * " in " * cite$ * warning$
- }
- { swap$
- pop$
- }
- if$
- }
- if$
-}
-
-STRINGS { bibinfo}
-
-INTEGERS { nameptr namesleft numnames }
-
-FUNCTION {format.names}
-{ 'bibinfo :=
- duplicate$ empty$ 'skip$ {
- 's :=
- "" 't :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{vv~}{ll}{, jj}{, f{.}.}"
- format.name$
- bibinfo bibinfo.check
- 't :=
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- "," *
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
- t "others" =
- {
- " " * bbl.etal *
- }
- { " " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
- } if$
-}
-FUNCTION {format.names.ed}
-{
- format.names
-}
-FUNCTION {format.key}
-{ empty$
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION {format.authors}
-{ author "author" format.names
- duplicate$ empty$ 'skip$
- { collaboration "collaboration" bibinfo.check
- duplicate$ empty$ 'skip$
- { " (" swap$ * ")" * }
- if$
- *
- }
- if$
-}
-
-FUNCTION {get.bbl.editor}
-{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
-
-FUNCTION {format.editors}
-{ editor "editor" format.names duplicate$ empty$ 'skip$
- {
- " " *
- get.bbl.editor
- capitalize
- "(" swap$ * ")" *
- *
- }
- if$
-}
-FUNCTION {format.note}
-{
- note empty$
- { "" }
- { note #1 #1 substring$
- duplicate$ "{" =
- 'skip$
- { output.state mid.sentence =
- { "l" }
- { "u" }
- if$
- change.case$
- }
- if$
- note #2 global.max$ substring$ * "note" bibinfo.check
- }
- if$
-}
-
-FUNCTION {format.title}
-{ title
- duplicate$ empty$ 'skip$
- { "t" change.case$ }
- if$
- "title" bibinfo.check
-}
-FUNCTION {format.full.names}
-{'s :=
- "" 't :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{vv~}{ll}" format.name$
- 't :=
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
- t "others" =
- {
- " " * bbl.etal *
- }
- {
- bbl.and
- space.word * t *
- }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {author.editor.key.full}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.full.names }
- if$
- }
- { author format.full.names }
- if$
-}
-
-FUNCTION {author.key.full}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.full.names }
- if$
-}
-
-FUNCTION {editor.key.full}
-{ editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.full.names }
- if$
-}
-
-FUNCTION {make.full.names}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.full
- { type$ "proceedings" =
- 'editor.key.full
- 'author.key.full
- if$
- }
- if$
-}
-
-FUNCTION {output.bibitem}
-{ newline$
- "\bibitem[{" write$
- label write$
- ")" make.full.names duplicate$ short.list =
- { pop$ }
- { * }
- if$
- "}]{" * write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-FUNCTION {n.dashify}
-{
- 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "-" =
- { t #1 #2 substring$ "--" = not
- { "--" *
- t #2 global.max$ substring$ 't :=
- }
- { { t #1 #1 substring$ "-" = }
- { "-" *
- t #2 global.max$ substring$ 't :=
- }
- while$
- }
- if$
- }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
- }
- while$
-}
-
-FUNCTION {word.in}
-{ bbl.in %capitalize
- ":" *
- " " * }
-
-FUNCTION {format.date}
-{ year "year" bibinfo.check duplicate$ empty$
- {
- }
- 'skip$
- if$
- extra.label *
- before.all 'output.state :=
- ", " swap$ *
-}
-FUNCTION {format.btitle}
-{ title "title" bibinfo.check
- duplicate$ empty$ 'skip$
- {
- }
- if$
-}
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-FUNCTION {format.bvolume}
-{ volume empty$
- { "" }
- { bbl.volume volume tie.or.space.prefix
- "volume" bibinfo.check * *
- series "series" bibinfo.check
- duplicate$ empty$ 'pop$
- { swap$ bbl.of space.word * swap$
- emphasize * }
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- { series empty$
- { number "number" bibinfo.check }
- { output.state mid.sentence =
- { bbl.number }
- { bbl.number capitalize }
- if$
- number tie.or.space.prefix "number" bibinfo.check * *
- bbl.in space.word *
- series "series" bibinfo.check *
- }
- if$
- }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION {format.edition}
-{ edition duplicate$ empty$ 'skip$
- {
- output.state mid.sentence =
- { "l" }
- { "t" }
- if$ change.case$
- "edition" bibinfo.check
- " " * bbl.edition *
- }
- if$
-}
-INTEGERS { multiresult }
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
- }
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
- if$
- }
- while$
- multiresult
-}
-%FUNCTION {format.pages}
-%{ pages duplicate$ empty$ 'skip$
-% { duplicate$ multi.page.check
-% {
-% n.dashify
-% }
-% {
-% }
-% if$
-% "pages" bibinfo.check
-% }
-% if$
-%}
-
-FUNCTION {format.pages}
-{ pages duplicate$ empty$ 'skip$
- { duplicate$ multi.page.check
- {
- bbl.pages swap$
- n.dashify
- }
- {
- bbl.page swap$
- }
- if$
- tie.or.space.prefix
- "pages" bibinfo.check
- * *
- }
- if$
-}
-
-FUNCTION {format.journal.pages}
-{ pages duplicate$ empty$ 'pop$
- { swap$ duplicate$ empty$
- { pop$ pop$ format.pages }
- {
- ", " *
- swap$
- n.dashify
- "pages" bibinfo.check
- *
- }
- if$
- }
- if$
-}
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
- duplicate$ empty$ 'skip$
- {
- "volume" bibinfo.check
- }
- if$
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- { "" }
- { type empty$
- { bbl.chapter }
- { type "l" change.case$
- "type" bibinfo.check
- }
- if$
- chapter tie.or.space.prefix
- "chapter" bibinfo.check
- * *
- }
- if$
-}
-
-FUNCTION {format.booktitle}
-{
- booktitle "booktitle" bibinfo.check
-}
-FUNCTION {format.in.ed.booktitle}
-{ format.booktitle duplicate$ empty$ 'skip$
- {
- editor "editor" format.names.ed duplicate$ empty$ 'pop$
- {
- " " *
- get.bbl.editor
- capitalize
- "(" swap$ * "), " *
- * swap$
- * }
- if$
- word.in swap$ *
- }
- if$
-}
-FUNCTION {format.thesis.type}
-{ type duplicate$ empty$
- 'pop$
- { swap$ pop$
- "t" change.case$ "type" bibinfo.check
- }
- if$
-}
-FUNCTION {format.tr.number}
-{ number "number" bibinfo.check
- type duplicate$ empty$
- { pop$ bbl.techrep }
- 'skip$
- if$
- "type" bibinfo.check
- swap$ duplicate$ empty$
- { pop$ "t" change.case$ }
- { tie.or.space.prefix * * }
- if$
-}
-FUNCTION {format.article.crossref}
-{
- word.in
- " \cite{" * crossref * "}" *
-}
-FUNCTION {format.book.crossref}
-{ volume duplicate$ empty$
- { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
- pop$ word.in
- }
- { bbl.volume
- capitalize
- swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
- }
- if$
- " \cite{" * crossref * "}" *
-}
-FUNCTION {format.incoll.inproc.crossref}
-{
- word.in
- " \cite{" * crossref * "}" *
-}
-FUNCTION {format.org.or.pub}
-{ 't :=
- ""
- address empty$ t empty$ and
- 'skip$
- {
- t empty$
- { address "address" bibinfo.check *
- }
- { t *
- address empty$
- 'skip$
- { ", " * address "address" bibinfo.check * }
- if$
- }
- if$
- }
- if$
-}
-FUNCTION {format.publisher.address}
-{ publisher "publisher" bibinfo.check format.org.or.pub
-}
-
-FUNCTION {format.organization.address}
-{ organization "organization" bibinfo.check format.org.or.pub
-}
-
-FUNCTION {print.url}
- {url duplicate$ empty$
- { pop$ "" }
- { new.sentence
- urlprefix "\url{" * swap$ * "}" *
- }
- if$
- }
-
-FUNCTION {print.doi}
- {doi duplicate$ empty$
- { pop$ "" }
- { new.sentence
- doiprefix "\doi{" * swap$ * "}" *
- }
- if$
- }
-
-FUNCTION {print.eprint}
- {eprint duplicate$ empty$
- { pop$ "" }
- { new.sentence
- duplicate$ "\href{http://arxiv.org/abs/" swap$ * "}{{\tt arXiv:" * swap$ * "}}" * }
- if$
- }
-
-FUNCTION {print.pubmed}
- {pubmed duplicate$ empty$
- { pop$ "" }
- { new.sentence
- pubmedprefix "\Pubmed{" * swap$ * "}" *
- }
- if$
- }
-
-FUNCTION {webpage}
-{ "%Type = Webpage" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- author empty$
- {
- format.title "title" output.check
- new.block
- format.date "year" output.check
- date.block
- }
- {
- format.date "year" output.check
- date.block
- format.title "title" output.check
- new.block
-}
- if$
- print.url output
- fin.entry
-}
-
-
-FUNCTION {article}
-{ "%Type = Article" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.date "year" output.check
- date.block
- format.title "title" output.check
- new.block
- crossref missing$
- {
- journal
- "journal" bibinfo.check
- "journal" output.check
- add.blank
- format.vol.num.pages output
- }
- { format.article.crossref output.nonnull
- }
- if$
- format.journal.pages
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {book}
-{ "%Type = Book" write$
- output.bibitem
- author empty$
- { format.editors "author and editor" output.check
- editor format.key output
- }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- format.date "year" output.check
- date.block
- format.btitle "title" output.check
- crossref missing$
- { format.bvolume output
- new.block
- format.number.series output
- format.edition output
- new.sentence
- format.publisher.address output
- }
- {
- new.block
- format.book.crossref output.nonnull
- }
- if$
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {booklet}
-{ "%Type = Booklet" write$
- output.bibitem
- format.authors output
- author format.key output
- format.date "year" output.check
- date.block
- format.title "title" output.check
- new.block
- howpublished "howpublished" bibinfo.check output
- address "address" bibinfo.check output
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {inbook}
-{ "%Type = Inbook" write$
- output.bibitem
- author empty$
- { format.editors "author and editor" output.check
- editor format.key output
- }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- format.date "year" output.check
- date.block
- format.btitle "title" output.check
- format.edition output
- crossref missing$
- {
- format.publisher.address output
- format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.number.series output
- new.sentence
- }
- {
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- format.pages "pages" output.check
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {incollection}
-{ "%Type = Incollection" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.date "year" output.check
- date.block
- format.title "title" output.book.check
- new.sentence
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.book.check
- format.edition output
- format.publisher.address output
- format.bvolume output
- format.number.series output
- format.chapter.pages output
- new.sentence
- }
- { format.incoll.inproc.crossref output.nonnull
- format.chapter.pages output
- }
- if$
- format.pages "pages" output.check
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {inproceedings}
-{ "%Type = Inproceedings" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.date "year" output.check
- date.block
- format.title "title" output.book.check
- new.sentence
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- new.sentence
- publisher empty$
- { format.organization.address output }
- { organization "organization" bibinfo.check output
- format.publisher.address output
- }
- if$
-% format.bvolume output
-% format.number.series output
-% format.pages output
- }
- { format.incoll.inproc.crossref output.nonnull
- format.pages output
- }
- if$
- format.pages "pages" output.check
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {conference} { inproceedings }
-
-FUNCTION {manual}
-{ "%Type = Manual" write$
- output.bibitem
- format.authors output
- author format.key output
- format.date "year" output.check
- date.block
- format.btitle "title" output.check
- format.edition output
- organization address new.block.checkb
- organization "organization" bibinfo.check output
- address "address" bibinfo.check output
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ "%Type = Masterthesis" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.date "year" output.check
- date.block
- format.btitle
- "title" output.check
- new.block
- bbl.mthesis format.thesis.type output.nonnull
- school "school" bibinfo.warn output
- address "address" bibinfo.check output
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {misc}
-{ "%Type = Misc" write$
- output.bibitem
- format.authors output
- author format.key output
- format.date "year" output.check
- date.block
- format.title output
- new.block
- howpublished "howpublished" bibinfo.check output
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {phdthesis}
-{ "%Type = Phdthesis" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.date "year" output.check
- date.block
- format.btitle
- "title" output.check
- new.block
- bbl.phdthesis format.thesis.type output.nonnull
- school "school" bibinfo.warn output
- address "address" bibinfo.check output
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {proceedings}
-{ "%Type = Proceedings" write$
- output.bibitem
- format.editors output
- editor format.key output
- format.date "year" output.check
- date.block
- format.btitle "title" output.check
- format.bvolume output
- format.number.series output
- new.sentence
- publisher empty$
- { format.organization.address output }
- { organization "organization" bibinfo.check output
- format.publisher.address output
- }
- if$
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {techreport}
-{ "%Type = Techreport" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.date "year" output.check
- date.block
- format.btitle
- "title" output.check
- new.block
- format.tr.number output.nonnull
- institution "institution" bibinfo.warn output
- address "address" bibinfo.check output
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {unpublished}
-{ "%Type = Unpublished" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.date "year" output.check
- date.block
- format.title "title" output.check
- new.block
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note "note" output.check
- fin.entry
-}
-
-FUNCTION {default.type} { misc }
-READ
-FUNCTION {sortify}
-{ purify$
- "l" change.case$
-}
-INTEGERS { len }
-FUNCTION {chop.word}
-{ 's :=
- 'len :=
- s #1 len substring$ =
- { s len #1 + global.max$ substring$ }
- 's
- if$
-}
-FUNCTION {format.lab.names}
-{ 's :=
- "" 't :=
- s #1 "{vv~}{ll}" format.name$
- s num.names$ duplicate$
- #2 >
- { pop$
- " " * bbl.etal *
- }
- { #2 <
- 'skip$
- { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- {
- " " * bbl.etal *
- }
- { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
- * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION {author.key.label}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {editor.key.label}
-{ editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
- if$
-}
-
-FUNCTION {calc.short.authors}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.label
- 'author.key.label
- if$
- }
- if$
- 'short.list :=
-}
-
-FUNCTION {calc.label}
-{ calc.short.authors
- short.list
- "("
- *
- year duplicate$ empty$
- short.list key field.or.null = or
- { pop$ "" }
- 'skip$
- if$
- *
- 'label :=
-}
-
-FUNCTION {sort.format.names}
-{ 's :=
- #1 'nameptr :=
- ""
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{ll{ }}{ f{ }}{ jj{ }}"
- format.name$ 't :=
- nameptr #1 >
- {
- " " *
- namesleft #1 = t "others" = and
- { "zzzzz" * }
- { t sortify * }
- if$
- }
- { t sortify * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {sort.format.title}
-{ 't :=
- "A " #2
- "An " #3
- "The " #4 t chop.word
- chop.word
- chop.word
- sortify
- #1 global.max$ substring$
-}
-FUNCTION {author.sort}
-{ author empty$
- { key empty$
- { "to sort, need author or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-FUNCTION {author.editor.sort}
-{ author empty$
- { editor empty$
- { key empty$
- { "to sort, need author, editor, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
- }
- { author sort.format.names }
- if$
-}
-FUNCTION {editor.sort}
-{ editor empty$
- { key empty$
- { "to sort, need editor or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
-}
-FUNCTION {presort}
-{ calc.label
- label sortify
- " "
- *
- type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.sort
- { type$ "proceedings" =
- 'editor.sort
- 'author.sort
- if$
- }
- if$
- #1 entry.max$ substring$
- 'sort.label :=
- sort.label
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-ITERATE {presort}
-SORT
-STRINGS { last.label next.extra }
-INTEGERS { last.extra.num number.label }
-FUNCTION {initialize.extra.label.stuff}
-{ #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'last.extra.num :=
- #0 'number.label :=
-}
-FUNCTION {forward.pass}
-{ last.label label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
- }
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- label 'last.label :=
- }
- if$
- number.label #1 + 'number.label :=
-}
-FUNCTION {reverse.pass}
-{ next.extra "b" =
- { "a" 'extra.label := }
- 'skip$
- if$
- extra.label 'next.extra :=
- extra.label
- duplicate$ empty$
- 'skip$
-% { "{\natexlab{" swap$ * "}}" * }
- { "" swap$ * "" * }
- if$
- 'extra.label :=
- label extra.label * 'label :=
-}
-EXECUTE {initialize.extra.label.stuff}
-ITERATE {forward.pass}
-REVERSE {reverse.pass}
-FUNCTION {bib.sort.order}
-{ sort.label
- " "
- *
- year field.or.null sortify
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-ITERATE {bib.sort.order}
-SORT
-FUNCTION {begin.bib}
-{ preamble$ empty$
- 'skip$
- { preamble$ write$ newline$ }
- if$
- "\begin{thebibliography}{" number.label int.to.str$ * "}" *
- write$ newline$
- "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
- write$ newline$
- "\providecommand{\url}[1]{\texttt{#1}}"
- write$ newline$
- "\providecommand{\href}[2]{#2}"
- write$ newline$
- "\providecommand{\path}[1]{#1}"
- write$ newline$
- "\providecommand{\DOIprefix}{doi:}"
- write$ newline$
- "\providecommand{\ArXivprefix}{arXiv:}"
- write$ newline$
- "\providecommand{\URLprefix}{URL: }"
- write$ newline$
- "\providecommand{\Pubmedprefix}{pmid:}"
- write$ newline$
- "\providecommand{\doi}[1]{\href{http://dx.doi.org/#1}{\path{#1}}}"
- write$ newline$
- "\providecommand{\Pubmed}[1]{\href{pmid:#1}{\path{#1}}}"
- write$ newline$
- "\providecommand{\bibinfo}[2]{#2}"
- write$ newline$
- "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi"
- write$ newline$
-}
-EXECUTE {begin.bib}
-EXECUTE {init.state.consts}
-EXECUTE {init.web.variables}
-ITERATE {call.type$}
-FUNCTION {end.bib}
-{ newline$
- "\end{thebibliography}" write$ newline$
-}
-EXECUTE {end.bib}
-%% End of customized bst file
-%%
-%% End of file `elsarticle-harv.bst'.
-%%
-%% Change log:
-%% -----------
-%% 22.04.2011
-%%
-%% 10.08.2012
-%% a. doi, url, eprint, pmid added
-%% b. Bibtype `webpage' defined
-%%
-%% 30.08.2012
-%% a. collaboration added.
-%%
-
-
diff --git a/_extensions/quarto-journals/elsevier/bib/elsarticle-num-names.bst b/_extensions/quarto-journals/elsevier/bib/elsarticle-num-names.bst
deleted file mode 100644
index 562466a..0000000
--- a/_extensions/quarto-journals/elsevier/bib/elsarticle-num-names.bst
+++ /dev/null
@@ -1,1535 +0,0 @@
-%%
-%% This is file `elsarticle-num-names.bst' (Version 2.1),
-%%
-%% Copyright 2009-2020 Elsevier Ltd
-%%
-%% This file is part of the 'Elsarticle Bundle'.
-%% ---------------------------------------------
-%%
-%% It may be distributed under the conditions of the LaTeX Project Public
-%% License, either version 1.2 of this license or (at your option) any
-%% later version. The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.2 or later is part of all distributions of LaTeX
-%% version 1999/12/01 or later.
-%%
-%% $Id: elsarticle-num-names.bst 194 2020-11-23 11:29:27Z rishi $
-%%
-%% $URL: https://lenova.river-valley.com/svn/elsarticle/trunk/elsarticle-num-names.bst $
-%%
-%%
-
-ENTRY
- { address
- author
- booktitle
- chapter
- collaboration
- edition
- editor
- howpublished
- institution
- journal
- key
- month
- note
- number
- organization
- pages
- publisher
- school
- series
- title
- type
- volume
- year
- url
- doi
- eprint
- pubmed
- }
- {}
- { label extra.label sort.label short.list }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-STRINGS { urlprefix doiprefix eprintprefix pubmedprefix }
-
-FUNCTION {init.web.variables}
-{
- "\URLprefix " 'urlprefix :=
- "\DOIprefix" 'doiprefix :=
- "\ArXivprefix " 'eprintprefix :=
- "\Pubmedprefix " 'pubmedprefix :=
-}
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-STRINGS { s t}
-FUNCTION {output.nonnull}
-{ 's :=
- output.state mid.sentence =
- { ", " * write$ }
- { output.state after.block =
-% { add.period$ write$
- { ", " * write$
- newline$
- "\newblock " write$
- }
- { output.state before.all =
- 'write$
- { add.period$ " " * write$ }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-FUNCTION {output}
-{ duplicate$ empty$
- 'pop$
- 'output.nonnull
- if$
-}
-FUNCTION {output.check}
-{ 't :=
- duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-FUNCTION {fin.entry}
-{ add.period$
- write$
- newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-FUNCTION {new.sentence}
-{ output.state after.block =
- 'skip$
- { output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-FUNCTION {add.blank}
-{ " " * before.all 'output.state :=
-}
-
-FUNCTION {date.block}
-{
- skip$
-}
-
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
-}
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
- if$
-}
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
- if$
-}
-FUNCTION {new.block.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.block
- if$
-}
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
- if$
-}
-FUNCTION {emphasize}
-{ duplicate$ empty$
- { pop$ "" }
- { "\textit{" swap$ * "}" * }
- if$
-}
-FUNCTION {tie.or.space.prefix}
-{ duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$
-}
-
-FUNCTION {capitalize}
-{ "u" change.case$ "t" change.case$ }
-
-FUNCTION {space.word}
-{ " " swap$ * " " * }
- % Here are the language-specific definitions for explicit words.
- % Each function has a name bbl.xxx where xxx is the English word.
- % The language selected here is ENGLISH
-FUNCTION {bbl.and}
-{ "and"}
-
-FUNCTION {bbl.etal}
-{ "et~al." }
-
-FUNCTION {bbl.editors}
-{ "eds." }
-
-FUNCTION {bbl.editor}
-{ "ed." }
-
-FUNCTION {bbl.edby}
-{ "edited by" }
-
-FUNCTION {bbl.edition}
-{ "ed." }
-
-FUNCTION {bbl.volume}
-{ "volume" }
-
-FUNCTION {bbl.of}
-{ "of" }
-
-FUNCTION {bbl.number}
-{ "number" }
-
-FUNCTION {bbl.nr}
-{ "no." }
-
-FUNCTION {bbl.in}
-{ "in" }
-
-FUNCTION {bbl.pages}
-{ "pp." }
-
-FUNCTION {bbl.page}
-{ "p." }
-
-FUNCTION {bbl.chapter}
-{ "chapter" }
-
-FUNCTION {bbl.techrep}
-{ "Technical Report" }
-
-FUNCTION {bbl.mthesis}
-{ "Master's thesis" }
-
-FUNCTION {bbl.phdthesis}
-{ "Ph.D. thesis" }
-
-MACRO {jan} {"January"}
-
-MACRO {feb} {"February"}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"April"}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"August"}
-
-MACRO {sep} {"September"}
-
-MACRO {oct} {"October"}
-
-MACRO {nov} {"November"}
-
-MACRO {dec} {"December"}
-
-MACRO {acmcs} {"ACM Comput. Surv."}
-
-MACRO {acta} {"Acta Inf."}
-
-MACRO {cacm} {"Commun. ACM"}
-
-MACRO {ibmjrd} {"IBM J. Res. Dev."}
-
-MACRO {ibmsj} {"IBM Syst.~J."}
-
-MACRO {ieeese} {"IEEE Trans. Software Eng."}
-
-MACRO {ieeetc} {"IEEE Trans. Comput."}
-
-MACRO {ieeetcad}
- {"IEEE Trans. Comput. Aid. Des."}
-
-MACRO {ipl} {"Inf. Process. Lett."}
-
-MACRO {jacm} {"J.~ACM"}
-
-MACRO {jcss} {"J.~Comput. Syst. Sci."}
-
-MACRO {scp} {"Sci. Comput. Program."}
-
-MACRO {sicomp} {"SIAM J. Comput."}
-
-MACRO {tocs} {"ACM Trans. Comput. Syst."}
-
-MACRO {tods} {"ACM Trans. Database Syst."}
-
-MACRO {tog} {"ACM Trans. Graphic."}
-
-MACRO {toms} {"ACM Trans. Math. Software"}
-
-MACRO {toois} {"ACM Trans. Office Inf. Syst."}
-
-MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
-
-MACRO {tcs} {"Theor. Comput. Sci."}
-
-FUNCTION {bibinfo.check}
-{ swap$
- duplicate$ missing$
- {
- pop$ pop$
- ""
- }
- { duplicate$ empty$
- {
- swap$ pop$
- }
- { swap$
- "\bibinfo{" swap$ * "}{" * swap$ * "}" *
- }
- if$
- }
- if$
-}
-FUNCTION {bibinfo.warn}
-{ swap$
- duplicate$ missing$
- {
- swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
- ""
- }
- { duplicate$ empty$
- {
- swap$ "empty " swap$ * " in " * cite$ * warning$
- }
- { swap$
- pop$
- }
- if$
- }
- if$
-}
-STRINGS { bibinfo}
-INTEGERS { nameptr namesleft numnames }
-
-FUNCTION {format.names}
-{ 'bibinfo :=
- duplicate$ empty$ 'skip$ {
- 's :=
- "" 't :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{f.~}{vv~}{ll}{, jj}"
- format.name$
- bibinfo bibinfo.check
- 't :=
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- "," *
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
- t "others" =
- {
- " " * bbl.etal *
- }
- { " " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
- } if$
-}
-FUNCTION {format.names.ed}
-{
- format.names
-}
-FUNCTION {format.key}
-{ empty$
- { key field.or.null }
- { "" }
- if$
-}
-
-%FUNCTION {format.authors}
-%{ author "author" format.names
-%}
-
-FUNCTION {format.authors}
-{ author "author" format.names
- duplicate$ empty$ 'skip$
- { collaboration "collaboration" bibinfo.check
- duplicate$ empty$ 'skip$
- { " (" swap$ * ")" * }
- if$
- *
- }
- if$
-}
-
-FUNCTION {get.bbl.editor}
-{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
-
-FUNCTION {format.editors}
-{ editor "editor" format.names duplicate$ empty$ 'skip$
- {
- " " *
- get.bbl.editor
- capitalize
- "(" swap$ * ")" *
- *
- }
- if$
-}
-FUNCTION {format.note}
-{
- note empty$
- { "" }
- { note #1 #1 substring$
- duplicate$ "{" =
- 'skip$
- { output.state mid.sentence =
- { "l" }
- { "u" }
- if$
- change.case$
- }
- if$
- note #2 global.max$ substring$ * "note" bibinfo.check
- }
- if$
-}
-
-FUNCTION {format.title}
-{ title
- duplicate$ empty$ 'skip$
- { "t" change.case$ }
- if$
- "title" bibinfo.check
-}
-
-FUNCTION {format.full.names}
-{'s :=
- "" 't :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{vv~}{ll}" format.name$
- 't :=
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
- t "others" =
- {
- " " * bbl.etal *
- }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- bbl.and
- space.word * t *
- }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {author.editor.key.full}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.full.names }
- if$
- }
- { author format.full.names }
- if$
-}
-
-FUNCTION {author.key.full}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.full.names }
- if$
-}
-
-FUNCTION {editor.key.full}
-{ editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.full.names }
- if$
-}
-
-FUNCTION {make.full.names}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.full
- { type$ "proceedings" =
- 'editor.key.full
- 'author.key.full
- if$
- }
- if$
-}
-
-FUNCTION {output.bibitem}
-{ newline$
- "\bibitem[{" write$
- label write$
- ")" make.full.names duplicate$ short.list =
- { pop$ }
- { * }
- if$
- "}]{" * write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-FUNCTION {n.dashify}
-{
- 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "-" =
- { t #1 #2 substring$ "--" = not
- { "--" *
- t #2 global.max$ substring$ 't :=
- }
- { { t #1 #1 substring$ "-" = }
- { "-" *
- t #2 global.max$ substring$ 't :=
- }
- while$
- }
- if$
- }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
- }
- while$
-}
-
-FUNCTION {word.in}
-{ bbl.in
- ":" *
- " " * }
-
-FUNCTION {format.date}
-{ year "year" bibinfo.check duplicate$ empty$
- {
- "empty year in " cite$ * "; set to ????" * warning$
- pop$ "????"
- }
- 'skip$
- if$
- extra.label *
-}
-FUNCTION{format.year}
-{ year "year" bibinfo.check duplicate$ empty$
- { "empty year in " cite$ *
- "; set to ????" *
- warning$
- pop$ "????"
- }
- {
- }
- if$
- extra.label *
- " (" swap$ * ")" *
-}
-FUNCTION {format.btitle}
-{ title "title" bibinfo.check
- duplicate$ empty$ 'skip$
- {
- }
- if$
-}
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-FUNCTION {format.bvolume}
-{ volume empty$
- { "" }
- { bbl.volume volume tie.or.space.prefix
- "volume" bibinfo.check * *
- series "series" bibinfo.check
- duplicate$ empty$ 'pop$
- { swap$ bbl.of space.word * swap$
- emphasize * }
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- { series empty$
- { number "number" bibinfo.check }
- { output.state mid.sentence =
- { bbl.number }
- { bbl.number capitalize }
- if$
- number tie.or.space.prefix "number" bibinfo.check * *
- bbl.in space.word *
- series "series" bibinfo.check *
- }
- if$
- }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION {format.edition}
-{ edition duplicate$ empty$ 'skip$
- {
- output.state mid.sentence =
- { "l" }
- { "t" }
- if$ change.case$
- "edition" bibinfo.check
- " " * bbl.edition *
- }
- if$
-}
-INTEGERS { multiresult }
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
- }
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
- if$
- }
- while$
- multiresult
-}
-FUNCTION {format.pages}
-{ pages duplicate$ empty$ 'skip$
- { duplicate$ multi.page.check
- {
- bbl.pages swap$
- n.dashify
- }
- {
- bbl.page swap$
- }
- if$
- tie.or.space.prefix
- "pages" bibinfo.check
- * *
- }
- if$
-}
-FUNCTION {format.journal.pages}
-{ pages duplicate$ empty$ 'pop$
- { swap$ duplicate$ empty$
- { pop$ pop$ format.pages }
- {
- " " *
- swap$
- n.dashify
- "pages" bibinfo.check
- *
- }
- if$
- }
- if$
-}
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
- duplicate$ empty$ 'skip$
- {
- "volume" bibinfo.check
- }
- if$
- format.year *
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- { "" }
- { type empty$
- { bbl.chapter }
- { type "l" change.case$
- "type" bibinfo.check
- }
- if$
- chapter tie.or.space.prefix
- "chapter" bibinfo.check
- * *
- }
- if$
-}
-
-FUNCTION {format.booktitle}
-{
- booktitle "booktitle" bibinfo.check
-}
-FUNCTION {format.in.ed.booktitle}
-{ format.booktitle duplicate$ empty$ 'skip$
- {
- editor "editor" format.names.ed duplicate$ empty$ 'pop$
- {
- " " *
- get.bbl.editor
- capitalize
- "(" swap$ * "), " *
- * swap$
- * }
- if$
- word.in swap$ *
- }
- if$
-}
-FUNCTION {format.thesis.type}
-{ type duplicate$ empty$
- 'pop$
- { swap$ pop$
- "t" change.case$ "type" bibinfo.check
- }
- if$
-}
-FUNCTION {format.tr.number}
-{ number "number" bibinfo.check
- type duplicate$ empty$
- { pop$ bbl.techrep }
- 'skip$
- if$
- "type" bibinfo.check
- swap$ duplicate$ empty$
- { pop$ "t" change.case$ }
- { tie.or.space.prefix * * }
- if$
-}
-FUNCTION {format.article.crossref}
-{
- word.in
- " \cite{" * crossref * "}" *
-}
-FUNCTION {format.book.crossref}
-{ volume duplicate$ empty$
- { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
- pop$ word.in
- }
- { bbl.volume
- swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
- }
- if$
- " \cite{" * crossref * "}" *
-}
-FUNCTION {format.incoll.inproc.crossref}
-{
- word.in
- " \cite{" * crossref * "}" *
-}
-FUNCTION {format.org.or.pub}
-{ 't :=
- ""
- address empty$ t empty$ and
- 'skip$
- {
- t empty$
- { address "address" bibinfo.check *
- }
- { t *
- address empty$
- 'skip$
- { ", " * address "address" bibinfo.check * }
- if$
- }
- if$
- }
- if$
-}
-FUNCTION {format.publisher.address}
-{ publisher "publisher" bibinfo.check format.org.or.pub
-}
-
-FUNCTION {format.organization.address}
-{ organization "organization" bibinfo.check format.org.or.pub
-}
-
-FUNCTION {print.url}
- {url duplicate$ empty$
- { pop$ "" }
- { new.sentence
- urlprefix "\url{" * swap$ * "}" *
- }
- if$
- }
-
-FUNCTION {print.doi}
- {doi duplicate$ empty$
- { pop$ "" }
- { new.sentence
- doiprefix "\doi{" * swap$ * "}" *
- }
- if$
- }
-
-FUNCTION {print.eprint}
- {eprint duplicate$ empty$
- { pop$ "" }
- { new.sentence
- duplicate$ "\href{http://arxiv.org/abs/" swap$ * "}{{\tt arXiv:" * swap$ * "}}" *
- }
- if$
- }
-
-FUNCTION {print.pubmed}
- {pubmed duplicate$ empty$
- { pop$ "" }
- { new.sentence
- pubmedprefix "\Pubmed{" * swap$ * "}" *
- }
- if$
- }
-
-FUNCTION {webpage}
-{ "%Type = Webpage" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- author empty$
- {
- format.title "title" output.check
- new.block
- format.date "year" output.check
- date.block
- }
- {
- format.date "year" output.check
- date.block
- format.title "title" output.check
- new.block
-}
- if$
- print.url output
- fin.entry
-}
-
-
-FUNCTION {article}
-{ "%Type = Article" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- {
- journal
- "journal" bibinfo.check
- "journal" output.check
- add.blank
- format.vol.num.pages output
- }
- { format.article.crossref output.nonnull
- }
- if$
- format.journal.pages
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-FUNCTION {book}
-{ "%Type = Book" write$
- output.bibitem
- author empty$
- { format.editors "author and editor" output.check
- editor format.key output
- }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- format.btitle "title" output.check
- crossref missing$
- { format.bvolume output
- format.number.series output
- format.edition output
- format.publisher.address output
- }
- {
- format.book.crossref output.nonnull
- }
- if$
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-FUNCTION {booklet}
-{ "%Type = Booklet" write$
- output.bibitem
- format.authors output
- author format.key output
- format.title "title" output.check
- howpublished "howpublished" bibinfo.check output
- address "address" bibinfo.check output
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {inbook}
-{ "%Type = Inbook" write$
- output.bibitem
- author empty$
- { format.editors "author and editor" output.check
- editor format.key output
- }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- format.btitle "title" output.check
- crossref missing$
- {
- format.bvolume output
- format.number.series output
- format.edition output
- format.publisher.address output
- }
- {
- format.book.crossref output.nonnull
- }
- if$
- format.date "year" output.check
- format.pages "pages" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {incollection}
-{ "%Type = Incollection" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.number.series output
- format.edition output
- format.publisher.address output
- }
- { format.incoll.inproc.crossref output.nonnull
- }
- if$
- format.date "year" output.check
- format.pages "pages" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-FUNCTION {inproceedings}
-{ "%Type = Inproceedings" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.number.series output
- publisher empty$
- { format.organization.address output }
- { organization "organization" bibinfo.check output
- format.publisher.address output
- }
- if$
- }
- { format.incoll.inproc.crossref output.nonnull
- }
- if$
- format.date output
- format.pages "pages" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-FUNCTION {conference} { inproceedings }
-FUNCTION {manual}
-{ "%Type = Manual" write$
- output.bibitem
- format.authors output
- author format.key output
- format.btitle "title" output.check
- format.edition output
- organization "organization" bibinfo.check output
- address "address" bibinfo.check output
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ "%Type = Masterthesis" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.btitle
- "title" output.check
- bbl.mthesis format.thesis.type output.nonnull
- school "school" bibinfo.warn output
- address "address" bibinfo.check output
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {misc}
-{ "%Type = Misc" write$
- output.bibitem
- format.authors output
- author format.key output
- format.title output
- howpublished "howpublished" bibinfo.check output
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-FUNCTION {phdthesis}
-{ "%Type = Phdthesis" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.btitle
- "title" output.check
- bbl.phdthesis format.thesis.type output.nonnull
- school "school" bibinfo.warn output
- address "address" bibinfo.check output
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {proceedings}
-{ "%Type = Proceedings" write$
- output.bibitem
- format.editors output
- editor format.key output
- format.btitle "title" output.check
- format.bvolume output
- format.number.series output
- publisher empty$
- { format.organization.address output }
- { organization "organization" bibinfo.check output
- format.publisher.address output
- }
- if$
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {techreport}
-{ "%Type = Techreport" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.btitle
- "title" output.check
- format.tr.number output.nonnull
- institution "institution" bibinfo.warn output
- address "address" bibinfo.check output
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note output
- fin.entry
-}
-
-FUNCTION {unpublished}
-{ "%Type = Unpublished" write$
- output.bibitem
- format.authors "author" output.check
- author format.key output
- format.title "title" output.check
- format.date "year" output.check
- new.sentence
- print.url output
- print.doi output
- print.eprint output
- print.pubmed output
- format.note "note" output.check
- fin.entry
-}
-
-FUNCTION {default.type} { misc }
-READ
-FUNCTION {sortify}
-{ purify$
- "l" change.case$
-}
-INTEGERS { len }
-FUNCTION {chop.word}
-{ 's :=
- 'len :=
- s #1 len substring$ =
- { s len #1 + global.max$ substring$ }
- 's
- if$
-}
-FUNCTION {format.lab.names}
-{ 's :=
- "" 't :=
- s #1 "{vv~}{ll}" format.name$
- s num.names$ duplicate$
- #2 >
- { pop$
- " " * bbl.etal *
- }
- { #2 <
- 'skip$
- { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- {
- " " * bbl.etal *
- }
- { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
- * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION {author.key.label}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {editor.key.label}
-{ editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
- if$
-}
-
-FUNCTION {calc.short.authors}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.label
- 'author.key.label
- if$
- }
- if$
- 'short.list :=
-}
-
-FUNCTION {calc.label}
-{ calc.short.authors
- short.list
- "("
- *
- year duplicate$ empty$
- { pop$ "????" }
- { purify$ #-1 #4 substring$ }
- if$
- *
- 'label :=
-}
-
-FUNCTION {sort.format.names}
-{ 's :=
- #1 'nameptr :=
- ""
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
- format.name$ 't :=
- nameptr #1 >
- {
- " " *
- namesleft #1 = t "others" = and
- { "zzzzz" * }
- { t sortify * }
- if$
- }
- { t sortify * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {sort.format.title}
-{ 't :=
- "A " #2
- "An " #3
- "The " #4 t chop.word
- chop.word
- chop.word
- sortify
- #1 global.max$ substring$
-}
-FUNCTION {author.sort}
-{ author empty$
- { key empty$
- { "to sort, need author or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-FUNCTION {author.editor.sort}
-{ author empty$
- { editor empty$
- { key empty$
- { "to sort, need author, editor, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
- }
- { author sort.format.names }
- if$
-}
-FUNCTION {editor.sort}
-{ editor empty$
- { key empty$
- { "to sort, need editor or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
-}
-FUNCTION {presort}
-{ calc.label
- label sortify
- " "
- *
- type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.sort
- { type$ "proceedings" =
- 'editor.sort
- 'author.sort
- if$
- }
- if$
- #1 entry.max$ substring$
- 'sort.label :=
- sort.label
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-ITERATE {presort}
-%SORT
-STRINGS { last.label next.extra }
-INTEGERS { last.extra.num number.label }
-FUNCTION {initialize.extra.label.stuff}
-{ #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'last.extra.num :=
- #0 'number.label :=
-}
-FUNCTION {forward.pass}
-{ last.label label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
- }
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- label 'last.label :=
- }
- if$
- number.label #1 + 'number.label :=
-}
-FUNCTION {reverse.pass}
-{ next.extra "b" =
- { "a" 'extra.label := }
- 'skip$
- if$
- extra.label 'next.extra :=
- extra.label
- duplicate$ empty$
- 'skip$
- { "{\natexlab{" swap$ * "}}" * }
- if$
- 'extra.label :=
- label extra.label * 'label :=
-}
-EXECUTE {initialize.extra.label.stuff}
-ITERATE {forward.pass}
-REVERSE {reverse.pass}
-FUNCTION {bib.sort.order}
-{ sort.label
- " "
- *
- year field.or.null sortify
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-ITERATE {bib.sort.order}
-%SORT
-FUNCTION {begin.bib}
-{ preamble$ empty$
- 'skip$
- { preamble$ write$ newline$ }
- if$
- "\begin{thebibliography}{" number.label int.to.str$ * "}" *
- write$ newline$
- "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
- write$ newline$
- "\providecommand{\url}[1]{\texttt{#1}}"
- write$ newline$
- "\providecommand{\href}[2]{#2}"
- write$ newline$
- "\providecommand{\path}[1]{#1}"
- write$ newline$
- "\providecommand{\DOIprefix}{doi:}"
- write$ newline$
- "\providecommand{\ArXivprefix}{arXiv:}"
- write$ newline$
- "\providecommand{\URLprefix}{URL: }"
- write$ newline$
- "\providecommand{\Pubmedprefix}{pmid:}"
- write$ newline$
- "\providecommand{\doi}[1]{\href{http://dx.doi.org/#1}{\path{#1}}}"
- write$ newline$
- "\providecommand{\Pubmed}[1]{\href{pmid:#1}{\path{#1}}}"
- write$ newline$
- "\providecommand{\bibinfo}[2]{#2}"
- write$ newline$
- "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi"
- write$ newline$
-}
-EXECUTE {begin.bib}
-EXECUTE {init.state.consts}
-EXECUTE {init.web.variables}
-ITERATE {call.type$}
-FUNCTION {end.bib}
-{ newline$
- "\end{thebibliography}" write$ newline$
-}
-EXECUTE {end.bib}
-%% End of customized bst file
-%%
-%% End of file `elsarticle-num-names.bst'.
-%%
-%%
-%% Change log:
-%% -----------
-%% 22.04.2011
-%%
-%% 10.08.2012
-%% a. doi, url, eprint, pmid added
-%% b. Bibtype `webpage' defined
-%%
-%% 30.08.2012
-%% a. collaboration added.
-
-
diff --git a/_extensions/quarto-journals/elsevier/bib/elsarticle-num.bst b/_extensions/quarto-journals/elsevier/bib/elsarticle-num.bst
deleted file mode 100644
index 14499bf..0000000
--- a/_extensions/quarto-journals/elsevier/bib/elsarticle-num.bst
+++ /dev/null
@@ -1,1509 +0,0 @@
-%%
-%% This is file `elsarticle-num.bst' (Version 2.1),
-%%
-%% Copyright 2007-2020 Elsevier Ltd
-%%
-%% This file is part of the 'Elsarticle Bundle'.
-%% ---------------------------------------------
-%%
-%% It may be distributed under the conditions of the LaTeX Project Public
-%% License, either version 1.2 of this license or (at your option) any
-%% later version. The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.2 or later is part of all distributions of LaTeX
-%% version 1999/12/01 or later.
-%%
-%%
-%% $Id: elsarticle-num.bst 194 2020-11-23 11:29:27Z rishi $
-%%
-%% $URL: https://lenova.river-valley.com/svn/elsarticle/trunk/elsarticle-num.bst $
-%%
-%% ----------------------------------------
-
-ENTRY
- { address
- author
- booktitle
- chapter
- edition
- editor
- howpublished
- institution
- journal
- key
- month
- note
- number
- organization
- pages
- publisher
- school
- series
- title
- type
- volume
- year
- eprint % urlbst
- doi % urlbst
- url % urlbst
- lastchecked % urlbst
- }
- {}
- { label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl openinlinelink closeinlinelink } % urlbst...
-INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver }
-FUNCTION {init.urlbst.variables}
-{
- "Available from: " 'urlintro := % prefix before URL
- "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
- "arXiv:" 'eprintprefix := % text prefix printed before eprint ref
- "https://doi.org/" 'doiurl := % prefix to make URL from DOI
- "doi:" 'doiprefix := % text prefix printed before DOI ref
- #1 'addeprints := % 0=no eprints; 1=include eprints
- #1 'adddoiresolver := % 0=no DOI resolver; 1=include it
- #2 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
- #1 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles
- % the following are internal state variables, not config constants
- #0 'makeinlinelink := % state variable managed by setup.inlinelink
- "" 'openinlinelink := % ditto
- "" 'closeinlinelink := % ditto
-}
-INTEGERS {
- bracket.state
- outside.brackets
- open.brackets
- within.brackets
- close.brackets
-}
-FUNCTION {init.state.consts}
-{ #0 'outside.brackets := % urlbst
- #1 'open.brackets :=
- #2 'within.brackets :=
- #3 'close.brackets :=
-
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-STRINGS { s t }
-
-FUNCTION {output.nonnull.original}
-{ 's :=
- output.state mid.sentence =
- { ", " * write$ }
- { output.state after.block =
- { add.period$ write$
- newline$
- "\newblock " write$
- }
- { output.state before.all =
- 'write$
- { add.period$ " " * write$ }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION {setup.inlinelink}
-{ makeinlinelink
- { hrefform #1 = % hypertex
- { "\special {html: }{" * 'openinlinelink :=
- "\special {html:}" 'closeinlinelink :=
- }
- { hrefform #2 = % hyperref
- { "\href{" url * "}{" * 'openinlinelink :=
- "}" 'closeinlinelink :=
- }
- 'skip$
- if$ % hrefform #2 =
- }
- if$ % hrefform #1 =
- #0 'makeinlinelink :=
- }
- 'skip$
- if$ % makeinlinelink
-}
-FUNCTION {add.inlinelink}
-{ openinlinelink empty$
- 'skip$
- { openinlinelink swap$ * closeinlinelink *
- "" 'openinlinelink :=
- }
- if$
-}
-FUNCTION {output.nonnull}
-{ % Save the thing we've been asked to output
- 's :=
- % If the bracket-state is close.brackets, then add a close-bracket to
- % what is currently at the top of the stack, and set bracket.state
- % to outside.brackets
- bracket.state close.brackets =
- { "]" *
- outside.brackets 'bracket.state :=
- }
- 'skip$
- if$
- bracket.state outside.brackets =
- { % We're outside all brackets -- this is the normal situation.
- % Write out what's currently at the top of the stack, using the
- % original output.nonnull function.
- s
- add.inlinelink
- output.nonnull.original % invoke the original output.nonnull
- }
- { % Still in brackets. Add open-bracket or (continuation) comma, add the
- % new text (in s) to the top of the stack, and move to the close-brackets
- % state, ready for next time (unless inbrackets resets it). If we come
- % into this branch, then output.state is carefully undisturbed.
- bracket.state open.brackets =
- { " [" * }
- { ", " * } % bracket.state will be within.brackets
- if$
- s *
- close.brackets 'bracket.state :=
- }
- if$
-}
-
-FUNCTION {inbrackets}
-{ bracket.state close.brackets =
- { within.brackets 'bracket.state := } % reset the state: not open nor closed
- { open.brackets 'bracket.state := }
- if$
-}
-
-FUNCTION {format.lastchecked}
-{ lastchecked empty$
- { "" }
- { inbrackets "cited " lastchecked * }
- if$
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION {output.check}
-{ 't :=
- duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION {fin.entry.original}
-{ add.period$
- write$
- newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION {new.sentence}
-{ output.state after.block =
- 'skip$
- { output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION {add.blank}
-{ " " * before.all 'output.state :=
-}
-
-FUNCTION {date.block}
-{
- add.blank
-}
-
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
-}
-
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION {new.block.checka}
-{ empty$
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.sentence.checka}
-{ empty$
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION {emphasize}
-{ skip$ }
-
-FUNCTION {capitalize}
-{ "u" change.case$ "t" change.case$ }
-
-FUNCTION {space.word}
-{ " " swap$ * " " * }
-
- % Here are the language-specific definitions for explicit words.
- % Each function has a name bbl.xxx where xxx is the English word.
- % The language selected here is ENGLISH
-FUNCTION {bbl.and}
-{ "and"}
-
-FUNCTION {bbl.etal}
-{ "et~al." }
-
-FUNCTION {bbl.editors}
-{ "Eds." }
-
-FUNCTION {bbl.editor}
-{ "Ed." }
-
-FUNCTION {bbl.edby}
-{ "edited by" }
-
-FUNCTION {bbl.edition}
-{ "Edition" }
-
-FUNCTION {bbl.volume}
-{ "Vol." }
-
-FUNCTION {bbl.of}
-{ "of" }
-
-FUNCTION {bbl.number}
-{ "no." }
-
-FUNCTION {bbl.nr}
-{ "no." }
-
-FUNCTION {bbl.in}
-{ "in" }
-
-FUNCTION {bbl.pages}
-{ "pp." }
-
-FUNCTION {bbl.page}
-{ "p." }
-
-FUNCTION {bbl.chapter}
-{ "Ch." }
-
-FUNCTION {bbl.techrep}
-{ "Tech. Rep." }
-
-FUNCTION {bbl.mthesis}
-{ "Master's thesis" }
-
-FUNCTION {bbl.phdthesis}
-{ "Ph.D. thesis" }
-
-FUNCTION {bbl.first}
-{ "1st" }
-
-FUNCTION {bbl.second}
-{ "2nd" }
-
-FUNCTION {bbl.third}
-{ "3rd" }
-
-FUNCTION {bbl.fourth}
-{ "4th" }
-
-FUNCTION {bbl.fifth}
-{ "5th" }
-
-FUNCTION {bbl.st}
-{ "st" }
-
-FUNCTION {bbl.nd}
-{ "nd" }
-
-FUNCTION {bbl.rd}
-{ "rd" }
-
-FUNCTION {bbl.th}
-{ "th" }
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"Mar."}
-
-MACRO {apr} {"Apr."}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"Jun."}
-
-MACRO {jul} {"Jul."}
-
-MACRO {aug} {"Aug."}
-
-MACRO {sep} {"Sep."}
-
-MACRO {oct} {"Oct."}
-
-MACRO {nov} {"Nov."}
-
-MACRO {dec} {"Dec."}
-
-FUNCTION {eng.ord}
-{ duplicate$ "1" swap$ *
- #-2 #1 substring$ "1" =
- { bbl.th * }
- { duplicate$ #-1 #1 substring$
- duplicate$ "1" =
- { pop$ bbl.st * }
- { duplicate$ "2" =
- { pop$ bbl.nd * }
- { "3" =
- { bbl.rd * }
- { bbl.th * }
- if$
- }
- if$
- }
- if$
- }
- if$
-}
-
-MACRO {acmcs} {"ACM Comput. Surv."}
-
-MACRO {acta} {"Acta Inf."}
-
-MACRO {cacm} {"Commun. ACM"}
-
-MACRO {ibmjrd} {"IBM J. Res. Dev."}
-
-MACRO {ibmsj} {"IBM Syst.~J."}
-
-MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
-
-MACRO {ieeetc} {"IEEE Trans. Comput."}
-
-MACRO {ieeetcad}
- {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
-
-MACRO {ipl} {"Inf. Process. Lett."}
-
-MACRO {jacm} {"J.~ACM"}
-
-MACRO {jcss} {"J.~Comput. Syst. Sci."}
-
-MACRO {scp} {"Sci. Comput. Programming"}
-
-MACRO {sicomp} {"SIAM J. Comput."}
-
-MACRO {tocs} {"ACM Trans. Comput. Syst."}
-
-MACRO {tods} {"ACM Trans. Database Syst."}
-
-MACRO {tog} {"ACM Trans. Gr."}
-
-MACRO {toms} {"ACM Trans. Math. Softw."}
-
-MACRO {toois} {"ACM Trans. Office Inf. Syst."}
-
-MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
-
-MACRO {tcs} {"Theoretical Comput. Sci."}
-
-FUNCTION {write.url}
-{ url empty$
- { skip$ }
- { "\newline\urlprefix\url{" url * "}" * write$ newline$ }
- if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-FUNCTION {format.names}
-{ 's :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{f.~}{vv~}{ll}{, jj}" format.name$
- 't :=
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- "," *
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
- t "others" =
- {
- " " * bbl.etal *
- }
- { " " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-FUNCTION {format.names.ed}
-{ format.names }
-FUNCTION {format.authors}
-{ author empty$
- { "" }
- { author format.names }
- if$
-}
-
-FUNCTION {format.editors}
-{ editor empty$
- { "" }
- { editor format.names
- editor num.names$ #1 >
- { " (" * bbl.editors * ")" * }
- { " (" * bbl.editor * ")" * }
- if$
- }
- if$
-}
-
-FUNCTION {format.in.editors}
-{ editor empty$
- { "" }
- { editor format.names.ed
- editor num.names$ #1 >
- { " (" * bbl.editors * ")" * }
- { " (" * bbl.editor * ")" * }
- if$
- }
- if$
-}
-
-FUNCTION {format.note}
-{
- note empty$
- { "" }
- { note #1 #1 substring$
- duplicate$ "{" =
- 'skip$
- { output.state mid.sentence =
- { "l" }
- { "u" }
- if$
- change.case$
- }
- if$
- note #2 global.max$ substring$ *
- }
- if$
-}
-
-FUNCTION {format.title}
-{ title empty$
- { "" }
- { title "t" change.case$
- }
- if$
-}
-
-FUNCTION {output.bibitem.original}
-{ newline$
- "\bibitem{" write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-FUNCTION {n.dashify}
-{
- 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "-" =
- { t #1 #2 substring$ "--" = not
- { "--" *
- t #2 global.max$ substring$ 't :=
- }
- { { t #1 #1 substring$ "-" = }
- { "-" *
- t #2 global.max$ substring$ 't :=
- }
- while$
- }
- if$
- }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
- }
- while$
-}
-
-FUNCTION {word.in}
-{ bbl.in
- ":" *
- " " * }
-
-FUNCTION {format.date}
-{ year empty$
- { month empty$
- { "" }
- { "there's a month but no year in " cite$ * warning$
- month
- }
- if$
- }
- { month empty$
- 'year
- { month " " * year * }
- if$
- }
- if$
- duplicate$ empty$
- 'skip$
- {
- before.all 'output.state :=
- " (" swap$ * ")" *
- }
- if$
-}
-
-FUNCTION{format.year}
-{ year duplicate$ empty$
- { "empty year in " cite$ * warning$ pop$ "" }
- { "(" swap$ * ")" * }
- if$
-}
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
- { "" }
- { bbl.volume volume tie.or.space.connect
- series empty$
- 'skip$
- { bbl.of space.word * series emphasize * }
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- { output.state mid.sentence =
- { bbl.number }
- { bbl.number capitalize }
- if$
- number tie.or.space.connect
- series empty$
- { "there's a number but no series in " cite$ * warning$ }
- { bbl.in space.word * series * }
- if$
- }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION {is.num}
-{ chr.to.int$
- duplicate$ "0" chr.to.int$ < not
- swap$ "9" chr.to.int$ > not and
-}
-
-FUNCTION {extract.num}
-{ duplicate$ 't :=
- "" 's :=
- { t empty$ not }
- { t #1 #1 substring$
- t #2 global.max$ substring$ 't :=
- duplicate$ is.num
- { s swap$ * 's := }
- { pop$ "" 't := }
- if$
- }
- while$
- s empty$
- 'skip$
- { pop$ s }
- if$
-}
-
-FUNCTION {convert.edition}
-{ edition extract.num "l" change.case$ 's :=
- s "first" = s "1" = or
- { bbl.first 't := }
- { s "second" = s "2" = or
- { bbl.second 't := }
- { s "third" = s "3" = or
- { bbl.third 't := }
- { s "fourth" = s "4" = or
- { bbl.fourth 't := }
- { s "fifth" = s "5" = or
- { bbl.fifth 't := }
- { s #1 #1 substring$ is.num
- { s eng.ord 't := }
- { edition 't := }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- t
-}
-
-FUNCTION {format.edition}
-{ edition empty$
- { "" }
- { output.state mid.sentence =
- { convert.edition "l" change.case$ " " * bbl.edition * }
- { convert.edition "t" change.case$ " " * bbl.edition * }
- if$
- }
- if$
-}
-
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
- }
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
- if$
- }
- while$
- multiresult
-}
-
-FUNCTION {format.pages}
-{ pages empty$
- { "" }
- { pages multi.page.check
- { bbl.pages pages n.dashify tie.or.space.connect }
- { bbl.page pages tie.or.space.connect }
- if$
- }
- if$
-}
-
-FUNCTION {format.journal.pages}
-{ pages empty$
- 'skip$
- { duplicate$ empty$
- { pop$ format.pages }
- {
- " " *
- format.year * " " *
- pages n.dashify *
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.vol.num.pages}
-{
- % volume field.or.null
- " "
- volume empty$
- { pop$ "" }
- { volume * }
- if$
- number empty$
- 'skip$
- {
- "~(" number * ")" * *
- volume empty$
- { "there's a number but no volume in " cite$ * warning$ }
- 'skip$
- if$
- }
- if$
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- { "" }
- { type empty$
- { bbl.chapter }
- { type "l" change.case$ }
- if$
- chapter tie.or.space.connect
- }
- if$
-}
-
-FUNCTION {format.in.ed.booktitle}
-{ booktitle empty$
- { "" }
- { editor empty$
- { word.in booktitle * }
- { word.in format.in.editors * ", " *
- booktitle * }
- if$
- }
- if$
-}
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
- month empty$ year empty$ note empty$
- and and and and and
- { "all relevant fields are empty in " cite$ * warning$ }
- 'skip$
- if$
-}
-
-FUNCTION {format.thesis.type}
-{ type empty$
- 'skip$
- { pop$
- type "t" change.case$
- }
- if$
-}
-
-FUNCTION {format.tr.number}
-{ type empty$
- { bbl.techrep }
- 'type
- if$
- number empty$
- { "t" change.case$ }
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION {format.article.crossref}
-{
- key empty$
- { journal empty$
- { "need key or journal for " cite$ * " to crossref " * crossref *
- warning$
- ""
- }
- { word.in journal emphasize * }
- if$
- }
- { word.in key * " " *}
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.crossref.editor}
-{ editor #1 "{vv~}{ll}" format.name$
- editor num.names$ duplicate$
- #2 >
- { pop$
- " " * bbl.etal *
- }
- { #2 <
- 'skip$
- { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- {
- " " * bbl.etal *
- }
- { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$
- * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.book.crossref}
-{ volume empty$
- { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
- word.in
- }
- { bbl.volume volume tie.or.space.connect
- bbl.of space.word *
- }
- if$
- editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { series empty$
- { "need editor, key, or series for " cite$ * " to crossref " *
- crossref * warning$
- "" *
- }
- { series emphasize * }
- if$
- }
- { key * }
- if$
- }
- { format.crossref.editor * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.incoll.inproc.crossref}
-{
- editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { booktitle empty$
- { "need editor, key, or booktitle for " cite$ * " to crossref " *
- crossref * warning$
- ""
- }
- { word.in booktitle * }
- if$
- }
- { word.in key * " " *}
- if$
- }
- { word.in format.crossref.editor * " " *}
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.org.or.pub}
-{ 't :=
- ""
- year empty$
- { "empty year in " cite$ * warning$ }
- 'skip$
- if$
- address empty$ t empty$ and
- year empty$ and
- 'skip$
- {
- t empty$
- { address empty$
- 'skip$
- { address * }
- if$
- }
- { t *
- address empty$
- 'skip$
- { ", " * address * }
- if$
- }
- if$
- year empty$
- 'skip$
- { t empty$ address empty$ and
- 'skip$
- { ", " * }
- if$
- year *
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.publisher.address}
-{ publisher empty$
- { "empty publisher in " cite$ * warning$
- ""
- }
- { publisher }
- if$
- format.org.or.pub
-}
-
-FUNCTION {format.organization.address}
-{ organization empty$
- { "" }
- { organization }
- if$
- format.org.or.pub
-}
-
-FUNCTION {make.href.null}
-{
- pop$
-}
-FUNCTION {make.href.hypertex}
-{
- "\special {html: }" * swap$ *
- "\special {html:}" *
-}
-FUNCTION {make.href.hyperref}
-{
- "\href {" swap$ * "} {\path{" * swap$ * "}}" *
-}
-FUNCTION {make.href}
-{ hrefform #2 =
- 'make.href.hyperref % hrefform = 2
- { hrefform #1 =
- 'make.href.hypertex % hrefform = 1
- 'make.href.null % hrefform = 0 (or anything else)
- if$
- }
- if$
-}
-
-FUNCTION {format.url}
-{ inlinelinks #1 = url empty$ or
- { "" }
- { hrefform #1 =
- { % special case -- add HyperTeX specials
- urlintro "\url{" url * "}" * url make.href.hypertex * }
- { urlintro "\url{" * url * "}" * }
- if$
- }
- if$
-}
-
-FUNCTION {format.eprint}
-{ eprint empty$
- { "" }
- { eprintprefix eprint * eprinturl eprint * make.href }
- if$
-}
-
-FUNCTION {format.doi}
-{ doi empty$
- { "" }
- { doiprefix doi * doiurl doi * make.href }
- if$
-}
-
-FUNCTION {output.url}
-{ url empty$
- 'skip$
- { new.block
- format.url output
- format.lastchecked output
- }
- if$
-}
-
-FUNCTION {output.web.refs}
-{
- new.block
- output.url
- addeprints eprint empty$ not and
- { format.eprint output.nonnull }
- 'skip$
- if$
- adddoiresolver doi empty$ not and
- { format.doi output.nonnull }
- 'skip$
- if$
-}
-
-FUNCTION {output.bibitem}
-{ outside.brackets 'bracket.state :=
- output.bibitem.original
- inlinelinks url empty$ not and
- { #1 'makeinlinelink := }
- { #0 'makeinlinelink := }
- if$
-}
-
-FUNCTION {fin.entry}
-{ output.web.refs % urlbst
- makeinlinelink % ooops, it appears we didn't have a title for inlinelink
- { setup.inlinelink % add some artificial link text here, as a fallback
- "[link]" output.nonnull }
- 'skip$
- if$
- bracket.state close.brackets = % urlbst
- { "]" * }
- 'skip$
- if$
- fin.entry.original
-}
-
-FUNCTION {webpage}
-{ output.bibitem
- author empty$
- { editor empty$
- 'skip$ % author and editor both optional
- { format.editors output.nonnull }
- if$
- }
- { editor empty$
- { format.authors output.nonnull }
- { "can't use both author and editor fields in " cite$ * warning$ }
- if$
- }
- if$
- new.block
- title empty$ 'skip$ 'setup.inlinelink if$
- format.title "title" output.check
- inbrackets "online" output
- new.block
- year empty$
- 'skip$
- { format.date "year" output.check }
- if$
- % We don't need to output the URL details ('lastchecked' and 'url'),
- % because fin.entry does that for us, using output.web.refs. The only
- % reason we would want to put them here is if we were to decide that
- % they should go in front of the rather miscellaneous information in 'note'.
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {article}
-{ output.bibitem
- format.authors "author" output.check
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title "title" output.check
- crossref missing$
- { journal
- "journal" output.check
- % add.blank
- before.all 'output.state :=
- format.vol.num.pages output
- }
- { format.article.crossref output.nonnull
- format.pages output
- }
- if$
- format.journal.pages
- format.note output
- pages empty$
- { format.date "year" output.check }
- 'skip$
- if$
- fin.entry
- write.url
-}
-
-FUNCTION {book}
-{ output.bibitem
- author empty$
- { format.editors "author and editor" output.check
- }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.btitle "title" output.check
- crossref missing$
- { format.edition output
- format.bvolume output
- format.number.series output
- format.publisher.address output
- }
- {
- format.book.crossref output.nonnull
- }
- if$
- format.note output
- fin.entry
- write.url
-}
-
-FUNCTION {booklet}
-{ output.bibitem
- format.authors output
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title "title" output.check
- howpublished output
- address output
- format.note output
- format.date "year" output.check
- fin.entry
- write.url
-}
-
-FUNCTION {inbook}
-{ output.bibitem
- author empty$
- { format.editors "author and editor" output.check
- }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.btitle "title" output.check
- crossref missing$
- {
- format.edition output
- format.bvolume output
- format.number.series output
- format.publisher.address output
- format.chapter.pages "chapter and pages" output.check
- }
- {
- format.chapter.pages "chapter and pages" output.check
- format.book.crossref output.nonnull
- }
- if$
- format.pages "pages" output.check
- format.note output
- fin.entry
- write.url
-}
-
-FUNCTION {incollection}
-{ output.bibitem
- format.authors "author" output.check
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title "title" output.check
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.edition output
- format.bvolume output
- format.number.series output
- format.publisher.address output
- format.chapter.pages output
- }
- { format.incoll.inproc.crossref output.nonnull
- format.chapter.pages output
- }
- if$
- format.pages "pages" output.check
- format.note output
- fin.entry
- write.url
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
- format.authors "author" output.check
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title "title" output.check
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.edition output
- format.bvolume output
- format.number.series output
- publisher empty$
- { format.organization.address output }
- { organization output
- format.publisher.address output
- }
- if$
- }
- { format.incoll.inproc.crossref output.nonnull
- }
- if$
- format.pages "pages" output.check
- format.note output
- fin.entry
- write.url
-}
-
-FUNCTION {conference} { inproceedings }
-
-FUNCTION {manual}
-{ output.bibitem
- author empty$
- { organization empty$
- 'skip$
- { organization output.nonnull
- address output
- }
- if$
- }
- { format.authors output.nonnull }
- if$
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.btitle "title" output.check
- author empty$
- { organization empty$
- {
- address output
- }
- 'skip$
- if$
- }
- {
- organization output
- address output
- }
- if$
- format.edition output
- format.note output
- format.date "year" output.check
- fin.entry
- write.url
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
- format.authors "author" output.check
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title "title" output.check
- bbl.mthesis format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.note output
- format.date "year" output.check
- fin.entry
- write.url
-}
-
-FUNCTION {misc}
-{ output.bibitem
- format.authors output
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title output
- howpublished output
- format.note output
- format.date "year" output.check
- fin.entry
- write.url
- empty.misc.check
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
- format.authors "author" output.check
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title "title" output.check
- bbl.phdthesis format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.note output
- format.date "year" output.check
- fin.entry
- write.url
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
- editor empty$
- { organization output }
- { format.editors output.nonnull }
- if$
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.btitle "title" output.check
- format.bvolume output
- format.number.series output
- editor empty$
- { publisher empty$
- 'skip$
- {
- format.publisher.address output
- }
- if$
- }
- { publisher empty$
- {
- format.organization.address output }
- {
- organization output
- format.publisher.address output
- }
- if$
- }
- if$
- format.note output
- fin.entry
- write.url
-}
-
-FUNCTION {techreport}
-{ output.bibitem
- format.authors "author" output.check
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title "title" output.check
- format.tr.number output.nonnull
- institution "institution" output.check
- address output
- format.note output
- format.date "year" output.check
- fin.entry
- write.url
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
- format.authors "author" output.check
- title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
- format.title "title" output.check
- format.note "note" output.check
- format.date "year" output.check
- fin.entry
- write.url
-}
-
-FUNCTION {default.type} { misc }
-
-READ
-
-STRINGS { longest.label }
-
-INTEGERS { number.label longest.label.width }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #1 'number.label :=
- #0 'longest.label.width :=
-}
-
-FUNCTION {longest.label.pass}
-{ number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- 'skip$
- if$
-}
-
-EXECUTE {initialize.longest.label}
-
-ITERATE {longest.label.pass}
-
-FUNCTION {begin.bib}
-{ preamble$ empty$
- 'skip$
- { preamble$ write$ newline$ }
- if$
- "\begin{thebibliography}{" longest.label * "}" *
- write$ newline$
- "\expandafter\ifx\csname url\endcsname\relax"
- write$ newline$
- " \def\url#1{\texttt{#1}}\fi"
- write$ newline$
- "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi"
- write$ newline$
- "\expandafter\ifx\csname href\endcsname\relax"
- write$ newline$
- " \def\href#1#2{#2} \def\path#1{#1}\fi"
- write$ newline$
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.urlbst.variables}
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION {end.bib}
-{ newline$
- "\end{thebibliography}" write$ newline$
-}
-
-EXECUTE {end.bib}
-%% End of customized bst file
-%%
-%% End of file `elsarticle-num.bst'.
-
-
diff --git a/_extensions/quarto-journals/elsevier/bib/elsevier-harvard.csl b/_extensions/quarto-journals/elsevier/bib/elsevier-harvard.csl
deleted file mode 100644
index 0ef7b19..0000000
--- a/_extensions/quarto-journals/elsevier/bib/elsevier-harvard.csl
+++ /dev/null
@@ -1,239 +0,0 @@
-
-
diff --git a/_extensions/quarto-journals/elsevier/elsarticle.cls b/_extensions/quarto-journals/elsevier/elsarticle.cls
deleted file mode 100644
index cf20bdf..0000000
--- a/_extensions/quarto-journals/elsevier/elsarticle.cls
+++ /dev/null
@@ -1,1379 +0,0 @@
-%%
-%% This is file `elsarticle.cls',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% elsarticle.dtx (with options: `class')
-%%
-%% Copyright 2007-2020 Elsevier Ltd
-%%
-%% This file is part of the 'Elsarticle Bundle'.
-%% -------------------------------------------
-%%
-%% It may be distributed under the conditions of the LaTeX Project Public
-%% License, either version 1.2 of this license or (at your option) any
-%% later version. The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.2 or later is part of all distributions of LaTeX
-%% version 1999/12/01 or later.
-%%
-%% The list of all files belonging to the 'Elsarticle Bundle' is
-%% given in the file `manifest.txt'.
-%%
-%%
-%%
-%%
- \def\RCSfile{elsarticle}%
- \def\RCSversion{3.3}%
- \def\RCSdate{2020/11/20}%
- \def\@shortjnl{\relax}
- \def\@journal{Elsevier Ltd}
- \def\@company{Elsevier Ltd}
- \def\@issn{000-0000}
- \def\@shortjid{elsarticle}
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{\@shortjid}[\RCSdate, \RCSversion: \@journal]
-\def\ABD{\AtBeginDocument}
-\newif\ifpreprint \preprintfalse
-\newif\ifnonatbib \nonatbibfalse
-\newif\iflongmktitle \longmktitlefalse
-\newif\ifnopreprintline \nopreprintlinefalse
-\newif\ifdoubleblind \doubleblindfalse
-
-\newif\ifuseexplthreefunctions \useexplthreefunctionsfalse
-
-\IfFileExists{expl3.sty}{%
- \global\useexplthreefunctionstrue%
- \RequirePackage{expl3}}{}
-\ifuseexplthreefunctions\relax%
-\IfFileExists{xparse.sty}{\RequirePackage{xparse}}{}
-\IfFileExists{etoolbox.sty}{\RequirePackage{etoolbox}}{}
-\fi
-
-\def\@blstr{1}
-\newdimen\@bls
-\@bls=\baselineskip
-
-\def\@finalWarning{%
- *****************************************************\MessageBreak
- This document is typeset in the CRC style which\MessageBreak
- is not suitable for submission.\MessageBreak
- \MessageBreak
- Please typeset again using 'preprint' option\MessageBreak
- for creating PDF suitable for submission.\MessageBreak
- ******************************************************\MessageBreak
-}
-
-\DeclareOption{preprint}{\global\preprinttrue
- \gdef\@blstr{1}\xdef\jtype{0}%
- \AtBeginDocument{\@twosidefalse\@mparswitchfalse}}
-\DeclareOption{nopreprintline}{\global\nopreprintlinetrue}
-\DeclareOption{final}{\gdef\@blstr{1}\global\preprintfalse}
-\DeclareOption{review}{\global\preprinttrue\gdef\@blstr{1.5}}
-\DeclareOption{authoryear}{\xdef\@biboptions{round,authoryear}}
-\DeclareOption{number}{\xdef\@biboptions{numbers}}
-\DeclareOption{numbers}{\xdef\@biboptions{numbers}}
-\DeclareOption{nonatbib}{\global\nonatbibtrue}
-\DeclareOption{longtitle}{\global\longmktitletrue}
-\DeclareOption{5p}{\xdef\jtype{5}\global\preprintfalse
- \ExecuteOptions{twocolumn}}
- \def\jtype{0}
-\DeclareOption{3p}{\xdef\jtype{3}\global\preprintfalse}
-\DeclareOption{1p}{\xdef\jtype{1}\global\preprintfalse
- \AtBeginDocument{\@twocolumnfalse}}
-\DeclareOption{times}{\IfFileExists{txfonts.sty}%
- {\AtEndOfClass{\RequirePackage{txfonts}%
- \gdef\ttdefault{cmtt}%
- \let\iint\relax
- \let\iiint\relax
- \let\iiiint\relax
- \let\idotsint\relax
- \let\openbox\relax}}{\AtEndOfClass{\RequirePackage{times}}}}
-
-\DeclareOption{endfloat}{\IfFileExists{endfloat.sty}
- {\AtEndOfClass{\RequirePackage[markers]{endfloat}}}{}}
-\DeclareOption{endfloats}{\IfFileExists{endfloat.sty}
- {\AtEndOfClass{\RequirePackage[markers]{endfloat}}}{}}
-\DeclareOption{numafflabel}
- {\AtBeginDocument{\def\theaffn{\arabic{affn}}}} %*%
-\DeclareOption{lefttitle}
- {\AtBeginDocument{\def\elsarticletitlealign{flushleft}}} %*%
-\DeclareOption{centertitle}
- {\AtBeginDocument{\def\elsarticletitlealign{center}}} %*%
-\DeclareOption{reversenotenum}
- {\AtBeginDocument{\def\theaffn{\arabic{affn}}
- \def\thefnote{\alph{fnote}}}}
-\DeclareOption{doubleblind}{\doubleblindtrue}
-
-\ExecuteOptions{a4paper,10pt,oneside,onecolumn,number,preprint,centertitle}
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
-\ProcessOptions
-\LoadClass{article}
-\RequirePackage{graphicx}
-\let\comma\@empty
-\let\tnotesep\@empty
-\let\@title\@empty
-
-\def\useelstitle{}
-
-\def\title#1{\g@addto@macro\@title{#1%
- \global\let\tnoteref\@gobble}%
- \g@addto@macro\useelstitle{#1}}
-
-\def\elsLabel#1{\@bsphack\protected@write\@auxout{}%
- {\string\Newlabel{#1}{\@currentlabel}}\@esphack}
-\def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}}
-
-\def\elsRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}}
-
-\let\@tnotemark\@empty
-
-\ifdoubleblind
- \def\tnotemark[#1]{}
-\else
- \def\tnotemark[#1]{\@for\mytmark:=#1\do{%
- \expandafter\ifcase\elsRef{\mytmark}\or$^{\star}$\or
- $^{,\star\star}$\fi
- }%
-}
-\fi
-
-\def\tnoteref#1{\tnotemark[{#1}]}
-\let\@tnotes\@empty
-\newcounter{tnote}
-\def\tnotetext[#1]#2{\g@addto@macro\@tnotes{%
- \stepcounter{tnote}\elsLabel{#1}%
- \def\thefootnote{\ifcase\c@tnote\or$\star$\or$\star\star$\fi}%
- \footnotetext{#2}}}
-
-\let\@nonumnotes\@empty
-\def\nonumnote#1{\g@addto@macro\@nonumnotes{%
- \let\thefootnote\relax\footnotetext{#1}}}
-
-\newcounter{fnote}
-\def\thefnote{\arabic{fnote}}
-\def\fnmark[#1]{\let\comma\@empty
- \def\@fnmark{\@for\@@fnmark:=#1\do{%
- \edef\fnotenum{\@ifundefined{X@\@@fnmark}{1}{\elsRef{\@@fnmark}}}%
- \unskip\comma\fnotenum\let\comma,}}%
-}
-
-\def\fnref#1{\fnmark[#1]}
-
-\let\@fnotes\@empty\let\@fnmark\@empty
-\def\fntext[#1]#2{\g@addto@macro\@fnotes{%
- \refstepcounter{fnote}\elsLabel{#1}%
- \def\thefootnote{\c@fnote}%
- \global\setcounter{footnote}{\c@fnote}%
- \footnotetext{#2}}}
-
-\def\cormark[#1]{\edef\cnotenum{\elsRef{#1}}%
- \unskip\textsuperscript{\sep\ifcase\cnotenum\or
- $\ast$\or$\ast\ast$\fi\hspace{-1pt}}\let\sep=,}
-
-\let\@cormark\@empty
-\let\@cornotes\@empty
-\newcounter{cnote}
-\def\cortext[#1]#2{\g@addto@macro\@cornotes{%
- \refstepcounter{cnote}\elsLabel{#1}%
- \def\thefootnote{\ifcase\thecnote\or$\ast$\or
- $\ast\ast$\fi}%
- \footnotetext{#2}}}
-
-\let\@corref\@empty
-\def\corref#1{\edef\cnotenum{\elsRef{#1}}%
- \edef\@corref{\ifcase\cnotenum\or
- $\ast$\or$\ast\ast$\fi\hskip-1pt}}
-
-\def\resetTitleCounters{\c@cnote=0
- \c@fnote=0 \c@tnote=0 \c@footnote=0}
-
-\let\eadsep\@empty
-\def\@elseads{}
-\let\@elsuads\@empty
-\let\@cormark\@empty
-\def\hashchar{\expandafter\@gobble\string\~}
-\def\underscorechar{\expandafter\@gobble\string\_}
-\def\lbracechar{\expandafter\@gobble\string\{}
-\def\rbracechar{\expandafter\@gobble\string\}}
-
-\gdef\ead{\@ifnextchar[{\@uad}{\@ead}}
-\gdef\@ead#1{\bgroup
- \def\_{\underscorechar}%
- \def\{{\lbracechar}%
- \def~{\hashchar}%
- \def\}{\rbracechar}%
- \edef\tmp{\the\@eadauthor}%
- \immediate\write\@auxout{\string\emailauthor
- {#1}{\expandafter\strip@prefix\meaning\tmp}}%
- \egroup
-}
-\newcounter{ead}
-\gdef\emailauthor#1#2{\stepcounter{ead}%
- \g@addto@macro\@elseads{\raggedright%
- \let\corref\@gobble\def\@@tmp{#1}%
- \eadsep{\ttfamily\expandafter\strip@prefix\meaning\@@tmp}
- (#2)\def\eadsep{\unskip,\space}}%
-}
-\gdef\@uad[#1]#2{\bgroup
- \def~{\hashchar}%
- \def\_{\underscorechar}%
- \def~{\hashchar}%
- \def\}{\rbracechar}%
- \edef\tmp{\the\@eadauthor}
- \immediate\write\@auxout{\string\urlauthor
- {#2}{\expandafter\strip@prefix\meaning\tmp}}%
- \egroup
-}
-\gdef\urlauthor#1#2{\g@addto@macro\@elsuads{\let\corref\@gobble%
- \def\@@tmp{#1}\raggedright\eadsep
- {\ttfamily\expandafter\strip@prefix\meaning\@@tmp}\space(#2)%
- \def\eadsep{\unskip,\space}}%
-}
-
-\def\elsauthors{}
-\def\useauthors{}
-\def\elsprelimauthors{}
-
-\def\pprinttitle{}
-\let\authorsep\@empty
-\let\prelimauthorsep\@empty
-\let\sep\@empty
-\newcounter{author}
-\def\author{\@ifnextchar[{\@@author}{\@author}}
-
-\newtoks\@eadauthor
-\def\@@author[#1]#2{%
- \g@addto@macro\elsprelimauthors{%
- \prelimauthorsep#2%
- \def\prelimauthorsep{\unskip,\space}}%
- \g@addto@macro\elsauthors{%
- \def\baselinestretch{1}%
- \authorsep#2\unskip\textsuperscript{%#1%
- \@for\@@affmark:=#1\do{%
- \edef\affnum{\@ifundefined{X@\@@affmark}{1}{\elsRef{\@@affmark}}}%
- \unskip\sep\affnum\let\sep=,}%
- \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi
- \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi
- }%
- \def\authorsep{\unskip,\space}%
- \global\let\sep\@empty\global\let\@corref\@empty
- \global\let\@fnmark\@empty}%
- \@eadauthor={#2}%
- \g@addto@macro\useauthors{#2; }%
-}
-
-\def\@author#1{%
- \g@addto@macro\elsprelimauthors{%
- \prelimauthorsep#1%
- \def\prelimauthorsep{\unskip,\space}}%
- \g@addto@macro\elsauthors{\normalsize%
- \def\baselinestretch{1}%
- \upshape\authorsep#1\unskip\textsuperscript{%
- \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi
- \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi
- }%
- \def\authorsep{\unskip,\space}%
- \global\let\@fnmark\@empty
- \global\let\@corref\@empty \global\let\sep\@empty}%
- \@eadauthor={#1}%
- \g@addto@macro\useauthors{#1; }%
-}
-
-\AtBeginDocument{%
- \@ifpackageloaded{hyperref}{%
- \expandafter\gdef\csname Hy@title\endcsname{\useelstitle}%
- \expandafter\gdef\csname Hy@author\endcsname{\useauthors}%
- }{}
-}
-
-\def\elsaddress{}
-\def\addsep{\par\vskip6pt}
-
-\def\@alph#1{%
- \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or
- l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or
- y\or z%
- \or aa\or ab\or ac\or ad\or ae\or af\or ag\or ah\or ai\or aj\or
- ak\or al\or am\or an\or ao\or ap\or aq\or ar\or as\or at\or au\or
- av\or aw\or ax\or ay\or az%
- \or ba\or bb\or bc\or bd\or be\or bf\or bg\or bh\or bi\or bj\or
- bk\or bl\or bm\or bn\or bo\or bp\or bq\or br\or bs\or bt\or bu\or
- bv\or bw\or bx\or by\or bz%
- \or ca\or cb\or cc\or cd\or ce\or cf\or cg\or ch\or ci\or cj\or
- ck\or cl\or cm\or cn\or co\or cp\or cq\or cr\or cs\or ct\or cu\or
- cv\or cw\or cx\or cy\or cz%
- \or da\or db\or dc\or dd\or de\or df\or dg\or dh\or di\or dj\or
- dk\or dl\or dm\or dn\or do\or dp\or dq\or dr\or ds\or dt\or du\or
- dv\or dw\or dx\or dy\or dz%
- \or ea\or eb\or ec\or ed\or ee\or ef\or eg\or eh\or ei\or ej\or
- ek\or el\or em\or en\or eo\or ep\or eq\or er\or es\or et\or eu\or
- ev\or ew\or ex\or ey\or ez%
- \or fa\or fb\or fc\or fd\or fe\or ff\or fg\or fh\or fi\or fj\or
- fk\or fl\or fm\or fn\or fo\or fp\or fq\or fr\or fs\or ft\or fu\or
- fv\or fw\or fx\or fy\or fz%
- \or ga\or gb\or gc\or gd\or ge\or gf\or gg\or gh\or gi\or gj\or
- gk\or gl\or gm\or gn\or go\or gp\or gq\or gr\or gs\or gt\or gu\or
- gv\or gw\or gx\or gy\or gz%
- \else\@ctrerr\fi}
-
-\newcounter{affn}
-\renewcommand\theaffn{\alph{affn}}
-
-\ifuseexplthreefunctions\relax%
- \ExplSyntaxOn
- \def\ca_affitem_postskip{\mbox{~}\unskip\ignorespaces}
- %%Author Address
- \DeclareDocumentCommand \ca_organization { O{,} m }
- {
- % #2 #1\mbox{~}\unskip\ignorespaces
- \csgappto { ca_affiliation_values } { #2 #1\ca_affitem_postskip }
- }
- \DeclareDocumentCommand \ca_postal_code { O{,} m }
- {
- % #2 #1\mbox{~}\unskip\ignorespaces
- \csgappto { ca_affiliation_values } { #2 #1\ca_affitem_postskip }
- }
- \DeclareDocumentCommand \ca_aff_city { O{,} m }
- {
- % #2 #1\mbox{~}\unskip\ignorespaces
- \csgappto { ca_affiliation_values } { #2 #1\ca_affitem_postskip }
- }
- \DeclareDocumentCommand \ca_address_line { O{,}m }
- {
- % #2 #1\mbox{~}\unskip\ignorespaces
- \csgappto { ca_affiliation_values } { #2 #1\ca_affitem_postskip }
- }
- \DeclareDocumentCommand \ca_state { O{,} m }
- {
- % #2 #1\mbox{~}\unskip\ignorespaces
- \csgappto { ca_affiliation_values } { #2 #1\ca_affitem_postskip }
- }
- \DeclareDocumentCommand \ca_country { O{ } m }
- {
- % #2 #1
- \csgappto { ca_affiliation_values } { #2 #1 }
- }
-
- \DeclareDocumentCommand \ca_stm_organization { O{,} m }
- {
- #2 #1\ca_affitem_postskip
- }
- \DeclareDocumentCommand \ca_stm_postal_code { O{,} m }
- {
- #2 #1\ca_affitem_postskip
- }
- \DeclareDocumentCommand \ca_stm_aff_city { O{,} m }
- {
- #2 #1\ca_affitem_postskip
- }
- \DeclareDocumentCommand \ca_stm_aff_address_line { O{,}m }
- {
- #2 #1\ca_affitem_postskip
- }
- \DeclareDocumentCommand \ca_stm_state { O{,} m }
- {
- #2 #1\ca_affitem_postskip
- }
- \DeclareDocumentCommand \ca_stm_country { O{ } m }
- {
- #2 #1
- }
-
- \keys_define:nn { stm / affiliation }
- {
- op .tl_set_x:N = \l_organization_punc_tl,
- oraganizationsep .tl_set_x:N = \l_organization_punc_tl,
- ap .tl_set_x:N = \l_address_line_punc_tl,
- addresslinesep .tl_set_x:N = \l_address_line_punc_tl,
- cp .tl_set_x:N = \l_city_punc_tl,
- citysep .tl_set_x:N = \l_city_punc_tl,
- pp .tl_set_x:N = \l_postal_code_punc_tl,
- postcodesep .tl_set_x:N = \l_postal_code_punc_tl,
- sp .tl_set_x:N = \l_state_punc_tl,
- statesep .tl_set_x:N = \l_state_punc_tl,
- o .code:n = { \ca_organization[\l_organization_punc_tl]{#1} },
- organization .code:n = { \ca_organization[\l_organization_punc_tl]{#1} },
- a .code:n = { \ca_address_line[\l_address_line_punc_tl]{#1} },
- addressline .code:n = { \ca_address_line[\l_address_line_punc_tl]{#1} },
- c .code:n = { \ca_aff_city[\l_city_punc_tl]{#1} },
- city .code:n = { \ca_aff_city[\l_city_punc_tl]{#1} },
- p .code:n = { \ca_postal_code[\l_postal_code_punc_tl]{#1} },
- postcode .code:n = { \ca_postal_code[\l_postal_code_punc_tl]{#1} },
- s .code:n = { \ca_state[\l_state_punc_tl]{#1} },
- state .code:n = { \ca_state[\l_state_punc_tl]{#1} },
- orp .tl_set_x:N = \l_organization_punc_tl,
- adp .tl_set_x:N = \l_address_line_punc_tl,
- cip .tl_set_x:N = \l_city_punc_tl,
- pcp .tl_set_x:N = \l_postal_code_punc_tl,
- stp .tl_set_x:N = \l_state_punc_tl,
- cyp .tl_set_x:N = \l_country_punc_tl,
- or .code:n = { \ca_organization[\l_organization_punc_tl]{#1} },
- ad .code:n = { \ca_address_line[\l_address_line_punc_tl]{#1} },
- ci .code:n = { \ca_aff_city[\l_city_punc_tl]{#1} },
- pc .code:n = { \ca_postal_code[\l_postal_code_punc_tl]{#1} },
- st .code:n = { \ca_state[\l_state_punc_tl]{#1} },
- cy .code:n = { \ca_country[\l_country_punc_tl]{#1} },
- country .code:n = { \ca_country[\l_country_punc_tl]{#1} },
- unknown .code:n = {
- \ifstrempty { #1 } {
- \csxappto { ca_affiliation_values }
- { {\l_keys_key_tl}~ }
- } {
- \csxappto { ca_affiliation_values }
- { {#1}~ }
- }
- }
- }
-
- \cs_set:Npn \__reset_affiliation:
- {
- \tl_gset:Nn \l_organization_punc_tl { , }
- \tl_gset:Nn \l_address_line_punc_tl { , }
- \tl_gset:Nn \l_city_punc_tl { , }
- \tl_gset:Nn \l_postal_code_punc_tl { , }
- \tl_gset:Nn \l_state_punc_tl { , }
- \tl_gset:Nn \l_country_punc_tl { }
- }
-
- \DeclareDocumentCommand\affiliation{ o m }{
- \__reset_affiliation:
- \csgdef { ca_affiliation_values } { }
- \IfNoValueTF { #2 }
- { }
- {
- \keys_set:nn { stm / affiliation } { #2 }
- }
- \csgappto{elsaddress}{
- \def\baselinestretch{1}%
- \refstepcounter{affn}
- \xdef\@currentlabel{\theaffn}
- \IfNoValueTF { #1 }
- { }
- { \elsLabel{#1} }
- \textsuperscript{\theaffn}}
- \csxappto{elsaddress}{
- \csuse { ca_affiliation_values }
- \par
- }
- }
- \ExplSyntaxOff
- \else%
- \def\caaffitempostskip{\space}
-
- \DeclareRobustCommand\caorganization[2][,]{%
- \g@addto@macro\caaffiliationvalues{#2#1\caaffitempostskip}%
- }
- \DeclareRobustCommand\capostalcode[2][,]{%
- \g@addto@macro\caaffiliationvalues{#2#1\caaffitempostskip}%
- }
- \DeclareRobustCommand\caaffcity[2][,]{%
- \g@addto@macro\caaffiliationvalues{#2#1\caaffitempostskip}%
- }
- \DeclareRobustCommand\caaddressline[2][,]{%
- \g@addto@macro\caaffiliationvalues{#2#1\caaffitempostskip}%
- }
- \DeclareRobustCommand\castate[2][,]{%
- \g@addto@macro\caaffiliationvalues{#2#1\caaffitempostskip}%
- }
- \DeclareRobustCommand\cacountry[2][,]{%
- \g@addto@macro\caaffiliationvalues{#2#1\caaffitempostskip}%
- }
- \DeclareRobustCommand\castmorganization[2][,]{%
- #2#1\caaffitempostskip%
- }
- \DeclareRobustCommand\castmpostalcode[2][,]{%
- #2#1\caaffitempostskip%
- }
- \DeclareRobustCommand\castmaffcity[2][,]{%
- #2#1\caaffitempostskip%
- }
- \DeclareRobustCommand\castmaddressline[2][,]{%
- #2#1\caaffitempostskip%
- }
- \DeclareRobustCommand\castmstate[2][,]{%
- #2#1\caaffitempostskip%
- }
- \DeclareRobustCommand\castmcountry[2][,]{%
- #2#1\caaffitempostskip%
- }
-
- \define@key{affiliation}{op}{\xdef\@organizationpunc{#1}}
- \define@key{affiliation}{orp}{\xdef\@organizationpunc{#1}}
- \define@key{affiliation}{organizationsep}{\xdef\@organizationpunc{#1}}
- \define@key{affiliation}{ap}{\xdef\@addresslinepunc{#1}}
- \define@key{affiliation}{adp}{\xdef\@addresslinepunc{#1}}
- \define@key{affiliation}{addresslinesep}{\xdef\@addresslinepunc{#1}}
- \define@key{affiliation}{cp}{\xdef\@citypunc{#1}}
- \define@key{affiliation}{cip}{\xdef\@citypunc{#1}}
- \define@key{affiliation}{cyp}{\xdef\@countrypunc{#1}}
- \define@key{affiliation}{citysep}{\xdef\@citypunc{#1}}
- \define@key{affiliation}{pp}{\xdef\@postcodepunc{#1}}
- \define@key{affiliation}{pop}{\xdef\@postcodepunc{#1}}
- \define@key{affiliation}{postcodesep}{\xdef\@postcodepunc{#1}}
- \define@key{affiliation}{sp}{\xdef\@statepunc{#1}}
- \define@key{affiliation}{stp}{\xdef\@statepunc{#1}}
- \define@key{affiliation}{statesep}{\xdef\@statepunc{#1}}
- \define@key{affiliation}{countrysep}{\xdef\@countrypunc{#1}}
-
- \define@key{affiliation}{organization}{%
- \caorganization[\@organizationpunc]{#1}}
- \define@key{affiliation}{addressline}{%
- \caaddressline[\@addresslinepunc]{#1}}
- \define@key{affiliation}{city}{%
- \caaffcity[\@citypunc]{#1}}
- \define@key{affiliation}{postcode}{%
- \capostalcode[\@postcodepunc]{#1}}
- \define@key{affiliation}{state}{%
- \castate[\@statepunc]{#1}}
- \define@key{affiliation}{or}{%
- \caorganization[\@organizationpunc]{#1}}
- \define@key{affiliation}{ad}{%
- \caaddressline[\@addresslinepunc]{#1}}
- \define@key{affiliation}{ci}{%
- \caaffcity[\@citypunc]{#1}}
- \define@key{affiliation}{po}{%
- \capostalcode[\@postcodepunc]{#1}}
- \define@key{affiliation}{st}{%
- \castate[\@statepunc]{#1}}
- \define@key{affiliation}{o}{%
- \caorganization[\@organizationpunc]{#1}}
- \define@key{affiliation}{a}{%
- \caaddressline[\@addresslinepunc]{#1}}
- \define@key{affiliation}{c}{%
- \cacity[\@citypunc]{#1}}
- \define@key{affiliation}{p}{%
- \capostcode[\@postcodepunc]{#1}}
- \define@key{affiliation}{s}{%
- \castate[\@statepunc]{#1}}
- \define@key{affiliation}{cy}{%
- \cacountry[\@countrypunc]{#1}}
- \define@key{affiliation}{country}{%
- \cacountry[\@countrypunc]{#1}}
-
- \gdef\@resetaffiliation{%
- \gdef\@organizationpunc{,}%
- \gdef\@addresslinepunc{,}%
- \gdef\@citypunc{,}%
- \gdef\@statepunc{,}%
- \gdef\@postcodepunc{,}%
- \gdef\@countrypunc{}%
- }
-
- \def\affiliation{\@ifnextchar[{\@@affiliation}{\@affiliation}}
-
- \newcommand*{\newstmrobustcmd}{}
- \protected\def\newstmrobustcmd{\@star@or@long\stmetb@new@command}
-
- \def\stmetb@new@command#1{\@testopt{\stmetb@newcommand#1}0}
-
- \def\stmetb@newcommand#1[#2]{%
- \@ifnextchar[%]
- {\stmetb@xargdef#1[#2]}
- {\ifx\l@ngrel@x\relax
- \let\l@ngrel@x\protected
- \else
- \protected\def\l@ngrel@x{\protected\long}%
- \fi
- \@argdef#1[#2]}}
-
- \long\def\stmetb@xargdef#1[#2][#3]#4{%
- \@ifdefinable#1{%
- \expandafter\protected
- \expandafter\def
- \expandafter#1%
- \expandafter{%
- \expandafter\@testopt
- \csname\string#1\endcsname{#3}}%
- \expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}}
- %
- \newcommand{\ifstmundef}[1]{%
- \ifdefined#1%
- \ifx#1\relax
- \expandafter\expandafter
- \expandafter\@firstoftwo
- \else
- \expandafter\expandafter
- \expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@firstoftwo
- \fi}
- \newcommand{\stmexpandonce}[1]{%
- \unexpanded\expandafter{#1}}
- \newstmrobustcmd{\gstmappto}[2]{%
- \ifundef{#1}
- {\xdef#1{\unexpanded{#2}}}
- {\xdef#1{\stmexpandonce#1\unexpanded{#2}}}}
- \newstmrobustcmd{\xstmappto}[2]{%
- \ifstmundef{#1}
- {\xdef#1{#2}}
- {\xdef#1{\stmexpandonce#1#2}}}
-
- \long\def\@@affiliation[#1]#2{%
- \@resetaffiliation%
- \gdef\caaffiliationvalues{}%
- \elsLabel{#1}%
- \setkeys{affiliation}{#2}%
- \g@addto@macro\elsaddress{%
- \def\baselinestretch{1}%
- \refstepcounter{affn}%
- \xdef\@currentlabel{\theaffn}%
- \elsLabel{#1}%
- \textsuperscript{\theaffn}}
- \xstmappto\elsaddress{\caaffiliationvalues\par}}
-
- \long\def\@affiliation#1{%
- \@resetaffiliation%
- \gdef\caaffiliationvalues{}%
- \setkeys{affiliation}{#1}%
- \g@addto@macro\elsauthors{%
- \def\baselinestretch{1}}%
- \xstmappto\elsaddress{\caaffiliationvalues\par}}
-\fi
-
-\def\address{\@ifnextchar[{\@@address}{\@address}}
-
-\long\def\@@address[#1]#2{\g@addto@macro\elsaddress{%
- \def\baselinestretch{1}%
- \refstepcounter{affn}
- \xdef\@currentlabel{\theaffn}
- \elsLabel{#1}%
- \textsuperscript{\theaffn}#2\par}}
-
-\long\def\@address#1{\g@addto@macro\elsauthors{%
- \def\baselinestretch{1}%
- \addsep\footnotesize\itshape#1\def\addsep{\par\vskip6pt}%
- \def\authorsep{\par\vskip8pt}}}
-
-\newbox\absbox
-\let\@elsarticleabstitle\@empty %*%
-\def\abstracttitle#1{\gdef\@elsarticleabstitle{#1}} %*%
-\abstracttitle{Abstract} %*%
-\renewenvironment{abstract}{\global\setbox\absbox=\vbox\bgroup
- \hsize=\textwidth\def\baselinestretch{1}%
- \noindent\unskip\textbf{\@elsarticleabstitle} %*%
- \par\medskip\noindent\unskip\ignorespaces}
- {\egroup}
-
-\newbox\elsarticlehighlightsbox
-\newbox\elsarticlegrabsbox
-\def\@elsarticlehighlightstitle{Highlights}
-\def\@elsarticlegrabstitle{Graphical Abstract}
-\newif\ifelsprelimpagegrabs\global\elsprelimpagegrabsfalse
-\newif\ifelsprelimpagehl\global\elsprelimpagehlfalse
-\def\elsarticleprelims{%
- \ifelsprelimpagegrabs\relax%
- \thispagestyle{empty}%
- \unvbox\elsarticlegrabsbox%
- \pagebreak\clearpage%
- \fi%
- \ifelsprelimpagehl\relax%
- \thispagestyle{empty}
- \unvbox\elsarticlehighlightsbox%
- \pagebreak\clearpage%
- \setcounter{page}{1}%
- \fi%
-}
-\newenvironment{highlights}{%
- \global\elsprelimpagehltrue%
- \global\setbox\elsarticlehighlightsbox=\vbox\bgroup
- \hsize=\textwidth\def\baselinestretch{1}%
- \noindent\unskip{\Large\@elsarticlehighlightstitle}%*%
- \par\vskip12pt\noindent\unskip\ignorespaces\textbf{\@title}%
- \ifx\elsprelimauthors\@empty\relax\else%
- \par\vskip6pt\noindent\unskip\ignorespaces\elsprelimauthors%
- \fi%
- \par\medskip\noindent\unskip\ignorespaces
- \begin{itemize}
- }
- {\end{itemize}
- \egroup}
-\newenvironment{graphicalabstract}{%
- \global\elsprelimpagegrabstrue%
- \global\setbox\elsarticlegrabsbox=\vbox\bgroup
- \hsize=\textwidth\def\baselinestretch{1}%
- \noindent\unskip{\Large\@elsarticlegrabstitle}%*%
- \par\vskip12pt\noindent\unskip\ignorespaces\textbf{\@title}%
- \ifx\elsprelimauthors\@empty\relax\else%
- \par\vskip6pt\noindent\unskip\ignorespaces\elsprelimauthors%
- \fi%
- \par\medskip\noindent\unskip\ignorespaces}
- {\egroup}
-
-\newbox\keybox
-\let\@elsarticlekwdtitle\@empty %*%
-\def\keywordtitle#1{\gdef\@elsarticlekwdtitle{#1}} %*%
-\def\keywordtitlesep#1{\gdef\@elsarticlekeywordtitlesep{#1}} %*%
-\keywordtitle{Keywords} %*%
-\keywordtitlesep{:\ }
-\def\keyword{%
- \def\sep{\unskip, }%
- \def\MSC{\@ifnextchar[{\@MSC}{\@MSC[2000]}}
- \def\@MSC[##1]{\par\leavevmode\hbox {\it ##1~MSC:\space}}%
- \def\PACS{\par\leavevmode\hbox {\it PACS:\space}}%
- \def\JEL{\par\leavevmode\hbox {\it JEL:\space}}%
- \global\setbox\keybox=\vbox\bgroup\hsize=\textwidth
- \normalsize\normalfont\def\baselinestretch{1}
- \parskip\z@
- \noindent\textit{\@elsarticlekwdtitle\@elsarticlekeywordtitlesep}
- \raggedright % Keywords are not justified.
- \ignorespaces}
-\def\endkeyword{\par \egroup}
-
-\newdimen\Columnwidth
-\Columnwidth=\columnwidth
-
-\def\printFirstPageNotes{%
- \iflongmktitle
- \let\columnwidth=\textwidth
- \fi
-\ifdoubleblind
-\else
- \ifx\@tnotes\@empty\else\@tnotes\fi
- \ifx\@nonumnotes\@empty\else\@nonumnotes\fi
- \ifx\@cornotes\@empty\else\@cornotes\fi
- \ifx\@elseads\@empty\relax\else
- \let\thefootnote\relax
- \footnotetext{\ifnum\theead=1\relax
- \textit{Email address:\space}\else
- \textit{Email addresses:\space}\fi
- \@elseads}\fi
- \ifx\@elsuads\@empty\relax\else
- \let\thefootnote\relax
- \footnotetext{\textit{URL:\space}%
- \@elsuads}\fi
-\fi
- \ifx\@fnotes\@empty\else\@fnotes\fi
- \iflongmktitle\if@twocolumn
- \let\columnwidth=\Columnwidth\fi\fi
-}
-
-%% Pushing text to begin on newpage %*%
-\def\newpage@after@title{title}
-\def\newpage@after@author{author}
-\def\newpage@after@abstract{abstract}
-\def\newpageafter#1%
- {\gdef\@elsarticlenewpageafter{#1}}
-
-\long\def\pprintMaketitle{\clearpage
- \iflongmktitle\if@twocolumn\let\columnwidth=\textwidth\fi\fi
- \resetTitleCounters
- \def\baselinestretch{1}%
- \printFirstPageNotes
- \begin{\elsarticletitlealign}%
- \thispagestyle{pprintTitle}%
- \def\baselinestretch{1}%
- \Large\@title\par\vskip18pt%
- \ifx\@elsarticlenewpageafter\newpage@after@title% %*%
- \newpage
- \fi%
- \ifdoubleblind
- \vspace*{2pc}
- \else
- \normalsize\elsauthors\par\vskip10pt
- \footnotesize\itshape\elsaddress\par\vskip36pt
- \fi
- \ifx\@elsarticlenewpageafter\newpage@after@author% %*%
- \newpage
- \fi%
- \hrule\vskip12pt
- \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi
- \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi
- \hrule\vskip12pt
- \ifx\@elsarticlenewpageafter\newpage@after@abstract% %*%
- \newpage
- \fi%
- \end{\elsarticletitlealign}%
- \gdef\thefootnote{\arabic{footnote}}%
- }
-
-\def\printWarning{%
- \mbox{}\par\vfill\par\bgroup
- \fboxsep12pt\fboxrule1pt
- \hspace*{.18\textwidth}
- \fcolorbox{gray50}{gray10}{\box\warnbox}
- \egroup\par\vfill\thispagestyle{empty}
- \setcounter{page}{0}
- \clearpage}
-
-\long\def\finalMaketitle{%
- \resetTitleCounters
- \def\baselinestretch{1}%
- \MaketitleBox
- \thispagestyle{pprintTitle}%
- \gdef\thefootnote{\arabic{footnote}}%
- }
-
-\long\def\MaketitleBox{%
- \resetTitleCounters
- \def\baselinestretch{1}%
- \begin{\elsarticletitlealign}%
- \def\baselinestretch{1}%
- \Large\@title\par\vskip18pt
- \ifdoubleblind
- \vspace*{2pc}
- \else
- \normalsize\elsauthors\par\vskip10pt
- \footnotesize\itshape\elsaddress\par\vskip36pt
- \fi
- \hrule\vskip12pt
- \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi
- \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi
- \hrule\vskip12pt
- \end{\elsarticletitlealign}%
-}
-
-\def\FNtext#1{\par\bgroup\footnotesize#1\egroup}
-\newdimen\space@left
-\def\alarm#1{\typeout{******************************}%
- \typeout{#1}%
- \typeout{******************************}%
-}
-
-\def\titlespancalculator#1#2#3#4{%
- % break count
- \@tempcnta=#4\relax%
- % pagebreakcount increment
- \advance\@tempcnta by 1\relax%
- % title page height
- \@tempdima=#1\relax%
- % Page height - title page notes height (only for first break)
- % Page height - textheight (for remaining breaks)
- % Page height - title page notes height
- \@tempdimb=#2\relax%
- % Remaining title page height
- \advance\@tempdima -\the\@tempdimb%
- % Checks if remaining title page
- % height less than textheight
- \ifdim\the\@tempdima>#3\relax%
- \titlespancalculator%
- {\the\@tempdima}{#3}{#3}{\the\@tempcnta}%Break again
- \else%
- % Save break count and exit.
- \xdef\savetitlepagespan{\the\@tempcnta}%
- \fi%
-}%
-
-\long\def\myfor#1#2#3{%
- \@tempcnta=#1\relax%
- \ifnum#1<#2\relax%
- \advance\@tempcnta by 1\relax%
- #3%
- \myfor{\the\@tempcnta}{#2}{#3}%
- \fi}
-
-\long\def\getSpaceLeft{%\global\@twocolumnfalse%
- \global\setbox0=\vbox{\hsize=\textwidth\MaketitleBox}%
- \global\setbox1=\vbox{\hsize=\textwidth
- \let\footnotetext\FNtext
- \printFirstPageNotes}%
- \xdef\noteheight{\the\ht1}%
- \xdef\titleheight{\the\ht0}%
- \@tempdima=\vsize
- \advance\@tempdima-\noteheight
- \advance\@tempdima-1\baselineskip
- \xdef\savefpageheight{\the\@tempdima}%
- \setbox2=\vbox{\titlespancalculator{\titleheight}%
- {\savefpageheight}{\textheight}{0}}%
-}
-
- \skip\footins=24pt
-
-\newbox\els@boxa
-\newbox\els@boxb
-
-\ifpreprint
- \def\maketitle{\elsarticleprelims\pprintMaketitle}
- \else
- \ifnum\jtype=1
- \def\maketitle{%
- \elsarticleprelims%
- \iflongmktitle\getSpaceLeft
- \ifdim\noteheight>0pt%
- \advance\@tempdima-1.35\baselineskip
- \fi%
- \global\setbox\els@boxa=\vsplit0 to \@tempdima
- \box\els@boxa\par\resetTitleCounters
- \thispagestyle{pprintTitle}%
- \printFirstPageNotes
- \ifnum\savetitlepagespan>1\relax%
- \myfor{2}{\savetitlepagespan}{%
- \global\setbox\els@boxb=\vsplit0 to \textheight%\@tempdima
- \box\els@boxb}
- \else%
- \fi%
- \box0%
- \else
- \finalMaketitle\printFirstPageNotes
- \fi
- \gdef\thefootnote{\arabic{footnote}}}%
- \else
- \ifnum\jtype=5
- \def\maketitle{%
- \elsarticleprelims%
- \iflongmktitle\getSpaceLeft
- \ifdim\noteheight>0pt%
- \advance\@tempdima-1.35\baselineskip
- \fi%
- \global\setbox\els@boxa=\vsplit0 to \@tempdima
- \box\els@boxa\par\resetTitleCounters
- \thispagestyle{pprintTitle}%
- \printFirstPageNotes
- \ifnum\savetitlepagespan>1\relax%
- \myfor{2}{\savetitlepagespan}{%
- \global\setbox\els@boxb=\vsplit0 to \textheight%\@tempdima
- \twocolumn[\box\els@boxb]}
- \else%
- \fi%
- \twocolumn[\box0]%\printFirstPageNotes
- \else
- \twocolumn[\finalMaketitle]\printFirstPageNotes
- \fi
- \gdef\thefootnote{\arabic{footnote}}}
- \else
- \if@twocolumn
- \def\maketitle{%
- \elsarticleprelims%
- \iflongmktitle\getSpaceLeft
- \ifdim\noteheight>0pt%
- \advance\@tempdima-1.35\baselineskip
- \fi%
- \global\setbox\els@boxa=\vsplit0 to \@tempdima
- \box\els@boxa\par\resetTitleCounters
- \thispagestyle{pprintTitle}%
- \printFirstPageNotes
- \ifnum\savetitlepagespan>1\relax%
- \myfor{2}{\savetitlepagespan}{%
- \global\setbox\els@boxb=\vsplit0 to \textheight%\@tempdima
- \twocolumn[\box\els@boxb]}
- \else%
- \fi%
- \twocolumn[\box0]%
- \else
- \twocolumn[\finalMaketitle]\printFirstPageNotes
- \fi
- \gdef\thefootnote{\arabic{footnote}}}%
- \else
- \def\maketitle{%
- \elsarticleprelims%
- \iflongmktitle\getSpaceLeft
- \ifdim\noteheight>0pt%
- \advance\@tempdima-1.35\baselineskip
- \fi%
- \global\setbox\els@boxa=\vsplit0 to \@tempdima
- \box\els@boxa\par\resetTitleCounters
- \thispagestyle{pprintTitle}%
- \printFirstPageNotes
- \ifnum\savetitlepagespan>1\relax%
- \myfor{2}{\savetitlepagespan}{%
- \global\setbox\els@boxb=\vsplit0 to \textheight%\@tempdima
- \box\els@boxb}
- \else%
- \fi%
- \box0%
- \else
- \elsarticleprelims%
- \finalMaketitle\printFirstPageNotes
- \fi
- \gdef\thefootnote{\arabic{footnote}}}%
- \fi
- \fi
- \fi
-\fi
-
-\let\@elsarticlemyfooter\@empty
-\let\@elsarticlemyfooteralign\@empty
-\def\@elsarticlemyfooteralignleft{L}
-\def\@elsarticlemyfooteralignright{R}
-\def\@elsarticlemyfooteraligncenter{C}
-
-\def\myfooter[#1]#2 %*%
- {\gdef\@elsarticlemyfooteralign{#1}
- \gdef\@elsarticlemyfooter{#2}}
-
-\def\myfooterfont#1{\gdef\@myfooterfont{#1}}
-\myfooterfont{\footnotesize\itshape}
-\def\ps@pprintTitle{%
- \let\@oddhead\@empty
- \let\@evenhead\@empty
- \def\@oddfoot
- {\hbox to \textwidth%
- {\ifnopreprintline\relax\else
- \@myfooterfont%
- \ifx\@elsarticlemyfooteralign\@elsarticlemyfooteraligncenter%
- \hfil\@elsarticlemyfooter\hfil%
- \else%
- \ifx\@elsarticlemyfooteralign\@elsarticlemyfooteralignleft%
- \@elsarticlemyfooter\hfill{}%
- \else%
- \ifx\@elsarticlemyfooteralign\@elsarticlemyfooteralignright%
- {}\hfill\@elsarticlemyfooter%
- \else%
- Preprint submitted to \ifx\@journal\@empty%
- Elsevier%
- \else\@journal\fi\hfill\@date\fi%
- \fi%
- \fi%
- \fi%
- }
- }%
- \let\@evenfoot\@oddfoot}
-\def\@seccntDot{.}
-\def\@seccntformat#1{\csname the#1\endcsname\@seccntDot\hskip 0.5em}
-
-\renewcommand\section{\@startsection {section}{1}{\z@}%
- {18\p@ \@plus 6\p@ \@minus 3\p@}%
- {9\p@ \@plus 6\p@ \@minus 3\p@}%
- {\normalsize\bfseries\boldmath}}
-\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
- {12\p@ \@plus 6\p@ \@minus 3\p@}%
- {3\p@ \@plus 6\p@ \@minus 3\p@}%
- {\normalfont\normalsize\itshape}}
-\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
- {12\p@ \@plus 6\p@ \@minus 3\p@}%
- {\p@}%
- {\normalfont\normalsize\itshape}}
-
-\def\paragraph{\secdef{\els@aparagraph}{\els@bparagraph}}
-\def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2.}}
-\def\els@bparagraph#1{\elsparagraph*{#1.}}
-
-\newcommand\elsparagraph{\@startsection{paragraph}{4}{0\z@}%
- {10\p@ \@plus 6\p@ \@minus 3\p@}%
- {-6\p@}%
- {\normalfont\itshape}}
-\newdimen\leftMargin
-\leftMargin=2em
-\newtoks\@enLab %\newtoks\@enfont
-\def\@enQmark{?}
-\def\@enLabel#1#2{%
- \edef\@enThe{\noexpand#1{\@enumctr}}%
- \@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}%
- \@enloop}
-\def\@enSpace{\afterassignment\@enSp@ce\let\@tempa= }
-\def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop}
-\def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop}
-\def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop}
-\def\@enloop{\futurelet\@entemp\@enloop@}
-\def\@enloop@{%
- \ifx A\@entemp \def\@tempa{\@enLabel\Alph }\else
- \ifx a\@entemp \def\@tempa{\@enLabel\alph }\else
- \ifx i\@entemp \def\@tempa{\@enLabel\roman }\else
- \ifx I\@entemp \def\@tempa{\@enLabel\Roman }\else
- \ifx 1\@entemp \def\@tempa{\@enLabel\arabic}\else
- \ifx \@sptoken\@entemp \let\@tempa\@enSpace \else
- \ifx \bgroup\@entemp \let\@tempa\@enGroup \else
- \ifx \@enum@\@entemp \let\@tempa\@gobble \else
- \let\@tempa\@enOther
- \fi\fi\fi\fi\fi\fi\fi\fi
- \@tempa}
-\newlength{\@sep} \newlength{\@@sep}
-\setlength{\@sep}{.5\baselineskip plus.2\baselineskip
- minus.2\baselineskip}
-\setlength{\@@sep}{.1\baselineskip plus.01\baselineskip
- minus.05\baselineskip}
-\providecommand{\sfbc}{\rmfamily\upshape}
-\providecommand{\sfn}{\rmfamily\upshape}
-\def\@enfont{\ifnum \@enumdepth >1\let\@nxt\sfn \else\let\@nxt\sfbc \fi\@nxt}
-\def\enumerate{%
- \ifnum \@enumdepth >3 \@toodeep\else
- \advance\@enumdepth \@ne
- \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi
- \@ifnextchar[{\@@enum@}{\@enum@}}
-\def\@@enum@[#1]{%
- \@enLab{}\let\@enThe\@enQmark
- \@enloop#1\@enum@
- \ifx\@enThe\@enQmark\@warning{The counter will not be printed.%
- ^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi
- \expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}%
- \expandafter\let\csname the\@enumctr\endcsname\@enThe
- \csname c@\@enumctr\endcsname7
- \expandafter\settowidth
- \csname leftmargin\romannumeral\@enumdepth\endcsname
- {\the\@enLab\hskip\labelsep}%
- \@enum@}
-\def\@enum@{\list{{\@enfont\csname label\@enumctr\endcsname}}%
- {\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}%
- \ifnum \@enumdepth>1\setlength{\topsep}{\@@sep}\else
- \setlength{\topsep}{\@sep}\fi
- \ifnum \@enumdepth>1\setlength{\itemsep}{0pt plus1pt minus1pt}%
- \else \setlength{\itemsep}{\@@sep}\fi
- %\setlength\leftmargin{\leftMargin}%%%{1.8em}
- \setlength{\parsep}{0pt plus1pt minus1pt}%
- \setlength{\parskip}{0pt plus1pt minus1pt}
- }}
-
-\def\endenumerate{\par\ifnum \@enumdepth >1\addvspace{\@@sep}\else
- \addvspace{\@sep}\fi \endlist}
-
-\def\sitem{\@noitemargtrue\@item[\@itemlabel *]}
-
-\def\itemize{\@ifnextchar[{\@Itemize}{\@Itemize[]}}
-
-\def\@Itemize[#1]{\def\next{#1}%
- \ifnum \@itemdepth >\thr@@\@toodeep\else
- \advance\@itemdepth\@ne
- \ifx\next\@empty\else\expandafter\def\csname
- labelitem\romannumeral\the\@itemdepth\endcsname{#1}\fi%
- \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
- \expandafter\list\csname\@itemitem\endcsname
- {\def\makelabel##1{\hss\llap{##1}}}%
- \fi}
-\def\newdefinition#1{%
- \@ifnextchar[{\@odfn{#1}}{\@ndfn{#1}}}%]
-\def\@ndfn#1#2{%
- \@ifnextchar[{\@xndfn{#1}{#2}}{\@yndfn{#1}{#2}}}
-\def\@xndfn#1#2[#3]{%
- \expandafter\@ifdefinable\csname #1\endcsname
- {\@definecounter{#1}\@newctr{#1}[#3]%
- \expandafter\xdef\csname the#1\endcsname{%
- \expandafter\noexpand\csname the#3\endcsname \@dfncountersep
- \@dfncounter{#1}}%
- \global\@namedef{#1}{\@dfn{#1}{#2}}%
- \global\@namedef{end#1}{\@enddefinition}}}
-\def\@yndfn#1#2{%
- \expandafter\@ifdefinable\csname #1\endcsname
- {\@definecounter{#1}%
- \expandafter\xdef\csname the#1\endcsname{\@dfncounter{#1}}%
- \global\@namedef{#1}{\@dfn{#1}{#2}}%
- \global\@namedef{end#1}{\@enddefinition}}}
-\def\@odfn#1[#2]#3{%
- \@ifundefined{c@#2}{\@nocounterr{#2}}%
- {\expandafter\@ifdefinable\csname #1\endcsname
- {\global\@namedef{the#1}{\@nameuse{the#2}}
- \global\@namedef{#1}{\@dfn{#2}{#3}}%
- \global\@namedef{end#1}{\@enddefinition}}}}
-\def\@dfn#1#2{%
- \refstepcounter{#1}%
- \@ifnextchar[{\@ydfn{#1}{#2}}{\@xdfn{#1}{#2}}}
-\def\@xdfn#1#2{%
- \@begindefinition{#2}{\csname the#1\endcsname}\ignorespaces}
-\def\@ydfn#1#2[#3]{%
- \@opargbegindefinition{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
-\def\@dfncounter#1{\noexpand\arabic{#1}}
-\def\@dfncountersep{.}
-\def\@begindefinition#1#2{\trivlist
- \item[\hskip\labelsep{\bfseries #1\ #2.}]\upshape}
-\def\@opargbegindefinition#1#2#3{\trivlist
- \item[\hskip\labelsep{\bfseries #1\ #2\ (#3).}]\upshape}
-\def\@enddefinition{\endtrivlist}
-
-\def\@begintheorem#1#2{\trivlist
- \let\baselinestretch\@blstr
- \item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape}
-\def\@opargbegintheorem#1#2#3{\trivlist
- \let\baselinestretch\@blstr
- \item[\hskip \labelsep{\bfseries #1\ #2\ (#3).}]\itshape}
-
-\def\newproof#1{%
- \@ifnextchar[{\@oprf{#1}}{\@nprf{#1}}}
-\def\@nprf#1#2{%
- \@ifnextchar[{\@xnprf{#1}{#2}}{\@ynprf{#1}{#2}}}
-\def\@xnprf#1#2[#3]{%
- \expandafter\@ifdefinable\csname #1\endcsname
- {\@definecounter{#1}\@newctr{#1}[#3]%
- \expandafter\xdef\csname the#1\endcsname{%
- \expandafter\noexpand\csname the#3\endcsname \@prfcountersep
- \@prfcounter{#1}}%
- \global\@namedef{#1}{\@prf{#1}{#2}}%
- \global\@namedef{end#1}{\@endproof}}}
-\def\@ynprf#1#2{%
- \expandafter\@ifdefinable\csname #1\endcsname
- {\@definecounter{#1}%
- \expandafter\xdef\csname the#1\endcsname{\@prfcounter{#1}}%
- \global\@namedef{#1}{\@prf{#1}{#2}}%
- \global\@namedef{end#1}{\@endproof}}}
-\def\@oprf#1[#2]#3{%
- \@ifundefined{c@#2}{\@nocounterr{#2}}%
- {\expandafter\@ifdefinable\csname #1\endcsname
- {\global\@namedef{the#1}{\@nameuse{the#2}}%
- \global\@namedef{#1}{\@prf{#2}{#3}}%
- \global\@namedef{end#1}{\@endproof}}}}
-\def\@prf#1#2{%
- \refstepcounter{#1}%
- \@ifnextchar[{\@yprf{#1}{#2}}{\@xprf{#1}{#2}}}
-\def\@xprf#1#2{%
- \@beginproof{#2}{\csname the#1\endcsname}\ignorespaces}
-\def\@yprf#1#2[#3]{%
- \@opargbeginproof{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
-\def\@prfcounter#1{\noexpand\arabic{#1}}
-\def\@prfcountersep{.}
-\def\@beginproof#1#2{\trivlist\let\baselinestretch\@blstr
- \item[\hskip \labelsep{\scshape #1.}]\rmfamily}
-\def\@opargbeginproof#1#2#3{\trivlist\let\baselinestretch\@blstr
- \item[\hskip \labelsep{\scshape #1\ (#3).}]\rmfamily}
-\def\@endproof{\endtrivlist}
-\newcommand*{\qed}{\hbox{}\hfill$\Box$}
-
-\@ifundefined{@biboptions}{\xdef\@biboptions{numbers}}{}
-\InputIfFileExists{\jobname.spl}{}{}
-\ifnonatbib\relax\else
- \RequirePackage[\@biboptions]{natbib}
-\fi
-\newwrite\splwrite
-\immediate\openout\splwrite=\jobname.spl
-\def\biboptions#1{\def\next{#1}\immediate\write\splwrite{%
- \string\g@addto@macro\string\@biboptions{%
- ,\expandafter\strip@prefix\meaning\next}}}
-
-\let\baselinestretch=\@blstr
-\ifnum\jtype=1
- \RequirePackage{geometry}
- \geometry{twoside,
- paperwidth=210mm,
- paperheight=297mm,
- textheight=562pt,
- textwidth=384pt,
- centering,
- headheight=50pt,
- headsep=12pt,
- footskip=12pt,
- footnotesep=24pt plus 2pt minus 12pt,
- }
- \global\let\bibfont=\footnotesize
- \global\bibsep=0pt
- \if@twocolumn\global\@twocolumnfalse\fi
-\else\ifnum\jtype=3
- \RequirePackage{geometry}
- \geometry{twoside,
- paperwidth=210mm,
- paperheight=297mm,
- textheight=622pt,
- textwidth=468pt,
- centering,
- headheight=50pt,
- headsep=12pt,
- footskip=18pt,
- footnotesep=24pt plus 2pt minus 12pt,
- columnsep=2pc
- }
- \global\let\bibfont=\footnotesize
- \global\bibsep=0pt
- \if@twocolumn\input{fleqn.clo}\fi
-\else\ifnum\jtype=5
- \RequirePackage{geometry}
- \geometry{twoside,
- paperwidth=210mm,
- paperheight=297mm,
- textheight=682pt,
- textwidth=522pt,
- centering,
- headheight=50pt,
- headsep=12pt,
- footskip=18pt,
- footnotesep=24pt plus 2pt minus 12pt,
- columnsep=18pt
- }%
- \global\let\bibfont=\footnotesize
- \global\bibsep=0pt
- \input{fleqn.clo}
- \global\@twocolumntrue
-%%
-%% End of option '5p'
-%%
-\fi\fi\fi
-\def\journal#1{\gdef\@journal{#1}}
- \let\@journal\@empty
-\newenvironment{frontmatter}{}{\maketitle}
-
-\long\def\@makecaption#1#2{%
- \vskip\abovecaptionskip\footnotesize
- \sbox\@tempboxa{#1: #2}%
- \ifdim \wd\@tempboxa >\hsize
- #1: #2\par
- \else
- \global \@minipagefalse
- \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
- \fi
- \vskip\belowcaptionskip}
-
-\AtBeginDocument{\@ifpackageloaded{hyperref}
- {\def\@linkcolor{blue}
- \def\@anchorcolor{blue}
- \def\@citecolor{blue}
- \def\@filecolor{blue}
- \def\@urlcolor{blue}
- \def\@menucolor{blue}
- \def\@pagecolor{blue}
-\begingroup
- \@makeother\`%
- \@makeother\=%
- \edef\x{%
- \edef\noexpand\x{%
- \endgroup
- \noexpand\toks@{%
- \catcode 96=\noexpand\the\catcode`\noexpand\`\relax
- \catcode 61=\noexpand\the\catcode`\noexpand\=\relax
- }%
- }%
- \noexpand\x
- }%
-\x
-\@makeother\`
-\@makeother\=
-}{}}
-%%
-\def\appendixname{Appendix }
-\renewcommand\appendix{\par
- \setcounter{section}{0}%
- \setcounter{subsection}{0}%
- \setcounter{equation}{0}
- \gdef\thefigure{\@Alph\c@section.\arabic{figure}}%
- \gdef\thetable{\@Alph\c@section.\arabic{table}}%
- \gdef\thesection{\appendixname~\@Alph\c@section}%
- \@addtoreset{equation}{section}%
- \gdef\theequation{\@Alph\c@section.\arabic{equation}}%
- \addtocontents{toc}{\string\let\string\numberline\string\tmptocnumberline}{}{}
-}
-
-%%%% \numberline width calculation for appendix.
-\newdimen\appnamewidth
-\def\tmptocnumberline#1{%
- \setbox0=\hbox{\appendixname}
- \appnamewidth=\wd0
- \addtolength\appnamewidth{2.5pc}
- \hb@xt@\appnamewidth{#1\hfill}
-}
-
-%% Added for work with amsrefs.sty
-
-\@ifpackageloaded{amsrefs}%
- {}
- {%\let\bibsection\relax%
- \AtBeginDocument{\def\cites@b#1#2,#3{%
- \begingroup[%
- \toks@{\InnerCite{#2}#1}%
- \ifx\@empty#3\@xp\@gobble\fi
- \cites@c#3%
-}}}
-%%
-%% Added for avoiding clash with cleveref.sty
-\@ifpackageloaded{cleveref}%
- {}
- {\def\tnotetext[#1]#2{\g@addto@macro\@tnotes{%
- \refstepcounter{tnote}%
- \immediate\write\@auxout{\string\Newlabel{#1}{\thetnote}}
- \def\thefootnote{\ifcase\c@tnote\or$\star$\or$\star\star$\fi}%
- \footnotetext{#2}}}
-%%%
- \def\fntext[#1]#2{\g@addto@macro\@fnotes{%
- \refstepcounter{fnote}%
- \immediate\write\@auxout{\string\Newlabel{#1}{\thefnote}}
- \def\thefootnote{\thefnote}%
- \global\setcounter{footnote}{\c@fnote}%
- \footnotetext{#2}}}
-%%%
- \def\cortext[#1]#2{\g@addto@macro\@cornotes{%
- \refstepcounter{cnote}%
- \immediate\write\@auxout{\string\Newlabel{#1}{\thecnote}}
- \def\thefootnote{\ifcase\c@cnote\or$\ast$\or
- $\ast\ast$\fi}%
- \footnotetext{#2}}}
-}
-
-\def\textmarker#1#2{\textcolor{#1}{#2}}%*%
-\endinput
-%%
-%% End of file `elsarticle.cls'.
diff --git a/_extensions/quarto-journals/elsevier/elsevier.lua b/_extensions/quarto-journals/elsevier/elsevier.lua
deleted file mode 100644
index b7f2f4e..0000000
--- a/_extensions/quarto-journals/elsevier/elsevier.lua
+++ /dev/null
@@ -1,171 +0,0 @@
--- cite style constants
-local kBibStyleDefault = 'number'
-local kBibStyles = { 'number', 'numbername', 'authoryear' }
-local kBibStyleAuthYr = 'elsarticle-harv'
-local kBibStyleNumber = 'elsarticle-num'
-local kBibStyleNumberName = 'elsarticle-num-names'
-local kBibStyleUnknown = kBibStyleNumberName
-
--- layout and style
-local kFormatting = pandoc.List({ 'preprint', 'review', 'doubleblind' })
-local kModels = pandoc.List({ '1p', '3p', '5p' })
-local kLayouts = pandoc.List({ 'onecolumn', 'twocolumn' })
-
-
-local function setBibStyle(meta, style)
- if meta['biblio-style'] == nil then
- meta['biblio-style'] = style
- quarto.doc.add_format_resource('bib/' .. style .. '.bst')
- end
-end
-
-local function hasClassOption(meta, option)
- if meta['classoption'] == nil then
- return false
- end
-
- for i, v in ipairs(meta['classoption']) do
- if v[1].text == option then
- return true
- end
- end
- return false
-end
-
-local function addClassOption(meta, option)
- if meta['classoption'] == nil then
- meta['classoption'] = pandoc.List({})
- end
-
- if not hasClassOption(meta, option) then
- meta['classoption']:insert({ pandoc.Str(option) })
- end
-end
-
-local function printList(list)
- local result = ''
- local sep = ''
- for i, v in ipairs(list) do
- result = result .. sep .. v
- sep = ', '
- end
- return result
-end
-
-local bibstyle = kBibStyleDefault
-
-return {
- {
- Meta = function(meta)
- -- If citeproc is being used, switch to the proper
- -- CSL file
- if quarto.doc.cite_method() == 'citeproc' and meta['csl'] == nil then
- meta['csl'] = quarto.utils.resolve_path('bib/elsevier-harvard.csl')
- end
-
- if quarto.doc.is_format("pdf") then
-
- -- read the journal settings
- local journal = meta['journal']
- local citestyle = nil
- local formatting = nil
- local model = nil
- local layout = nil
- local name = nil
-
- if journal ~= nil then
- citestyle = journal['cite-style']
- formatting = journal['formatting']
- model = journal['model']
- layout = journal['layout']
- name = journal['name']
- end
-
- -- process the site style
- if citestyle ~= nil then
- citestyle = pandoc.utils.stringify(citestyle)
- else
- citestyle = kBibStyleDefault
- end
-
- -- capture the bibstyle
- bibstyle = citestyle
- if citestyle == 'numbername' then
- setBibStyle(meta, kBibStyleNumberName)
- addClassOption(meta, 'number')
- elseif citestyle == 'authoryear' then
- setBibStyle(meta, kBibStyleAuthYr)
- addClassOption(meta, 'authoryear')
- elseif citestyle == 'number' then
- setBibStyle(meta, kBibStyleNumber)
- addClassOption(meta, 'number')
- elseif citestyle == 'super' then
- addClassOption(meta, 'super')
- setBibStyle(meta, kBibStyleNumber)
- else
- error("Unknown journal cite-style " .. citestyle .. "\nPlease use one of " .. printList(kBibStyles))
- setBibStyle(meta, kBibStyleUnknown)
- end
-
- -- process the layout
- if formatting ~= nil then
- formatting = pandoc.utils.stringify(formatting)
- if kFormatting:includes(formatting) then
- addClassOption(meta, formatting)
- else
- error("Unknown journal formatting " .. formatting .. "\nPlease use one of " .. printList(kFormatting))
- end
- end
-
- -- process the type
- if model ~= nil then
- model = pandoc.utils.stringify(model)
- if kModels:includes(model) then
- addClassOption(meta, model)
- else
- error("Unknown journal model " .. model .. "\nPlease use one of " .. printList(kModels))
- end
- end
-
- -- 5p models should be two column always
- if model == '5p' and layout == nil then
- layout = 'twocolumn'
- end
-
- -- process the type
- if layout ~= nil then
- layout = pandoc.utils.stringify(layout)
- if kLayouts:includes(layout) then
- addClassOption(meta, layout)
- if layout == 'twocolumn' then
- quarto.doc.include_file('in-header', 'partials/_two-column-longtable.tex')
- end
- else
- error("Unknown journal layout " .. layout .. "\nPlease use one of " .. printList(kLayouts))
- end
- end
-
- -- process the name
- if name ~= nil then
- name = pandoc.utils.stringify(name)
- quarto.doc.include_text('in-header', '\\journal{' .. name .. '}')
- end
- end
-
- return meta
- end
- },
- {
- Cite = function(cite)
- if bibstyle == 'number' then
- -- If we are numbered, force citations into normal mode
- -- as the author styles don't make sense
- for i, v in ipairs(cite.citations) do
- v.mode = 'NormalCitation'
- end
- return cite
- end
- end,
-
- }
-}
diff --git a/_extensions/quarto-journals/elsevier/partials/_two-column-longtable.tex b/_extensions/quarto-journals/elsevier/partials/_two-column-longtable.tex
deleted file mode 100644
index 9ba482a..0000000
--- a/_extensions/quarto-journals/elsevier/partials/_two-column-longtable.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-\usepackage{float}
-\makeatletter
-\let\oldlt\longtable
-\let\endoldlt\endlongtable
-\def\longtable{\@ifnextchar[\longtable@i \longtable@ii}
-\def\longtable@i[#1]{\begin{figure}[H]
-\onecolumn
-\begin{minipage}{0.5\textwidth}
-\oldlt[#1]
-}
-\def\longtable@ii{\begin{figure}[H]
-\onecolumn
-\begin{minipage}{0.5\textwidth}
-\oldlt
-}
-\def\endlongtable{\endoldlt
-\end{minipage}
-\twocolumn
-\end{figure}}
-\makeatother
diff --git a/_extensions/quarto-journals/elsevier/partials/before-body.tex b/_extensions/quarto-journals/elsevier/partials/before-body.tex
deleted file mode 100644
index 1154182..0000000
--- a/_extensions/quarto-journals/elsevier/partials/before-body.tex
+++ /dev/null
@@ -1,41 +0,0 @@
-
-\begin{frontmatter}
-\title{$title$$if(subtitle)$ \\\large{$subtitle$} $endif$}
-$for(by-author)$\author[$for(by-author.affiliations)$$it.number$$sep$,$endfor$]{$by-author.name.literal$%
-$if(by-author.attributes.corresponding)$\corref{cor1}$endif$%
-$if(by-author.note.text)$\fnref{fn$by-author.note.number$}$endif$}
-$if(by-author.email)$ \ead{$by-author.email$} $endif$
-$endfor$
-$for(by-affiliation)$
-\affiliation[$it.number$]{organization={$it.name$$if(it.department)$, $it.department$$endif$},$if(it.address)$addressline={$it.address$}$endif$$if(it.city)$$if(it.address)$,$endif$city={$it.city$}$endif$$if(it.country)$$if(it.city)$,$elseif(it.address)$,$endif$country={$it.country$},countrysep={,}$endif$$if(it.postal-code)$$if(it.country)$,$elseif(it.city)$,$elseif(it.address)$,$endif$postcode={$it.postal-code$}$endif$,postcodesep={}}
-$endfor$
-
-\cortext[cor1]{Corresponding author}
-$for(by-author)$
-$if(by-author.note.text)$\fntext[fn$by-author.note.number$]{$by-author.note.text$}$endif$
-$endfor$
-
-$if(abstract)$
-\begin{abstract}
-$abstract$
-\end{abstract}
-$endif$
-
-$if(journal.graphical-abstract)$\begin{graphicalabstract}
-$journal.graphical-abstract$
-\end{graphicalabstract}
-$endif$
-
-$if(journal.highlights)$\begin{highlights}
-$for(journal.highlights)$\item $it$$endfor$
-\end{highlights}
-$endif$
-
-$if(keywords)$
-\begin{keyword}
- $for(keywords/allbutlast)$$keywords$ \sep $endfor$
- $for(keywords/last)$$keywords$$endfor$
-\end{keyword}
-$endif$
-\end{frontmatter}
-
\ No newline at end of file
diff --git a/_extensions/quarto-journals/elsevier/partials/title.tex b/_extensions/quarto-journals/elsevier/partials/title.tex
deleted file mode 100644
index c6bd0cb..0000000
--- a/_extensions/quarto-journals/elsevier/partials/title.tex
+++ /dev/null
@@ -1 +0,0 @@
-\setlength{\parindent}{6pt}
\ No newline at end of file
diff --git a/_extensions/quarto-journals/elsevier/styles/elsevier.scss b/_extensions/quarto-journals/elsevier/styles/elsevier.scss
deleted file mode 100644
index d002b36..0000000
--- a/_extensions/quarto-journals/elsevier/styles/elsevier.scss
+++ /dev/null
@@ -1 +0,0 @@
-/*-- scss:defaults --*/
diff --git a/_quarto-journal.yml b/_quarto-journal.yml
deleted file mode 100644
index 095f515..0000000
--- a/_quarto-journal.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-project:
- type: default
- render:
- - manuscript/article.qmd
-
-format:
- html:
- toc: true
- code-fold: true
- code-tools: true
- embed-resources: true
- fig-format: svg
- link-external-icon: true
- number-sections: true
- reference-links: true
- # FIXME: does not do intext citations correctly?
- # elsevier-html:
- # toc: true
- # code-fold: true
- # code-tools: true
- # embed-resources: true
- # fig-format: svg
- # link-external-icon: true
- # number-sections: true
- # reference-links: true
- docx:
- filters:
- - pandoc-to-zotero-live
- - docx-landscape
- echo: false
- number-sections: true
- reference-doc: data/supplementary/justified.docx
- elsevier-pdf:
- echo: false
- number-sections: true
- # see https://github.com/quarto-journals/elsevier
-
-journal:
- name: World Development
- model: 3p
- formatting: review
- cite-style: authoryear
- highlights:
- - Inequality is bad
- - Some policies help against inequality
- - External validity and internal validity tend to have reciprocal relationship to each other
-
-# execute:
-# freeze: true
diff --git a/_quarto-workingpaper.yml b/_quarto-workingpaper.yml
deleted file mode 100644
index 74e5a75..0000000
--- a/_quarto-workingpaper.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-project:
- render:
- - manuscript/presentation_summary.md
- - manuscript/notes.qmd
- - manuscript/meeting_eoy.qmd
- - manuscript/scoping_review.qmd
-
-toc: true
-format:
- html:
- code-fold: true
- code-tools: true
- embed-resources: true
- fig-format: svg
- link-external-icon: true
- number-sections: false
- reference-links: true
- theme: darkly
- docx:
- echo: false
- number-sections: true
- reference-doc: data/supplementary/justified.docx
- filters:
- - pandoc-to-zotero-live
- - docx-landscape
- pdf:
- echo: false
- number-sections: true
- pdf-engine: tectonic
diff --git a/_quarto.yml b/_quarto.yml
index 38f67c1..e33fec8 100644
--- a/_quarto.yml
+++ b/_quarto.yml
@@ -1,11 +1,35 @@
project:
- output-dir: output
- execute-dir: project
+ title: "Key terms and definitions"
+ output-dir: 04-outputs
+ render:
+ - presentation_summary.md
+ - notes.qmd
+ - meeting_eoy.qmd
+ - scoping_review.qmd
-profile:
- default: journal
+toc: true
+format:
+ html:
+ code-fold: true
+ code-tools: true
+ embed-resources: true
+ fig-format: svg
+ link-external-icon: true
+ number-sections: false
+ reference-links: true
+ theme: darkly
+ docx:
+ echo: false
+ number-sections: true
+ reference-doc: 02-data/supplementary/justified.docx
+ filters:
+ - pandoc-to-zotero-live
+ pdf:
+ echo: false
+ number-sections: true
+ pdf-engine: tectonic
-bibliography: data/references/zotero-library.bib
+bibliography: 02-data/intermediate/zotero-library.bib
csl: /home/marty/documents/library/utilities/styles/APA-7.csl
zoterolive:
library: wow-inequalities
diff --git a/data/processed/prisma.mmd b/data/processed/prisma.mmd
deleted file mode 100644
index 5f6c88c..0000000
--- a/data/processed/prisma.mmd
+++ /dev/null
@@ -1,15 +0,0 @@
-
- flowchart TD;
- search_db["Records identified through database searching (n=1749)"] --> starting_sample;
- search_prev["Records identified through other sources (n=2240)"] --> starting_sample["Starting sample (n=3989)"];
-
- starting_sample -- "Duplicate removal (267 removed) "--> dedup["Records after duplicates removed (n=3723)"];
-
- dedup -- "Title screening (1779 excluded)" --> title_screened["Records after titles screened (n=1944)"];
-
- title_screened -- "Abstract screening (1506 excluded)"--> abstract_screened["Records after abstracts screened (n=438)"];
-
- abstract_screened -- " Language screening (2 excluded) "--> language_screened["Records after language screened (n=436)"];
-
- language_screened -- " Full-text screening (383 excluded) "--> full-text_screened["Full-text articles assessed for eligibility (n=52)"];
-
diff --git a/final_document/deliverables/2024-04-02/Inequalities-WoW-Review_Oehme.docx b/final_document/deliverables/2024-04-02/Inequalities-WoW-Review_Oehme.docx
deleted file mode 100644
index 80f7dc2..0000000
Binary files a/final_document/deliverables/2024-04-02/Inequalities-WoW-Review_Oehme.docx and /dev/null differ
diff --git a/final_document/deliverables/2024-04-02/Observations-Extracted_raw.csv b/final_document/deliverables/2024-04-02/Observations-Extracted_raw.csv
deleted file mode 100644
index 3275ad5..0000000
--- a/final_document/deliverables/2024-04-02/Observations-Extracted_raw.csv
+++ /dev/null
@@ -1,72 +0,0 @@
-citation,author,year,title,publisher,uri,pubtype,discipline,country,period,maxlength,targeting,group,data,design,method,sample,unit,representativeness,causal,theory,limitations,notes,intervention,institutional,structural,agency,inequality,type,indicator,measures,findings,channels,direction,significance,external_validity,internal_validity
-Adam2018,"Adam, C., Bevan, D., & Gollin, D.",2018,"Rural-urban linkages, public investment and transport costs: The case of tanzania",World Development,https://doi.org/10.1016/j.worlddev.2016.08.013,article,development,Tanzania,2001,,explicit,rural workers,"national Tanzania Social Accounting Matrix (SAM, 2001); national administrative survey Integrated Labor Force Survey (2001), Tanzania Agricultural Sample Census (2003)",simulation,general equilibrium model,7.0,household,"subnational, rural",1.0,transport cost burden approach,can not account for population change (e.g. pop growth); causality based on model only,there can be spatial differences to how connected regions within a country are to markets purely due to transport costs,infrastructure,0,1,0,spatial; income,1.0,0.0,real consumption wage differences,"results depend on financing scheme, each financing scheme entails some households being worse off; rural households worse off when infrastructure is deficit-financed or paid through tariff revenue; rural households benefit most when financed through consumption taxes or by external aid",movement of rural workers out of quasi-subsistence agriculture to other locations and sectors,-1.0,2.0,3.0,0.0
-Rosen2014,"Rosen, M. I., Ablondi, K., Black, A. C., Mueller, L., Serowik, K. L., Martino, S., Mobo, B. H., & Rosenheck, R. A.",2014,Work outcomes after benefits counseling among veterans applying for service connection for a psychiatric condition,Psychiatric Services,https://doi.org/10.1176/appi.ps.201300478,article,health,United States,2008-2011,6.0,explicit,disabled,"baseline, 3 follow-up surveys; timeline follow-back calendar",experimental,RCT,84.0,individual,local,1.0,,can not locate active ingredient,,counseling (benefits counseling),0,0,1,disability; age,1.0,0.0,hours worked (rtw),counseling had significant increas on more waged days worked; on average 3 additional days worked in 28 days preceding measurement,"not clear, neither belief about work, benefits, nor mental health/substance abuse service use increased significantly",1.0,2.0,2.0,5.0
-Xu2021,"Xu, C., Han, M., Dossou, T. A. M., & Bekun, F. V.",2021,"Trade openness, FDI, and income inequality: Evidence from Sub-Saharan Africa",African Development Review,https://doi.org/10.1111/1467-8268.12511,article,development,Angola; Benin; Botswana; Burkina Faso; Burundi; Cabo‐Verde; Cameroon; Central African Republic; Chad; Comoros; Congo; D.R. of the Congo; Ethiopia; Gabon; Ghana; Guinea; Guinea Bissau; Côte d'Ivoire; Kenya; Lesotho; Liberia; Madagascar; Malawi; Mali; Mauritania; Mozambique; Namibia; Niger; Nigeria; Rwanda; Senegal; Seychelles; Sierra Leone; South Africa; Tanzania; Togo; Uganda; Zambia,2000-2015,,implicit,workers,UNDP income equality; UN Conference on Trade and Veleopment FDI; World Bank WDI; World Bank World Governance Indicators,quasi-experimental,generalized method of moments,38.0,country,"national, census",0.0,,contains a variety of institutional-structural context within region,,trade liberalization (FDI),0,1,0,income,0.0,1.0,Gini coeff,increased income equality through FDI (p < .1),primarily goes to agriculture which can employ low-skilled labour,-1.0,1.0,5.0,4.0
-Xu2021,"Xu, C., Han, M., Dossou, T. A. M., & Bekun, F. V.",2021,"Trade openness, FDI, and income inequality: Evidence from Sub-Saharan Africa",African Development Review,https://doi.org/10.1111/1467-8268.12511,article,development,Angola; Benin; Botswana; Burkina Faso; Burundi; Cabo‐Verde; Cameroon; Central African Republic; Chad; Comoros; Congo; D.R. of the Congo; Ethiopia; Gabon; Ghana; Guinea; Guinea Bissau; Côte d'Ivoire; Kenya; Lesotho; Liberia; Madagascar; Malawi; Mali; Mauritania; Mozambique; Namibia; Niger; Nigeria; Rwanda; Senegal; Seychelles; Sierra Leone; South Africa; Tanzania; Togo; Uganda; Zambia,2000-2015,,implicit,workers,UNDP income equality; UN Conference on Trade and Veleopment FDI; World Bank WDI; World Bank World Governance Indicators,quasi-experimental,generalized method of moments,38.0,country,"national, census",0.0,,contains a variety of institutional-structural context within region,,trade liberalization,0,1,0,income,0.0,1.0,Gini coeff,"significantly decreased income equality through trade liberalization; equally for political stability, corruption, rule of law increase","higher import than export, creating jobs in other countries",1.0,2.0,5.0,4.0
-Xu2021,"Xu, C., Han, M., Dossou, T. A. M., & Bekun, F. V.",2021,"Trade openness, FDI, and income inequality: Evidence from Sub-Saharan Africa",African Development Review,https://doi.org/10.1111/1467-8268.12511,article,development,Angola; Benin; Botswana; Burkina Faso; Burundi; Cabo‐Verde; Cameroon; Central African Republic; Chad; Comoros; Congo; D.R. of the Congo; Ethiopia; Gabon; Ghana; Guinea; Guinea Bissau; Côte d'Ivoire; Kenya; Lesotho; Liberia; Madagascar; Malawi; Mali; Mauritania; Mozambique; Namibia; Niger; Nigeria; Rwanda; Senegal; Seychelles; Sierra Leone; South Africa; Tanzania; Togo; Uganda; Zambia,2000-2015,,implicit,workers,UNDP income equality; UN Conference on Trade and Veleopment FDI; World Bank WDI; World Bank World Governance Indicators,quasi-experimental,generalized method of moments,38.0,country,"national, census",0.0,,contains a variety of institutional-structural context within region,,education,1,1,0,income,0.0,1.0,Gini coeff,education significantly decreases income equality in the region,potentially inequal access to education through exclusion (e.g. spatial/gender/financial); differentiated quality of education,1.0,2.0,5.0,4.0
-Wong2019,"Wong, S. A.",2019,Minimum wage impacts on wages and hours worked of low-income workers in Ecuador,World Development,https://doi.org/10.1016/j.worlddev.2018.12.004,article,development,Ecuador,2011-2014,12.0,implicit,wage workers,national employment survey (ENEMDU),quasi-experimental,difference-in-difference approach,1624422.0,individual,"national, census",1.0,,some small sort-dependency in panel data; can only account for effects in period of economic growth,,minimum wage,1,1,0,income; gender,0.0,1.0,Gini coeff,"decreased income inequality through significant increase on income of low-wage earners; larger effect for agricultural workers, smaller for women; potentially negative impact on income of high-earners",income-compression effect,-1.0,2.0,5.0,3.0
-Wong2019,"Wong, S. A.",2019,Minimum wage impacts on wages and hours worked of low-income workers in Ecuador,World Development,https://doi.org/10.1016/j.worlddev.2018.12.004,article,development,Ecuador,2011-2014,12.0,implicit,wage workers,national employment survey (ENEMDU),quasi-experimental,difference-in-difference approach,1624422.0,individual,"national, census",1.0,,some small sort-dependency in panel data; can only account for effects in period of economic growth,,minimum wage,1,1,0,income; gender,0.0,0.0,hours worked,significant effect on hours worked; no significant spillover effect on workers in control group; significant negative impact on female hours worked,possibly decreased intensive margin for female workers; affecting lower income increase of women,1.0,0.0,5.0,3.0
-Whitworth2021,"Whitworth, A.",2021,Spatial creaming and parking?: The case of the UK work programme,Applied Spatial Analysis and Policy,https://doi.org/10.1007/s12061-020-09349-0,article,economics,United Kingdom,2011-2017,72.0,implicit,unemployed,Department for Work and Pensions Work Programme statistics,observational,three-stage linear model,1494.0,individual,national,0.0,social creaming & parking (used spatially),no causal inferrence attempted,,work programme,0,1,0,spatial,1.0,0.0,employment,already deprived areas experience further deprivation,providers de-prioritize job-weak areas (spatial parking),-1.0,2.0,4.0,0.0
-Suh2017,"Suh, M.-G.",2017,Determinants of female labor force participation in south korea: Tracing out the U-shaped curve by economic growth,Social Indicators Research,https://doi.org/10.1007/s11205-016-1245-1,article,sociology,"Korea, Rep.",1980-2014,,implicit,married women,Statistical Database in Statistical Information Service Korea 2015,quasi-experimental,OLS regression; log-linear analysis; contingency analysis with cross-tab statistics; Gini coeff as income inequality indicator,35.0,case,"national, census",0.0,,,,education,0,1,0,income; generational; gender,1.0,1.0,employment,education significant increase in married women's employment; female labour force participation negative correlation with income inequality; female education also positively affects daughters' education level,"education being necessary not sufficient condition, also influenced by family size and structure",1.0,2.0,5.0,2.0
-Stock2021,"Stock, R. (2021).",2021,Bright as night: Illuminating the antinomies of `gender positive’ solar development,World Development,https://doi.org/10.1016/j.worlddev.2020.105196,article,development,India,2018,1.0,implicit,women,"baseline survey, interviews",observational,quantitative survey and in-depth interviews; discourse analysis,200.0,household,"subnational, rural",0.0,authoritative knowledge power framework (Laclau&Mouffe),no causal research,,infrastructure,0,1,0,gender; income; spatial,1.0,0.0,employment,insignificant increased employment probability; advantaged women predominantly belong to dominant castes,project capture by village female elites; women of disadvantaged castes further excluded from training and work opportunities,1.0,0.0,3.0,0.0
-Standing2015,"Standing, G.",2015,Why Basic Income’s Emancipatory Value Exceeds Its Monetary Value,Basic Income Studies,https://doi.org/10.1515/bis-2015-0021,article,economics,India,2010-2013,18.0,implicit,low-income households,baseline & 3 follow-up surveys and censuses; structured interviews,experimental,"rural RCT, randomization at village level; 18/12 months of ubi provision with follow up surveys and interviews",1665.0,household,"subnational, rural",1.0,"Lauderdale paradox (money, if scarce becomes even more valuable resource)",,"ubi paid in addition to any other state transfers; included in sample for effects on work choice (forced to work for debtors, free to pursue own-work)",ubi,1,0,1,income; ethnicity,0.0,0.0,debt,ubi significantly decreases debts; results go beyond direct monetary value; households did not have to work for lenders/to pay off debt,directly enables debt reduction; reduces debt-dependency risks; avoids taking on new debt; enables choosing less exploitative forms of borrowing,-1.0,2.0,3.0,5.0
-Standing2015,"Standing, G.",2015,Why Basic Income’s Emancipatory Value Exceeds Its Monetary Value,Basic Income Studies,https://doi.org/10.1515/bis-2015-0021,article,economics,India,2010-2013,18.0,implicit,low-income households,baseline & 3 follow-up surveys and censuses; structured interviews,experimental,"rural RCT, randomization at village level; 18/12 months of ubi provision with follow up surveys and interviews",1665.0,household,"subnational, rural",1.0,"Lauderdale paradox (money, if scarce becomes even more valuable resource)",,"ubi paid in addition to any other state transfers; included in sample for effects on work choice (forced to work for debtors, free to pursue own-work)",ubi,1,0,1,income; ethnicity,0.0,0.0,saving,ubi significantly increases savings; allowed increasing economic security/empowerment of households,"shift to institutionalized saving strengthening shock resilience; schooling of the household head, landholding, caste and household size also affect savings",1.0,2.0,3.0,5.0
-SilveiraNeto2011,"Silveira Neto, R. D. M., & Azzoni, C. R.",2011,Non-spatial government policies and regional income inequality in brazil,Regional Studies,https://doi.org/10.1080/00343400903241485,article,economics,Brazil,1995-2005,,implicit,poor,national administrative survey 'Pesquisa Nacional por Amostra de Domicılio' (PNAD),quasi-experimental,"OLS, beta convergence test",27.0,region,"national, census",1.0,,limited underlying data only allows estimation of Bolsa impact at endline; minimum wage had to be estimated from minimum-wage equal job incomes,,minimum wage; direct transfers (cash),1,0,1,spatial; income,1.0,1.0,Gini coeff,"incomes have converged between regions after introduction of cash transfer and minimum wage with both accounting for 26.2% of effect; minimum wage contributed 16.6% to overall Gini reduction, transfers 9.6%",quasi-regional effects through predominant transfers to poorer regions,-1.0,2.0,5.0,2.0
-Shepherd-Banigan2021,"Shepherd-Banigan, M., Pogoda, T. K., McKenna, K., Sperber, N., & Van Houtven, C. H.",2021,Experiences of VA vocational and education training and assistance services: Facilitators and barriers reported by veterans with disabilities,In Psychiatric Rehabilitation Journal,https://doi.org/10.1037/prj0000437,article,psychology,United States,2018,,explicit,disabled,interviews,qualitative,semi-structured interviews,26.0,individual,local,0.0,,sample restricted to veterans with caregiver; data provide little evidence for supported employment efficacy,,training,0,0,1,age; disability,1.0,1.0,employment (rtw),vocational and educational services help strengthen individual agency and motivation; potential disability payment loss may impede skills development efforts,"primary barriers health problems, programmes not accomodating disabled veteran student needs; primary facilitator financial assistance for education and individual motivation",1.0,,2.0,0.0
-Rendall2013,"Rendall, M.",2013,Structural change in developing countries: Has it decreased gender inequality?,World Development,https://doi.org/10.1016/j.worlddev.2012.10.005,article,development,Brazil; Mexico; India; Thailand,1987-2008,,implicit,women,WB Household Survey; IPUMS USA/International/CPS,quasi-experimental,OLS; Mincer wage regression; Wellington wage gap decomposition; comparative average factor deviations,200000.0,individual,"national, census",,capital displacing production brawn (Galor & Weil 1996),,,trade liberalization (structural changes),0,1,0,gender; income,1.0,1.0,female employment shares,"all countries decreased brawn requirements (smallest change in India, 0.2ppts; largest in Thailand 15ppts); decreased labour market gender inequality in Brazil; largest steady LM inequality in India; mixed results for Mexico and Thailand",reduced requirement for physical labour (switching 'brawn' to 'brain'); switching to e.g. service-oriented labour,1.0,2.0,5.0,2.0
-Rendall2013,"Rendall, M.",2013,Structural change in developing countries: Has it decreased gender inequality?,World Development,https://doi.org/10.1016/j.worlddev.2012.10.005,article,development,Brazil; Mexico; India; Thailand,1987-2008,,implicit,women,WB Household Survey; IPUMS USA/International/CPS,quasi-experimental,OLS; Mincer wage regression; Wellington wage gap decomposition; comparative average factor deviations,200000.0,individual,"national, census",,capital displacing production brawn (Galor & Weil 1996),,,trade liberalization (structural changes),0,1,0,gender; income,1.0,1.0,female wage shares,"Brazil closed wage gap the fastest, though widened more recently; Thailand/India mixed results","reduced returns on brain intensive occupations in Brazil; different LM skill structure in Thailand/India, context dependency of structural changes",1.0,1.0,5.0,2.0
-Poppen2017,"Poppen, M., Lindstrom, L., Unruh, D., Khurana, A., & Bullis, M.",2017,Preparing youth with disabilities for employment: An analysis of vocational rehabilitation case services data,Journal of Vocational Rehabilitation,https://doi.org/10.3233/JVR-160857,article,health,United States,2003-2013,,explicit,disabled young adults,state administrative Oregon Rehabilitation Case Automation system (ORCA),quasi-experimental,multivariate logistic regression; OLS,4443.0,individual,subnational,0.0,,data gathered for service delivery not research may provide lower reliability; no measurement for service quality; no nationally representative sample lowers generalizability,,training (vocational rehabilitation),0,1,1,disability; gender; age,1.0,0.0,employment,"significantly decreased employment probability for women, having mental illness or traumatic brain injury as primary disability, multiple disabilities, interpersonal/self-care impediment, receiving social security benefits; youth-transition programme, more VR services significantly increased",,1.0,2.0,3.0,2.0
-Pi2016,"Pi, J., & Zhang, P.",2016,Hukou system reforms and skilled-unskilled wage inequality in China,China Economic Review,https://doi.org/10.1016/j.chieco.2016.08.009,article,economics,China,1988-2013,12.0,implicit,urban workers,national administrative Chinese General Social Survey (CGSS) 2010-13,simulation,general equilibrium model,,household,"subnational, urban",0.0,,generalizability restricted due to specific institutional contexts of Chinese hukou systems; no disaggregation to private/public sector; job search not part of model,,social security; education (access),1,1,0,income; migration; ethnicity,1.0,1.0,decile ratios (90th to 10th),increased access to social security for urban migrants decreases wage inequality between skilled-unskilled urban workers if skilled sector is more capital intensive than unskilled sector,,-1.0,,3.0,0.0
-Militaru2019,"Militaru, E., Popescu, M. E., Cristescu, A., & Vasilescu, M. D.",2019,Assessing minimum wage policy implications upon income inequalities: The case of Romania,Sustainability,https://doi.org/10.3390/su11092542,article,economics,Romania,2013-2014,12.0,explicit,low-income workers,EU Survey on Income and Living Conditions (EU-SILC),simulation,microsimulation (EUROMOD); counterfactual analysis,7500.0,household,national,0.0,,"dependent on simulation order; can not account for tax evasion, behavioural changes; over-representation of employees in sample; remaining unobservables on inequality outcomes","does not see minimum wage increase as most efficient income inequality reduction policy per se, but sees efficiency possibly enhanced by accompanying skills development programs",minimum wage,1,1,0,income; gender,0.0,1.0,Gini coeff,small decrease in wage inequality; larger impact for women,"concentration of workers at minimum wage level matters, women make up larger part; increase in number of wage earners in total number of employees",-1.0,,4.0,0.0
-Liyanaarachchi2016,"Liyanaarachchi, T. S., Naranpanawa, A., & Bandara, J. S.",2016,Impact of trade liberalisation on labour market and poverty in Sri Lanka. An integrated macro-micro modelling approach,Economic Modelling,https://doi.org/10.1016/j.econmod.2016.07.008,article,economy,Sri Lanka,2009-2010,12.0,implicit,workers,national administrative Household Income and Expenditure Survey (HIES),simulation,macro-micro computable general equilibrium model,19958.0,household,national,1.0,,static model not able to account for transition paths; no disaggregated sectoral input-output data available,,trade liberalization,1,1,0,income,0.0,1.0,Atkinson index; S-Gini index; Atkinson-Gini index; Entropy index,"reduced absolute poverty for tariff elimination only, mixed results but reduction for tariff elim and fiscal policy changes together; income inequality increases in long-run in all sectors","increased wage differences (esp for manager, professionals, technicians and urban workers); low-income households more dependent on private/gov transfers which do not increase with trade liberalization",1.0,2.0,4.0,0.0
-Li2022,"Li, Y., & Sunder, N.",2022,Land inequality and workfare policies,Journal of development studies,https://doi.org/10.1080/00220388.2021.2008362,article,development,India,2005-2006,12.0,implicit,potential labour force,"Indian Agricultural Census (2000, 2005); national administrative panel data MGNREGA public data portal",quasi-experimental,"OLS, instrumental variable approach",414.0,district,"national, census",1.0,political capture theory,sample attrition in matching NREGA districts to GINI data; assumption of no institutional/cultural unobservables,,work programme,0,1,0,income; spatial,0.0,0.0,employment (LFP rate per land ownership through Gini),"work programme generally increases LFP; but internal heterogeneity, difference in job provision not due to public job demand changes, caste, religion; previous capital inequality (land ownership) strongly affects programme efficacy","landlords oppose implementation due to general wage increases following, lobby against workfare introduction; decreased bargaining power of labour in more inequal districts",1.0,2.0,5.0,4.0
-Kuriyama2021,"Kuriyama, A., & Abe, N.",2021,Decarbonisation of the power sector to engender a 'Just transition’ in Japan: Quantifying local employment impacts,Renewable & Sustainable Energy Reviews,https://doi.org/10.1016/j.rser.2020.110610,article,development,Japan,2016,,,rural workers,Historical Data of Power Supply and Demand Record Data,simulation,multi-step projection modelling; use Gini coefficient,10.0,region,national,0.0,,has to assume amount of generated power as stable square function increase 2016-2050; employment numbers based on initial estimated model data only,"highest impact in construction and manufacturing sector, long-term large impact in power sector, stable impacts throughout in service sectors and others",infrastructure,0,1,0,spatial,1.0,0.0,employment,power sector decarbonisation positively impacts rural workers through increased employment probability,attachment of larger-scale renewable energy to rural sectors increases employment scarcity,1.0,2.0,4.0,0.0
-Khan2021,"Khan, M. A., Walmsley, T., & Mukhopadhyay, K.",2021,Trade liberalization and income inequality: The case for Pakistan,Journal of Asian Economics,https://doi.org/10.1016/j.asieco.2021.101310,article,economics,Pakistan,2010-2011,,implicit,workers,GTAP database; SAM Pakistan 2010-2011 (IFPRI),simulation,computable general equilibrium model; MyGTAP model,30.0,region,national,1.0,,generalizability might be reduced due to production factor reallocations specific to the rural poor context of Pakistan,,trade liberalization,1,1,0,income; spatial,0.0,1.0,Gini coeff,"mixed results for free-trade agreements (some Large TA negative correlation w Gini, some regional/bilateral also); impact of trade liberalization depends on micro-economic factors; greater mobility dissipates short-term effects; long-term some increase in income equality","increases in income of poor rural agricultural farm households dependent on grain (with largest export grain rising under most FTA, livestock falling); equity increases through increased wages of farm workers, when this did not happen generally equity decrease; wage compression effects",0.0,0.0,4.0,0.0
-Hojman2019,"Hojman, A., & López Bóo, F.",2019,Cost-Effective Public Daycare in a Low-Income Economy Benefits Children and Mothers,Inter-American Development Bank,https://doi.org/10.18235/0001849,working paper,development,Nicaragua,2013-2015,24.0,implicit,poor mothers,baseline survey and 12-month follow-up survey,experimental,RCT; instrumental variable; marginal treatment effects,1442.0,individual,"subnational, urban",1.0,,effect on employment is insignificant with IV on randomization alone; relatively small overall sample,,subsidy (childcare),0,1,1,gender; generational; income,1.0,0.0,employment,free childcare significantly increases work participation of mothers (14ppts); increases human capital of children,subsidy removes associated childcare costs (fewer childcare hours),1.0,2.0,3.0,5.0
-Hardoy2015,"Hardoy, I., & Schøne, P.",2015,Enticing even higher female labor supply: The impact of cheaper day care,Review of Economics of the Household,https://doi.org/10.1007/s11150-013-9215-8,article,economics,Norway,1995-2006,48.0,implicit,mothers,Norwegian Labor and Welfare Service (NAV); Register for Employers and Employees,quasi-experimental,triple-difference approach,200530.0,individual,national,1.0,,simultaneous capacity extension may bias results,,subsidy (childcare),1,1,0,gender; education; migration,1.0,0.0,employment; hours worked,"child care price reduction increased female labour supply (about 5pct); no impact on mothers already participating in labour market; stronger impact on low-education mothers, low-income households; no significant impact on immigrant mothers",day care expenditure larger part of low-income/-education households creating larger impact; may also be due to average lower employment rates for those households,1.0,2.0,4.0,3.0
-Go2010,"Go, D. S., Kearney, M., Korman, V., Robinson, S., & Thierfelder, K.",2010,Wage subsidy and labour market flexibility in south africa,Journal of development studies,https://doi.org/10.1080/00220380903428456,article,development,South Africa,2003,,implicit,low-/semi-skilled workers,GCE model based on 2003 LM data; Pauw & Edwards (2006),simulation,"micro-simulation; multi-sector, multi-labour computable general equilibrium model",43.0,sector,national,0.0,,potentially reduced generalizability due to simulation's assumptions,,subsidy (wage),0,1,0,income,0.0,0.0,Foster-Greer-Thorbecke (FGT) poverty headcount ratio,"overall decrease in FGT ratio, about 1.6% of households moving out of poverty; similar changes in urban/rural spaces; greater gains in poorer households",income gains for poorer households,-1.0,2.0,4.0,0.0
-Go2010,"Go, D. S., Kearney, M., Korman, V., Robinson, S., & Thierfelder, K.",2010,Wage subsidy and labour market flexibility in south africa,Journal of development studies,https://doi.org/10.1080/00220380903428456,article,development,South Africa,2003,,implicit,low-/semi-skilled workers,GCE model based on 2003 LM data; Pauw & Edwards (2006),simulation,"micro-simulation; multi-sector, multi-labour computable general equilibrium model",43.0,sector,national,0.0,,potentially reduced generalizability due to simulation's assumptions,,subsidy (wage),0,1,0,income,0.0,0.0,Gini coeff,"Overall reduction in income inequality (0.5 ppt), not significant effects",income redistribution; increased formal employment for low-/medium-skill workers,-1.0,0.0,4.0,0.0
-Gilbert2001,"Gilbert, A., Phimister, E., & Theodossiou, I.",2001,The potential impact of the minimum wage in rural areas,Regional Studies,https://doi.org/10.1080/00343400120084759,article,economic,United Kingdom,1991-1998,84.0,implicit,rural workers,national administrative panel survey British Household Panel Survey (BHPS),observational,observational methods with counterfactual approach,5500.0,household,"subnational, rural",1.0,,has to assume no effects on employment,,minimum wage,1,0,0,spatial; income,0.0,1.0,Gini coeff,overall insignificant decrease of income inequality; policy will have spatial dimension with rural households more affected; larger positive impact for remote rural households,rural component depends on proximity to urban areas through having access to urban markets,-1.0,1.0,3.0,0.0
-Gates2000,"Gates, L. B.",2000,Workplace Accommodation as a Social Process,Journal of Occupational Rehabilitation,https://doi.org/10.1023/A:1009445929841,article,sociology,United States,2000,12.0,explicit,mentally ill workers,"survey, protocol",qualitative,action protocol development,12.0,individual,local,0.0,,,,counseling (workplace accommodation),0,1,1,disability,1.0,0.0,employment (rtw),successful accommodation requires social component; relationship largest barrier; agency of returnee must be strengthened,unsuccessful accommodations rely on the functional aspect; supervisors play primary role in success of accommodation process,1.0,,2.0,0.0
-Field2019,"Field, E., Pande, R., Rigol, N., Schaner, S., & Moore, C. T.",2019,On Her Own Account: How Strengthening Women’s Financial Control Affects Labor Supply and Gender Norms,National Bureau of Economic Research,https://doi.org/10.3386/w26294,working paper,development,India,2013-2017,36.0,explicit,women workers,"baseline, 2 follow-up surveys; MGNREGS Program Management information system (MIS)",experimental,"RCT; individual account (partial treatment), account + training (full treatment)",5851.0,household,"subnational, rural",1.0,financial empowerment as normative tool,possibility of upward bias due to attenuation over time,long-run effects for constrained women working driven by private sector,training (financial),0,0,1,gender; spatial,1.0,0.0,employment; hours worked,short-term deposits into women's own accounts and training increased labour supply; long-term increased acceptance of female work and female hours worked,increased bargaining power through greater control of income,1.0,2.0,3.0,5.0
-Emigh2018,"Emigh, R. J., Feliciano, C., O’Malley, C., & Cook-Martin, D.",2018,The effect of state transfers on poverty in post-socialist eastern europe,Social Indicators Research,https://doi.org/10.1007/s11205-017-1660-y,article,economics,Hungary; Bulgaria; Romania,1999-2002,24.0,implicit,poor people,panel data,quasi-experimental,two-wave panel analysis; OLS; random effects negative binomial model,7949.0,individual,national,0.0,institutionalist perspective; underclass perspective; neoclassical perspective,does not have long-term panel data to fully analyse underclass/neoclassical perspectives,"increased probability for poverty of low-education, large, Roma households",direct transfers (cash),0,1,1,income; ethnicity; gender,0.0,0.0,poverty,"level of payments may have been too small to eliminate long-term adverse effects of market transition; in each country case state transfers to individuals reduced their poverty and were at least short-term beneficial; poverty most feminized in Hungary, least feminized in Bulgaria",poverty may have feminized as market transitions progressed; larger positive transfer effects for low-education households,-1.0,2.0,4.0,2.0
-Dustmann2012,"Dustmann, C., & Schönberg, U.",2012,Expansions in Maternity Leave Coverage and Children’s Long-Term Outcomes,Economic journal: applied economics,https://doi.org/10.1257/app.4.3.190,article,economics,Germany,1979-1992,40.0,explicit,working mothers,national administrative Social Security Records (1975-2008),quasi-experimental,difference-in-difference analysis,13000.0,individual,"national, census",0.0,,sample restricted to mothers who go on maternity leave; restricted control group identification,no sign. impact on child outcomes; possible negative effect for long-term leave due to child requiring external stimuli and lowered mother's income,paid leave (6 months childcare),1,1,0,gender,1.0,0.0,income,sign. positive effects among all wage segments for mothers cumulative income 40 months after childbirth,provision of job protection and short-term monetary benefits,1.0,2.0,5.0,3.0
-Dustmann2012,"Dustmann, C., & Schönberg, U.",2012,Expansions in Maternity Leave Coverage and Children’s Long-Term Outcomes,Economic journal: applied economics,https://doi.org/10.1257/app.4.3.190,article,economics,Germany,1979-1992,40.0,explicit,working mothers,national administrative Social Security Records (1975-2008),quasi-experimental,difference-in-difference analysis,13000.0,individual,"national, census",0.0,,sample restricted to mothers who go on maternity leave; restricted control group identification,no sign. impact on child outcomes; possible negative effect for long-term leave due to child requiring external stimuli and lowered mother's income,paid leave (36 months childcare),1,1,0,gender,1.0,0.0,income,marginally sign. negative effect for low-wage mothers after 10month paid leave; significant negative effects among for all mothers cumulative income for 36 month paid leave,"long-term extension is unpaid leave, only providing job protection",-1.0,2.0,5.0,3.0
-Dustmann2012,"Dustmann, C., & Schönberg, U.",2012,Expansions in Maternity Leave Coverage and Children’s Long-Term Outcomes,Economic journal: applied economics,https://doi.org/10.1257/app.4.3.190,article,economics,Germany,1979-1992,40.0,explicit,working mothers,national administrative Social Security Records (1975-2008),quasi-experimental,difference-in-difference analysis,13000.0,individual,"national, census",0.0,,sample restricted to mothers who go on maternity leave; restricted control group identification,no sign. impact on child outcomes; possible negative effect for long-term leave due to child requiring external stimuli and lowered mother's income,paid leave (childcare),1,1,0,gender,1.0,1.0,employment (rtw share),"sign. increase in months away from work among all wage segments, positively correlated with length of paid leave; majority rtw after leave end, with slight decrease for 18-36month leave period",,-1.0,2.0,5.0,3.0
-Delesalle2021,"Delesalle, E.",2021,The effect of the Universal Primary Education program on consumption and on the employment sector: Evidence from Tanzania,World Development,https://doi.org/10.1016/j.worlddev.2020.105345,article,development,Tanzania,2002-2012,36.0,implicit,rural workers,Integrated Public Use Microdata Series (IPUMS) Population and Housing Census 2002; Living Standards Measurement Study-Integrated Surveys on Agriculture (LSMS-ISA),quasi-experimental,difference-in-difference approach; IV approach,433606.0,individual,national,0.0,human capital theory,"can not directly identify intervention compliers, constructing returns for household heads; 'villagization' effect may have impacted unobserved variables affecting returns",programme increased primary education access and introduced more technical curriculum,education (universal),0,1,0,spatial; education,1.0,1.0,education,"improved overall rural education; education inequalities persist along gender, geographical, income lines","villagization effect, increased education access",1.0,,4.0,4.0
-Delesalle2021,"Delesalle, E.",2021,The effect of the Universal Primary Education program on consumption and on the employment sector: Evidence from Tanzania,World Development,https://doi.org/10.1016/j.worlddev.2020.105345,article,development,Tanzania,2002-2012,36.0,implicit,rural workers,Integrated Public Use Microdata Series (IPUMS) Population and Housing Census 2002; Living Standards Measurement Study-Integrated Surveys on Agriculture (LSMS-ISA),quasi-experimental,difference-in-difference approach; IV approach,433606.0,individual,national,0.0,human capital theory,"can not directly identify intervention compliers, constructing returns for household heads; 'villagization' effect may have impacted unobserved variables affecting returns",programme increased primary education access and introduced more technical curriculum,education (universal),0,1,1,spatial; education; gender,1.0,0.0,consumption,sg increase for formal wage and agricultural work for women; sg increase in non-agricultural wage work for men; returns to education lower in agriculture than other self-employment/wage work,"sector choice changes, increased individual productivity",1.0,2.0,4.0,4.0
-Debowicz2014,"Debowicz, D., & Golan, J",2014,The impact of Oportunidades on human capital and income distribution in Mexico: A top-down/bottom-up approach,Journal of Policy Modeling,https://doi.org/10.1016/j.jpolmod.2013.10.014,article,economics,Mexico,2008,,explicit,poor,national administrative survey Encuesta Nacional de Ingresos y Gastos de los Hogares (ENIGH) 2008,simulation,"general equilibrium model, microeconometric simulation model",30000.0,household,national,0.0,human capital theory,analytical household-level limitations; no indirect cost-effects able to be accounted for; static model,study attempts to explictly account for spillover effects and capture conditionality for school attendance,direct transfers (cash),0,1,0,income; generational,0.0,1.0,Gini coeff,raises average income of poorest households by 23%; increasing skills decreases inequality,"cash influx; positive wage effect benefitting those who keep their children at work; direct benefit for human capital increase (school attendance), indirect benefit for increased scarcity of unskilled labor",-1.0,2.0,4.0,0.0
-Davies2022,"Davies, J. M., Brighton, L. J., Reedy, F., & Bajwah, S.",2022,"Maternity provision, contract status, and likelihood of returning to work: Evidence from research intensive universities in the UK",Gender Work And Organization,https://doi.org/10.1111/gwao.12843,article,organization,United Kingdom,2013-2018,,implicit,high-skill female workers,FOI data of Russell Group universities,observational,cross-sectional; pooled odds ratios,17.0,employer,local,0.0,scarce high-level academic female representation through 'leaky pipeline',fragmented data restricting observable variables; doest not account for atypical/short-term contracts,study on public university employers only,paid leave (childcare),1,1,0,gender,1.0,1.0,employment (rtw ratios),significantly decreased employment probability for rtw on fixed-term contracts compared to open-ended contracts; most universities provided limited access to maternity payment for fixed-contract staff,fewer included provisions in fixed-term contracts; strict policies on payments if contract ends before end of maternity leave/minimum length of rtw; long-term continuous service requirements for extended payments,-1.0,2.0,2.0,0.0
-Clark2019,"Clark, S., Kabiru, C. W., Laszlo, S., & Muthuri, S.",2019,The Impact of Childcare on Poor Urban Women’s Economic Empowerment in Africa,Demography,https://doi.org/10.1007/s13524-019-00793-3,article,sociology,Kenya,2015-2016,12.0,explicit,mothers,national administrative survey Nairobi Urban Health and Demographic Surveillance System,experimental,RCT,738.0,individual,"subnational, urban",1.0,economic empowerment theory,results restricted to 1 year; relatively high attrition rate,,subsidy (childcare),0,1,0,gender,1.0,1.0,employment probability difference,subsidy increased employment probability (8.5ppts) for poor married mothers,increased ability to work through lower childcare burden,1.0,2.0,3.0,5.0
-Clark2019,"Clark, S., Kabiru, C. W., Laszlo, S., & Muthuri, S.",2019,The Impact of Childcare on Poor Urban Women’s Economic Empowerment in Africa,Demography,https://doi.org/10.1007/s13524-019-00793-3,article,sociology,Kenya,2015-2016,12.0,explicit,mothers,national administrative survey Nairobi Urban Health and Demographic Surveillance System,experimental,RCT,738.0,individual,"subnational, urban",1.0,economic empowerment theory,results restricted to 1 year; relatively high attrition rate,,subsidy (childcare),0,1,0,gender,1.0,0.0,hours worked,subsidy decreased hours worked without decreasing income for single mothers,allows shifting to jobs with more regular hours,-1.0,2.0,3.0,5.0
-Cieplinski2021,"Cieplinski, A., D’Alessandro, S., Distefano, T., & Guarnieri, P.",2021,Coupling environmental transition and social prosperity: A scenario-analysis of the Italian case,Structural Change and Economic Dynamics,https://doi.org/10.1016/j.strueco.2021.03.007,article,economics,Italy,2010-2014,,implicit,workers,"ISTAT national accounts 2010,2014; EU-KLEMS LM data",simulation,dynamic macrosimulation model,,individual,national,1.0,,models assumption of workers accepting lower income and consumption levels for work time reduction,,regulation (working time reduction),1,1,0,income,0.0,1.0,Gini; employment rates,working time reduction policy significantly increases employment; significantly decreases income inequality,significantly decreases aggregate demand,-1.0,1.0,4.0,0.0
-Cieplinski2021,"Cieplinski, A., D’Alessandro, S., Distefano, T., & Guarnieri, P.",2021,Coupling environmental transition and social prosperity: A scenario-analysis of the Italian case,Structural Change and Economic Dynamics,https://doi.org/10.1016/j.strueco.2021.03.007,article,economics,Italy,2010-2014,,implicit,workers,"ISTAT national accounts 2010,2014; EU-KLEMS LM data",simulation,dynamic macrosimulation model,,individual,national,1.0,,models assumption of workers accepting lower income and consumption levels for work time reduction,,ubi,1,1,0,income,0.0,1.0,Gini,decreases income inequality; negative impact on environmental outcomes,sustains aggregate demand,-1.0,2.0,4.0,0.0
-Chao2022,"Chao, C.-C., Ee, M. S., Nguyen, X., & Yu, E. S. H.",2022,"Minimum wage, firm dynamics, and wage inequality: Theory and evidence",International Journal Of Economic Theory,https://doi.org/10.1111/ijet.12307,article,economics,global,2005-2015,,,formal workers,"WB Doing Business Survey, WDI, ILOSTAT",simulation,dual economy general-equilibrium model,43.0,country,national,1.0,Harris & Todaro rural-urban migration model,"decreasing inequality through increased rural agricultural capital, while reasonable, has to be a prior assumption; short-term firm exit has to be omitted",,minimum wage,1,0,0,income,0.0,1.0,Gini coeff,"short-term reduction of skilled-unskilled wage gap but increased unemployment, decreased welfare; long-term increased wage equality and improved social welfare",firm exit from urban manufacturing increases capital to rural agricultural sector,-1.0,2.0,4.0,0.0
-Carstens2018,"Carstens, C., & Massatti, R.",2018,Predictors of labor force status in a random sample of consumers with serious mental illness,Journal of Behavioral Health Services & Research,https://doi.org/10.1007/s11414-018-9597-8,article,health services,United States,2014-2015,1.0,explicit,mentally ill,survey data,observational,multinomial logistic regression model,917.0,individual,national,0.0,human capital theory; strength-based therapy,"small sample due to low response rate; over-representation of women, older persons, racial minorities","employment motivators captured as increased responsibility and problem-solving, stress management, reduced depression and anxiety; employment barriers",subsidy (health care),1,1,0,disability,1.0,1.0,employment probability,LFP significantly increased for employment incentives; significantly reduced for employment barriers and Medicaid ABD programme participation; marginally reduced for,Medicaid ABD generates benefits trap of disability determination,-1.0,2.0,4.0,2.0
-Broadway2020,"Broadway, B., Kalb, G., McVicar, D., & Martin, B.",2020,The Impact of Paid Parental Leave on Labor Supply and Employment Outcomes in Australia,Feminist Economics,https://doi.org/10.1080/13545701.2020.1718175,article,economics,Australia,2009-2012,14.0,explicit,working mothers,"national administrative surveys Baseline Mothers Survey (BaMS), Family and Work Cohort Study (FaWCS)",quasi-experimental,propensity score matching,5000.0,individuals,"national, census",1.0,,can not account for child-care costs; can not fully exclude selection bias into motherhood; potential (down-ward) bias through pre-birth labor supply effects/financial crisis,child-care costs may have additional dampening effect on rtw,paid leave (childcare),1,1,0,gender; income,1.0,0.0,employment (rtw),short-term (<6months) decrease of rtw; long-term (>6-9months) significant positive impact on returning to work in same job under same conditions; greatest response from disadvantaged mothers,supplants previous employer-funded leave which often did not exist for disadvantaged mothers; reduction in opportunity cost of delaying rtw,1.0,2.0,5.0,3.5
-Blumenberg2014,"Blumenberg, E., & Pierce, G.",2014,A Driving Factor in Mobility? Transportation’s Role in Connecting Subsidized Housing and Employment Outcomes in the Moving to Opportunity (MTO) Program,Journal of the American Planning Association,https://doi.org/10.1080/01944363.2014.935267,article,development,United States,1994-2001,84.0,implicit,poor women,baseline and follow-up survey;,experimental,RCT; multinomial regression model,3199.0,household,"subnational, metropolitan",1.0,,"low levels of explanatory power for individual model outcomes, esp for disadvantaged population groups; possible endogeneity bias through unobserved factors (e.g. human capital); binary distinction automobile access, not graduated",98% of sample is female,subsidy (housing mobility),0,1,0,spatial; gender; ethnicity,1.0,1.0,employment rate,"no relationship between subsidy and employment outcomes; increased employment probability for people living in high transit areas, but no increased job gain for moving to high transit area itself",high transit area employment paradox may be due to inherent difficulty of connecting household to opportunity in dispersed labor market just via access to transit,0.0,0.0,3.0,5.0
-Blumenberg2014,"Blumenberg, E., & Pierce, G.",2014,A Driving Factor in Mobility? Transportation’s Role in Connecting Subsidized Housing and Employment Outcomes in the Moving to Opportunity (MTO) Program,Journal of the American Planning Association,https://doi.org/10.1080/01944363.2014.935267,article,development,United States,1994-2001,84.0,implicit,poor women,baseline and follow-up survey;,experimental,RCT; multinomial regression model,3199.0,household,"subnational, metropolitan",1.0,,"low levels of explanatory power for individual model outcomes, esp for disadvantaged population groups; possible endogeneity bias through unobserved factors (e.g. human capital); binary distinction automobile access, not graduated",98% of sample is female,infrastructure (transport),0,1,0,spatial; gender; ethnicity,1.0,1.0,employment rate,increased employment probability for car ownership,better transport mobility to access wider job opportunity network,1.0,2.0,3.0,5.0
-Bartha2020,"Bartha, A., & Zentai, V.",2020,Long-term care and gender equality: Fuzzy-set ideal types of care regimes in europe,"Social inclusion (vol. 8, issue 4, pp. 92–102)",https://doi.org/10.17645/si.v8i4.2956,article,sociology,global,2016-2019,1.0,implicit,women,European Commission; Eurofound; Mutual Information System on Social Protection; European Institute for Gender Equality,observational,fuzzy-set ideal type ranking,28.0,country,regional,0.0,familialization in LTC,scarce comparable data; ideal-types follow prior assumptions potentially restricting view,"relying on migrant work is often poorly regulated, low paid and in turn may have negative consequences on gender equality in migrant communities/home countries","social security (pensions, care facilities); regulation (LTC-reforms, fiscal policies)",1,1,0,gender; age,1.0,1.0,full-time equivalent employment rate gap between men and women,"few countries fit an ideal-type household of male bread-winner (traditional), unsupported/supported double-earner; supported double-earner type mostly prevalent in Western Europe/Scandinavian countries, Southern/Eastern Europe predominantly unsupported double-earner; women will take on more unpaid care work in that model",in-home care facilitated by rising migrant cash-for-care work sectors may increase FLFP,-1.0,0.0,4.0,0.0
-Bailey2012,"Bailey, M. J., Hershbein, B., & Miller, A. R.",2012,The Opt-In Revolution? Contraception and the Gender Gap in Wages,Economic journal: applied economics,https://doi.org/10.1257/app.4.3.225,article,economics,United States,1968-1989,,implicit,young women,longitudinal administrative National Longitudinal Survey of Young Women (NLS-YW),quasi-experimental,linear regression models; OLS; Oaxaca-Blinder decomposition with recentered influence function (RIF) procedure,5159.0,individual,national,0.0,,dataset does not capture access to contraception beyond age 20 and social multiplier effects (e.g. changed hiring/promotion patterns),,technological change (contraception),0,1,0,gender; income,1.0,1.0,hourly wage distribution (gendered),"early legal access to contraceptives ('the pill') influenced decrease in gender gap by 10% in 1980s, 30% in 1990s; estimates 1/3rd of total female wage gains induced by access 1980s-1990s","increased labor market experience (due to not exiting early); greater educational attainment, occupational upgrading; spurred personal investment in human capital and careers",-1.0,2.0,4.0,2.0
-Adams2015,"Adams, S., & Atsu, F.",2015,Assessing the distributional effects of regulation in developing countries,Journal of Policy Modeling,https://doi.org/10.1016/j.jpolmod.2015.08.003,article,economics,global,1970-2012,,implicit,developing countries,panel data,quasi-experimental,"system general method of moments, fixed effects, OLS; using Gini coefficient",72.0,country,regional,0.0,,macro-level observations subsumed under region-level scale only,"LM regulations defined as hiring/firing, minimum wage, severance pay; business reg. bureaucracy costs, business starting costs, licensing and compliance costs; credit market oversight of banks, private sector credit, interest rate controls",trade liberalization (FDI),1,0,0,income,0.0,1.0,Gini coeff,FDI unlikely to generate equity-oriented welfare effects; trade openness not significantly related,wrong targeting incentive structure for FDI,1.0,2.0,4.0,4.0
-Adams2015,"Adams, S., & Atsu, F.",2015,Assessing the distributional effects of regulation in developing countries,Journal of Policy Modeling,https://doi.org/10.1016/j.jpolmod.2015.08.003,article,economics,global,1970-2012,,implicit,developing countries,panel data,quasi-experimental,"system general method of moments, fixed effects, OLS; using Gini coefficient",72.0,country,regional,0.0,,macro-level observations subsumed under region-level scale only,"LM regulations defined as hiring/firing, minimum wage, severance pay; business reg. bureaucracy costs, business starting costs, licensing and compliance costs; credit market oversight of banks, private sector credit, interest rate controls",regulation (labour),1,0,0,income,0.0,1.0,Gini coeff,labour regulations and business regulations negatively related to equitable income distribution while credit market regulation has no effect in income distribution; FDI unlikely to generate equity-oriented welfare effects; trade openness not significantly related,regulatory policies often lack institutional capability to optimize for benefits; policies require specific targeting of inequality reduction,1.0,2.0,4.0,4.0
-Adams2015,"Adams, S., & Atsu, F.",2015,Assessing the distributional effects of regulation in developing countries,Journal of Policy Modeling,https://doi.org/10.1016/j.jpolmod.2015.08.003,article,economics,global,1970-2012,,implicit,developing countries,panel data,quasi-experimental,"system general method of moments, fixed effects, OLS; using Gini coefficient",72.0,country,regional,0.0,,macro-level observations subsumed under region-level scale only,"LM regulations defined as hiring/firing, minimum wage, severance pay; business reg. bureaucracy costs, business starting costs, licensing and compliance costs; credit market oversight of banks, private sector credit, interest rate controls",education (school enrolment),1,0,0,income,0.0,1.0,Gini coeff,school enrolment positively related to equitable income distribution,capacity-building for public administration practitioners; more context-adapted policies generated,-1.0,2.0,4.0,4.0
-Alinaghi2020,"Alinaghi, N., Creedy, J., & Gemmell, N.",2020,The redistributive effects of a minimum wage increase in New Zealand: A microsimulation analysis,Australian Economic Review,https://doi.org/10.1111/1467-8462.12381,article,economics,New Zealand,2012-2013,,implicit,,New Zealand Household Economic Survey (HES),simulation,microsimulation model; uses Atkinson index,3500.0,individual,national,0.0,,"large sample weights may bias specific groups, e.g. sole parents",,minimum wage,1,1,0,income,0.0,1.0,Atkinson index,"small impact on inequality of income signals bad programme targeting; significant reduction in poverty measures for sole parents already in employment only, but insignificant for sole parents overall",many low-wage earners are secondary earners in higher income households; low-wage households often have no wage earners at all,-1.0,0.0,4.0,0.0
-Sotomayor2021,"Sotomayor, Orlando J.",2021,Can the minimum wage reduce poverty and inequality in the developing world? Evidence from Brazil,World Development,https://doi.org/10.1016/j.worlddev.2020.105182,article,economics,Brazil,1995-2015,12.0,implicit,workers,national administrative surveys Monthly Employment survey (PME),quasi-experimental,difference-in-difference estimator,40000.0,household,"national, census",1.0,,"survey data limited to per dwelling, can not account for inhabitants moving",,minimum wage,1,0,0,income,0.0,0.0,poverty,within three months of minimum wage increases poverty declined by 2.8%,,-1.0,2.0,5.0,3.0
-Sotomayor2021,"Sotomayor, Orlando J.",2021,Can the minimum wage reduce poverty and inequality in the developing world? Evidence from Brazil,World Development,https://doi.org/10.1016/j.worlddev.2020.105182,article,economics,Brazil,1995-2015,12.0,implicit,workers,national administrative surveys Monthly Employment survey (PME),quasi-experimental,difference-in-difference estimator,40000.0,household,"national, census",1.0,,"survey data limited to per dwelling, can not account for inhabitants moving",,minimum wage,1,0,0,income,0.0,1.0,Gini coeff,inequality declined by 2.4%; decreasing impact over time; diminishing returns when minimum is high relative to median earnings,unemployment costs (job losses) overwhelmed by benefits (higher wages); but inelastic relationship of increase and changes in poverty,-1.0,2.0,5.0,3.0
-Al-Mamun2014,"Al-Mamun, A., Wahab, S. A., Mazumder, M. N. H., & Su, Z.",2014,Empirical Investigation on the Impact of Microcredit on Women Empowerment in Urban Peninsular Malaysia,Journal of Developing Areas,https://doi.org/10.1353/jda.2014.0030,article,development,Malaysia,2011,2.0,implicit,women,structured face-to-face interviews,quasi-experimental,"cross-sectional stratified random sampling; OLS, multiple regression analysis",242.0,individual,"subnational, urban",1.0,"household economic portfolio model (Chen & Dunn, 1996)",can not establish full experimental design,,microcredit; training,0,0,1,gender; income,1.0,0.0,empowerment index (personal savings; personal income; asset ownership),increase in household decision-making for women; increase in economic security for women; constrained by inability for individuals to obtain loans,individual access to finance; collective agency increase through meetings and training,1.0,2.0,3.0,2.0
-Ahumada2023,"Ahumada, P. P.",2023,"Trade union strength, business power, and labor policy reform: The cases of Argentina and Chile in comparative perspective",International Journal of Comparative Sociology,https://doi.org/10.1177/00207152231163846,article,sociology,global,2009-2017,,,,time-series cross-sectional database for collective labour rights and class power disparity,quasi-experimental,OLS; Arellano estimator,78.0,country,regional,0.0,power resource theory,limited 2-observation dataset per country; potential remaining measurement bias due to concurrent shocks,,collective action (unionization),1,0,0,income,0.0,1.0,Freedom of Association and Collective Bargaining (FACB) and violation index coding,more unequal political power distribution hinders processes of collective organisation,,,,4.0,2.0
-Cardinaleschi2019,"Cardinaleschi, S., De Santis, S., & Schenkel, M.",2019,Effects of decentralised bargaining on gender inequality: Italy,Panoeconomicus,https://doi.org/10.2298/PAN1903325C,article,economics,Italy,2014,,,,Linked Employer Employees Data from Structure of Earnings Survey,quasi-experimental,OLS; Oaxaca-Blinder & Juhn-Murphy-Pierce decompositions,,firm,national; census,0.0,gender endowment discrimination; glass ceiling wage-setting institutions,Only a short-term decomposition of mostly cross-sectional dataset,,collective action (collective bargaining),1,1,0,gender; income,1.0,1.0,income shares,collective negotiation practices address gender gap marginally significantly; need to be supplemented by policies considering human-capital aspects,occupational segregation into feminized industries,1.0,1.0,5.0,2.0
-Coutinho2006,"Coutinho, M. J., Oswald, D. P., & Best, A. M.",2006,Differences in Outcomes for Female and Male Students in Special Education,Career Development for Exceptional Individuals,https://doi.org/10.1177/08857288060290010401,article,education,United States,1972-1994,72.0,implicit,young women with disabilities,National Education Longitudinal Study (NELS-88),quasi-experimental,OLS; linear and two-step multinomial logistic regression,13391.0,individual,national,0.0,,sample does not include students with more severe impairments due to requirement of self-reporting; selection based on parent-reporting may introduce bias,more men than women in skilled/technical positions across all groups,education (special needs),0,1,0,disability; gender; income; age,1.0,0.0,"female employment ratio, female income ratio","females with disabilities less likely to be employed, and earned less than males with disability; females less likely to obtain high school diploma; more likely to be biological parent","men employed more months, more hours per week than women; largest income difference in special education and low achievers",-1.0,2.0,4.0,2.0
-Dieckhoff2015,"Dieckhoff, M., Gash, V., & Steiber, N.",2015,Measuring the effect of institutional change on gender inequality in the labour market,Research in Social Stratification and Mobility,https://doi.org/10.1016/j.rssm.2014.12.001,article,sociology,Austria; Belgium; Czechia; Denmark; Finland; France; Germany; Greece; Hungary; Italy; Netherlands; Norway; Poland; Portugal; Slovakia; Spain; Sweden; and the UK,1992-2007,192.0,,,"repeat cross-sectional data, national survey dataset European Labour Force Survey",quasi-experimental,"two-step multilevel modelling; OLS; multinomial logistic regression, fixed effects approach",18.0,country,national,1.0,,averaged across national contexts may obscure specific insights,PRELIMINARY EXTRACTION; EXTRACTION OF DEREGULATION OF TEMPORARY CONTRACTS; FAMILY POLICIES,collective action (unionization),0,1,0,gender,,,employment,men and women increased standard employment contracts with increased unionization; female employment does not decrease,increased standard employment contract probability,1.0,2.0,4.0,2.0
-Ferguson2015,"Ferguson, J.-P.",2015,The control of managerial discretion: Evidence from unionization’s impact on employment segregation,American Journal of Sociology,https://doi.org/10.1086/683357,article,sociology,United States,1984-2010,,implicit,women workers,"AFL-CIO, NLRB datasets, amended with Current Population Survey",quasi-experimental,regression-discontinuity RD test,50000.0,individual,national,1.0,,most of effects may be caused by unsobservables,,collective action (unionization),0,1,1,gender; ethnicity,1.0,0.0,employment,"stronger unionization associated with more women and minorities in management, but only marginally significant",possible self-selection into unionization,1.0,1.0,4.0,4.5
-Mukhopadhaya2003,"Mukhopadhaya, P.",2003,Trends in income disparity and equality enhancing (?) education policies in the development stages of Singapore,International Journal of Educational Development,https://doi.org/10.1016/S0738-0593(01)00051-7,article,education,Singapore,1980-1995,,,,"Census Reports, Yearbook of Statistics Snagopre",observational,regressions with multivariate decomposition,,,"national, census",0.0,,higher education institutional context may make generalizability outside Singapore harder,only contains labour market ancillary outcomes but strong arguments for generational inequalities; PRELIMINARY EXTRACTION,education,0,1,0,migration; generational; income; ethnicity,1.0,1.0,Gini coeff; Theil index; relative mean income,non-uniform representation of academic abilities across parental education backgrounds; education interventions may exacerbate income inequality through bad targeting,primary income inequality for migrants through between-occupational inequality; advantaged income brackets also advantaged in educative achievement brackets; system of financing higher education in Singapore further disadvantages poorer households,1.0,2.0,5.0,0.0
-Shin2006,"Shin, J., & Moon, S.",2006,"Fertility, relative wages, and labor market decisions: A case of female teachers",Economics of Education Review,https://doi.org/10.1016/j.econedurev.2005.06.004,article,economics,United States,1968-1988,,implicit,female teachers,National Longitudinal Survey of the Young Women,quasi-experimental,fixed effects panel regressions; panel probit estimation,2712.0,individual,national,0.0,,"looks at strictly female sample, can not account for changes relative to men",,education; regulation (relative wage-setting),1,1,0,gender,1.0,1.0,employment (FLFP rate),"higher relative wages significantly increase FLFP for female teachers; presence of new-born baby significantly decreases FLFP, significantly more than non-teachers; does not have effect on teacher/non-teacher selection",most relevant determinant for FLFP as teacher is college major in education; education level significant determinant; higher baby-exit effect may be due to relatively temporary lower wage loss for teachers,1.0,2.0,4.0,2.0
-Alexiou2023,"Alexiou, C., & Trachanas, E.",2023,The impact of trade unions and government party orientation on income inequality: Evidence from 17 OECD economies,Journal of Economic Studies,https://doi.org/10.1108/JES-12-2021-0612,article,economics,Australia; Austria; Belgium; Canada; Denmark; Finland; France; Germany; Italy; Japan; Netherlands; New Zealand; Norway; Spain; Sweden; United Kingdom; United States,2000-2016,,,,Standardized World Income Inequality Database (SWIID) OECD panel data,quasi-experimental,"panel fixed effects approach, Driscoll and Kraay non-parametric covariance matrix estimator",18.0,country,regional,1.0,power resources theory,"can not account for individual drivers such as collective bargaining, arbitration, etc",,collective action (trade unionization),1,1,0,income; gender,0.0,1.0,"Gini coeff (equivalized household disposable income, market income, manufacturing pay)",unionization strongly related with decreasing income inequality; right-wing institutional contexts related with increased income inequality,redistribution of political power under unions; weak unionization increases post-redistribution inequality,-1.0,2.0,4.0,2.0
-Mun2018,"Mun, E., & Jung, J.",2018,"Policy generosity, employer heterogeneity, and women’s employment opportunities: The welfare state paradox reexamined",American Sociological Review,https://doi.org/10.1177/0003122418772857,article,sociology,Japan,1992-2009,84.0,explicit,working mothers,Japan Company Handbook for Job Searchers,quasi-experimental,potential outcomes framework; fixed-effects analysis,600.0,enterprise,national,0.0,welfare state paradox (over-representation of women in low-authority jobs in progressive welfare states),limited generalizability with unique Japanese LM institutional features; limited ability to explain voluntary effects as lasting or as symbolic compliance and impression management,,paid leave (childcare),1,0,0,gender,1.0,0.0,job quality,"no change for promotions for firms not previously providing leave, positive promotion impact for firms already providing leave; incentive-based policies may lead to larger effects",voluntary compliance to maintain positive reputations,1.0,1.0,4.0,2.0
-Mun2018,"Mun, E., & Jung, J.",2018,"Policy generosity, employer heterogeneity, and women’s employment opportunities: The welfare state paradox reexamined",American Sociological Review,https://doi.org/10.1177/0003122418772857,article,sociology,Japan,1992-2009,84.0,explicit,working mothers,Japan Company Handbook for Job Searchers,quasi-experimental,potential outcomes framework; fixed-effects analysis,600.0,enterprise,national,0.0,welfare state paradox (over-representation of women in low-authority jobs in progressive welfare states),limited generalizability with unique Japanese LM institutional features; limited ability to explain voluntary effects as lasting or as symbolic compliance and impression management,,paid leave (childcare),1,0,0,gender,1.0,0.0,employment,no increase in hiring discrimination against women reflected as decreased employment probability,decreases may be due to supply-side mechanisms based on individual career planning and reinforced existing gender division of household labour,0.0,0.0,4.0,2.0
-Thoresen2021,"Thoresen, S. H., Cocks, E., & Parsons, R.",2021,Three year longitudinal study of graduate employment outcomes for Australian apprentices and trainees with and without disabilities,International journal of disability development and education,https://doi.org/10.1080/1034912X.2019.1699648,article,education,Australia,2011-204,36.0,explicit,disabled,experimental survey,quasi-experimental,"quantitative survey (n=489); qualitative semi-structured face-to-face interviews (n=30); annual postal survey, baseline and 2 follow-ups; generalised estimating equation GEE",489.0,individual,local,0.0,,"non-representative sample, over-representation of learning disability; limited generalisability through sample LFP bias and attrition bias; small control sample size",Disaggregated results for female participants overall more unequal,training,0,1,1,disability; income,1.0,0.0,hours worked,"slightly lower for disabled group initially, increase to no significant difference with non-disabled group at last survey",significant but small overall increase (3.1 hours to 1 hour difference); fluctuations for non-disability group,1.0,2.0,2.0,4.0
-Thoresen2021,"Thoresen, S. H., Cocks, E., & Parsons, R.",2021,Three year longitudinal study of graduate employment outcomes for Australian apprentices and trainees with and without disabilities,International journal of disability development and education,https://doi.org/10.1080/1034912X.2019.1699648,article,education,Australia,2011-204,36.0,explicit,disabled,experimental survey,quasi-experimental,"quantitative survey (n=489); qualitative semi-structured face-to-face interviews (n=30); annual postal survey, baseline and 2 follow-ups; generalised estimating equation GEE",489.0,individual,local,0.0,,"non-representative sample, over-representation of learning disability; limited generalisability through sample LFP bias and attrition bias; small control sample size",Disaggregated results for female participants overall more unequal,training,0,1,1,disability; income,1.0,0.0,hourly/weekly income,wages of disability group substantially lower than non-disability; increases to be non-significant over time; lower for female and disability-pension recipient groups,strong initial diff means disability group potentially more often initially employed at junior rates or skewed through attrition bias,1.0,2.0,2.0,4.0
-Wang2016,"Wang, J., & Van Vliet, O.",2016,"Social Assistance and Minimum Income Benefits: Benefit Levels, Replacement Rates and Policies Across 26 Oecd Countries, 1990-2009",European Journal of Social Security,https://doi.org/10.1177/138826271601800401,article,economics,global,1990-2009,,implicit,low-income,"World Bank CPI indicators & Penn World Table; Social Assistance and Minimum Income Protection Dataset (Nelson, 2013)",observational,cross-country comparative analysis,26.0,country,regional,0.0,,some effects may stem from exchange rate/PPP changes instead,due to data availability indicator for real minimum benefits and replacement rates could be constructed for 26 OECD countries,direct transfers (social assistance),1,1,0,income,0.0,1.0,real wage; replacement rate,"real benefit levels increased in most countries, benefit levels increasing more than consumer prices; income replacement rates mixed outcomes with decreases in some countries where real benefit levels increased",bulk of increases comes from deliberate policy changes; but benefit levels not linked to wages and policy changes not taking into account changes in wages,1.0,,4.0,0.0
-Wang2020,"Wang, C., Deng, M., & Deng, J.",2020,Factor reallocation and structural transformation implications of grain subsidies in China,Journal of Asian Economics,https://doi.org/10.1016/j.asieco.2020.101248,article,economics,China,2007-2016,108.0,implicit,rural workers,TERMCN-Land database; Chinese Input-Output Table 2007,simulation,historical and TERMCN-Land structural simulation model,,sector,,0.0,,aggregate national employment exogenous to model; strong correlation to Chinese economic characteristics makes generalisability difficult,,subsidy (firm-level),0,1,0,income; spatial,1.0,1.0,income ratio,the rural-urban income inequality is exacerbated if grain subsidies are removed; over the long term this increase attenuates but income ratio remains decreased for rural labour,"displacement of rural unskilled labour; unskilled labour supply increase, labour difficult to absorb into manufacturing/service sectors; low income/price elasticity for agr. products lower rural income",1.0,2.0,0.0,0.0
-
diff --git a/final_document/journal_article/paper_WIP_MO.docx b/final_document/journal_article/paper_WIP_MO.docx
deleted file mode 100644
index 43e4735..0000000
Binary files a/final_document/journal_article/paper_WIP_MO.docx and /dev/null differ
diff --git a/final_document/journal_article/scoping_review(5).docx b/final_document/journal_article/scoping_review(5).docx
deleted file mode 100644
index 9b97cc7..0000000
Binary files a/final_document/journal_article/scoping_review(5).docx and /dev/null differ
diff --git a/manuscript/article.qmd b/manuscript/article.qmd
deleted file mode 100644
index 292c62b..0000000
--- a/manuscript/article.qmd
+++ /dev/null
@@ -1,1460 +0,0 @@
----
-title: Inequalities in the World of Work
-subtitle: What do we know?
-author:
- - name: Miguel Niño-Zarazúa
- email: mn39@soas.ac.uk
- affiliations:
- - id: soas
- name: SOAS University of London
- department: Department of Economics
- attributes:
- corresponding: true
- - name: Marty Oehme
- email: mail@martyoeh.me
-date: last-modified
-abstract: |
- We are researching the effectiveness of policies which target inequalities on the labour market.
-keywords:
- - labour markets
- - world of work
- - inequality
- - policy
- - systematic scoping review
-lang: en
-crossref: # to fix the appendix crossrefs being separate from main
- custom:
- - kind: float
- key: appatbl
- latex-env: appatbl
- reference-prefix: Table A
- space-before-numbering: false
- latex-list-of-description: Appendix A Table
- - kind: float
- key: appbtbl
- latex-env: appbtbl
- reference-prefix: Table B
- space-before-numbering: false
- latex-list-of-description: Appendix B Table
----
-
-```{python}
-#| label: standard-imports
-#| echo: false
-#| output: false
-import src.globals as g
-from IPython.display import display, Markdown, HTML
-import numpy as np
-import pandas as pd
-from matplotlib import pyplot as plt
-from tabulate import tabulate
-import seaborn as sns
-sns.set_style("whitegrid")
-
-# pyright: reportUnusedImport=false
-```
-
-```{python}
-#| label: load-dataframes
-#| echo: false
-#| output: false
-from src import df, df_by_intervention, validities
-```
-
-{{< portrait >}}
-
-# Introduction
-
-* Context and statement of the problem
-* Aims and rationale of the systematic scoping review
-* Summary of the main findings
-* Description of the structure of the paper
-
-# Conceptual framework
-
-* Theories, policies, mechanisms and outcomes
-
-# Review methodology
-
-The following section will discuss the methodology that is proposed to conduct the review of the literature on policy interventions that are expected to address inequalities in forms of work and labour market outcomes,
-as well as give an overview of the collected data.
-This study follows the principles of a systematic review framework, to systematically assess the impact of an array of policies on inequalities in the world of work.
-It strives to follow the clear and reproducible method of identification prior to synthesis of relevant research,
-while limiting "bias by the systematic assembly, critical appraisal and synthesis" through applying scientific strategies to the review itself [@Cook1995].
-It thereby attempts to provide an improved basis for comparative analysis between studies through the rigorous application of systematic criteria and thus to avoid the potential bias of narrative reviews.
-
-Unlike purely systematic reviews which typically focus on specific policy questions and interventions, systematic scoping reviews focus on a wider spectrum of policies, where different study designs and research questions can be investigated.
-Since scoping reviews allow both broad and in-depth analyses, they are the most appropriate rigorous method to make a synthesis of the current evidence in this area [@Arksey2005].
-
-The scoping review allows broad focus to be given to a subject for which no unified path with clear edges has been laid out yet by prior reviews, as remains the case with policies targeting inequalities in the world of work.
-It does so through a breadth-first approach through a search protocol which favours working through a large body of literature to subsequently move toward a depth-favouring approach once the literature has been sufficiently delimited.
-Its purpose, clearly mapping a body of literature on a (broad) topic area, is thereby useful on its own or in combination with a systematic approach [@Arksey2005].
-With an increasingly adopted approach in recent years, with rigorous dichotomy of inclusion and exclusion criteria it provides a way of charting the relevance of literature related to its overall body that strives to be free of influencing biases which could affect the skew of the resulting literature sample [@Pham2014].
-
-## Inclusion criteria
-
-Concise narrowing criteria are applied to restrict the sample to studies looking at
-i) the effects of individual evidence-based policy measures or intervention initiatives
-ii) attempting to address a single or multiple of the defined inequalities in the world of work.
-iii) using appropriate quantitative methods to examine the links of intervention and impact on the given inequalities.
-The narrowing process makes use of the typology of inequalities, of forms of work, and of policy areas introduced above as its criteria.
-
-An overview of the respective criteria used for inclusion or exclusion can be found in @tbl-inclusion-criteria.
-It restricts studies to those that comprise primary research published after 2000,
-with a focus on the narrowing criteria specified in @tbl-inclusion-criteria.
-
-::: {#tbl-inclusion-criteria}
-
-```{python}
-inclusion_criteria = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/inclusion-criteria.tsv", sep="\t")
-Markdown(tabulate(inclusion_criteria, showindex=False, headers="keys", tablefmt="grid"))
-```
-
-Source: Author's elaboration
-
-Study inclusion and exclusion scoping criteria
-
-:::
-
-## Search protocol
-
-The search protocol followed a three-staged process of execution: identification, screening and extraction.
-A detailed description of each review step and relevant terms can be found in the Appendix.
-
-First, in identification, the relevant policy, inequality and world of work related dimensions were combined through Boolean operators to conduct a search through the database repository Web of Science and supplemental searches via Google Scholar to supply potential grey literature.
-Second, in screening, duplicate results were removed and the resulting literature sample is sorted based on a variety of excluding characteristics based on:
-language, title, abstract, full text and literature superseded through newer publications.
-Properties in these characteristics were used to assess an individual study on its suitability for further review in concert with the inclusion criteria mentioned in @tbl-inclusion-criteria.
-
-Should any literature reviews be identified as relevant during this screening process,
-they will in turn be crawled for cited sources in a 'snowballing' process.
-The sources are then be added to the sample to undergo the same screening process,
-ultimately resulting in the process represented in the PRISMA chart in @fig-prisma.
-
-```{mermaid}
-%%| label: fig-prisma
-%%| fig-cap: PRISMA flowchart for scoping process
-%%| file: ../data/processed/prisma.mmd
-```
-
-All relevant data concerning both their major findings and statistical significance are then extracted from the individual studies into a collective results matrix.
-The results to be identified in the matrix include a study's:
-i) key outcome measures (dependent variables),
-ii) main findings,
-iii) main policy interventions (independent variables),
-iv) study design and sample size,
-v) dataset and methods of evaluation,
-vi) direction of relation and level of representativeness,
-vii) level of statistical significance,
-viii) main limitations.
-
-```{python}
-from src.model import prisma
-p = prisma.PrismaNumbers()
-```
-
-The query execution results in an initial sample of
-`{python} p.raw_db`
-potential studies identified from the database search as well as
-`{python} p.raw_snowball`
-potential studies from other sources,
-leading to a total initial number of
-`{python} p.raw_full`.
-This accounts for all identified studies without duplicate removal, without controlling for literature that has been superseded or applying any other screening criteria.
-Of these,
-`{python} p.dedup_full - p.out_title - p.out_abstract - p.out_language`
-have been identified as potentially relevant studies for the purposes of this scoping review and selected for a full text review,
-from which in turn
-`{python} p.final_extracted`
-have ultimately been extracted.
-
-@fig-intervention-types shows the predominant interventions contained in the reviewed literature.
-Overall, there is a focus on measures of minimum wage, subsidisation, considerations of trade liberalisation and collective bargaining, education and training.
-The entire spread of policies captures interventions aimed primarily at institutional and structural mechanisms, but also mechanisms focused on individual agency.
-
-```{python}
-#| label: fig-intervention-types
-#| fig-cap: Available studies by primary type of intervention
-
-sort_order = df_by_intervention["intervention"].value_counts().index
-
-fig = plt.figure()
-fig.set_size_inches(6, 3)
-ax = sns.countplot(df_by_intervention, x="intervention", order=df_by_intervention["intervention"].value_counts().index)
-plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
- rotation_mode="anchor")
-plt.show()
-del sort_order, fig, ax
-```
-
-# Synthesis of evidence
-
-Since policies employed in the pursuit of increased equality can take a wide form of actors, strategy approaches and implementation details,
-the following synthesis will first categorise between the main thematic area and its associated interventions.
-Individual observations are then descriptively distinguished between for the primary outcome variables (inequalities) of interest.
-Thus, in the following synthesis each reviewed study will be analysed through the primary policies or mechanisms they use as independent variables to analyse the effects on a variety of inequalities.
-
-One of the primary lenses of inequality in viewing policy interventions to reduce inequalities in the world of work is that of income,
-often measured for all people throughout a country (vertical inequality) or subsets thereof (horizontal inequality).
-At the same time, the primacy of income should not be overstated as disregarding the intersectional nature of inequalities could lead to diminished intervention outcomes through adverse targeting.
-
-Each main thematic area will be preceded by a table presenting a summary of findings for the respective policies,
-their identified channels and an estimation of their strength of evidence base.
-Afterwards, the analytical lens will be inverted for the discussion and the reviewed studies discussed from a perspective of their analysed inequalities and limitations,
-to better identify areas of strong analytical lenses or areas of more limited analyses.
-
-## Institutional factors
-
-{{< portrait >}}
-
-::: {#tbl-findings-institutional}
-
-```{python}
-# | label: tbl-findings-institutional
-from src.model import validity
-from src.model.validity import strength_for # Careful: ruff org imports will remove
-
-findings_institutional = pd.read_csv(
- f"{g.SUPPLEMENTARY_DATA}/findings-institutional.csv"
-)
-fd_df = validity.add_to_findings(findings_institutional, df_by_intervention)
-
-outp = Markdown(
- tabulate(
- fd_df[
- [
- "area of policy",
- "internal_validity",
- "external_validity",
- "findings",
- "channels",
- ]
- ].fillna(""),
- showindex=False,
- headers=[
- "area of policy",
- "internal strength",
- "external strength",
- "main findings",
- "channels",
- ],
- tablefmt="grid",
- )
-)
-del findings_institutional, fd_df
-outp # type: ignore[ReportUnusedExpression]
-```
-
-Note: Each main finding is presented with an internal strength of evidence and an external strength of evidence which describe the combined validities of the evidence base for the respective finding.
-Validities are segmented to a weak (-) evidence base under a validity ranking of `{python} strength_for(r"\+")`,
-evidential (+) from `{python} strength_for(r"\+")` and under `{python} strength_for(r"\++")` and strong evidence base (++) for `{python} strength_for(r"\++")` and above.
-
-Summary of main findings for institutional policies
-
-:::
-
-{{< landscape >}}
-
-### Labour regulation and paid leave
-
-
-@Dustmann2012 analyse the long-run effects of a series of increases in the period of paid leave for mothers in Germany,
-first up to 18 months and then extending unpaid leave up to 36 months.
-Though primarily focused on children's outcomes,
-it also analyses the policy's effects on the return to work rates and cumulative incomes of the mothers.[^dustmann-childoutcomes]
-While increases of paid leave periods (up to 6 months) significantly increased incomes,
-longer periods (up to 10 months) saw a decrease with marginal significance for low-income mothers.
-Further increases, including the unpaid but job-protected increase to 36 months,
-significantly decreased cumulative incomes across income brackets.[^cumulative]
-For those returning to work, there is a significant increase in the months away from work among all wage segments for all paid leave period increases,
-roughly corresponding to the respective provided leave length.
-Still, similar numbers of mothers return once the leave period ends,
-with significant decreases for the longer leave periods from 18 to 36 months.
-Some limitations of the study include its sample being restricted to mothers who go on maternity leave and some control group identification restrictions possibly introducing some sampling bias.
-
-[^cumulative]: Cumulative income being defined as the sum of mother's income until the child is 40 months old, combined from monthly earnings if working or monthly child benefit if not working but eligible for paid leave.
-
-[^dustmann-childoutcomes]: For its analysis of long-term educational outcomes on children, however, it does not find any evidence for the expansions improving children's outcomes, even suggesting a possible decrease of educational attainment for the paid leave extension to 36 months. The authors suggest that the negative effect for children under the long-term paid leave program of 36 months may stem from the fact that children require more external stimuli (aside from the mother) before this period ends, as well as the negative long-term effects of the mother's significantly reduced income for the long-term leave periods.
-
-@Mun2018, taking a look at hiring discrimination due to introducing maternity leave laws in Japan,
-find similar results:[^laws-japan]
-no increase in hiring discrimination or job promotions was visible and the laws in fact had a partly positive impact on job promotions.
-They argue these positive impacts may predominantly be due to voluntary firm compliance to maintain positive reputations,
-arguing for an incentive-based approach over mandated ones though no causal analysis was undertaken.[^welfare-paradox]
-Their analysis focused on women in managerial positions which may bias findings away from lower income brackets.
-
-[^laws-japan]: The study focuses on the 1992 introduced Childcare Leave Act which, as the first major childcare policy, mandated one year childcare leave per child for both men and women,
-and the 2005 introduced Act on Advancement of Measures to Support Raising Next-Generation Children which focused on yielding incentives for companies to provide paid leave to at least 70 percent of its female employees and have at least one male employee taking paid leave.
-
-[^welfare-paradox]: These results run contrary to notions of demand-side mechanisms of the welfare state paradox, with women being less represented in high-authority employment positions due to hiring or workplace discrimination against them with increased maternity benefits. The authors suggest that the welfare paradox may rather be due to supply-side mechanisms, based on individual career planning, as well as reinforced along existing gender divisions of household labour which may increase alongside the laws.
-
-@Broadway2020 study the introduction of universal paid maternal leave in Australia,
-analysing the impacts on mothers' return to work as well as the conditions they return under.
-They also find a short-term decrease of mothers returning to work since they make use of the introduced leave period,
-but a long-term (after six to nine months) significant positive impact on return to work.
-Furthermore, there is a positive impact on returning to the same job and under the same conditions,
-the effects of which are stronger for more disadvantaged mothers.[^aus-disadvantaged]
-This suggests that the intervention reduced the opportunity costs for delaying the return to work,
-especially for those women that did not have employer-funded leave options.
-The study cannot account for child-care costs or completely exclude selection bias into motherhood or through exogenous shocks.
-
-[^aus-disadvantaged]: Disadvantages measured as a combination of income, education and access to employer-funded leave.
-
-@Davies2022 focus on the difference in return to work ratios between working under fixed-term and open-ended contracts for high-skill women working in UK public universities.
-There is both a significantly decreased return to work probability for those with fixed-term contracts,
-and most universities provide policies with more limited access to maternity payment for fixed-term contracted staff.
-The results suggest strict payment and repayment policies for early contract termination and the requirement for long-term service to qualify for enhanced maternity benefits may deter utilization under fixed-term contracts. Additionally, significant internal heterogeneity exists regarding maternity policy documents,
-with few offering favourable conditions within fixed-term contracts.
-
-@Adams2015 examine the macro-level relationships between business and credit regulations, labour laws and income inequality in developing countries from 1970 to 2012.
-In MENA, SSA, LAC and to some extent AP, they find stricter labour and business regulations actually negatively related to equitable income distribution,
-with market regulation having no significant impacts.
-They identify lacking institutional capability to accomplish regulatory policies optimized for benefits in developing countries and see the need for policies aimed at more specific targeting of inequality reduction.[^adams-targeting]
-The study also analyses the effects of FDI and school enrolment which are reviewed in their respective sections,
-though the focus remains primarily on regional trends rather than individual factors as causes for inequality.
-
-[^adams-targeting]: The authors furthermore suggest that regulatory policy in developing countries thus needs to be built specifically for their individual contexts and can not be exported in unaltered form from developed countries due to different structural make-up and institutional capabilities.
-
-### Minimum wage laws
-
-Studies focusing on minimum wage effects further delineate themselves into ones that look at the effects on a national level such as @Wong2019, @Alinaghi2020 and @Chao2022,
-and studies which specifically take sub-national spatial effects into account.
-@Wong2019 specifically focuses analysis on the impacts on income and hours worked of low-wage earners,
-finding that, generally, there was a significant positive effect on income and on waged workers' hours worked,
-which can in turn reflect positively on the country's equitable income distribution.
-At the same time, potential negative effects on the income of high earners are identified,
-suggesting an income-compression effect as employers freeze or reduce high-earners wages to offset low-earners raised floors.
-The findings hide internal heterogeneity, however:
-For hours worked there is a significant negative impact on women,
-potentially pointing to a decreased intensive margin for female workers.[^wong-limits]
-For income the effect is largest for agricultural workers,
-while for women the effect is significantly smaller than the overall sample,
-possibly also affected by the decrease in hours worked.
-Thus, while overall income inequality seems well targeted in the intervention,
-it may exacerbate the gender gap that already existed at the same time.
-
-[^wong-limits]: The study can only analyse effects during a period of economic growth for the country, which, combined with some sort-dependency in the panel data, may introduce a form of unobservable exogenous bias into this finding.
-
-@Chao2022, looking at the effects in a sample of 43 countries including LMIC and HIC,
-find strong short-term and long-term differences in outcomes:
-In the short term minimum wage introductions lead to a reduction of the skilled-unskilled wage gap,
-however an increase in unemployment and welfare,
-while in the long term the results are an overall decrease in wage inequality as well as improved social welfare.[^chao-indicator]
-It finds those results primarily stem from LMIC which experience significant effects driven by a long-term firm exit from urban manufacturing sectors,
-thereby increasing available capital for the rural agricultural sector,
-while in HIC the results largely remain insignificant.
-Some limitations of the study include the necessity to omit short-term urban firm exit for the effects to remain significant,
-as well as requiring the prior assumption of decreased inequality through increased rural agricultural capital.
-
-[^chao-indicator]: To identify the overall income inequality within the countries, the study primarily utilizes the Gini coefficient.
-
-@Alinaghi2020 conduct a microsimulation to estimate the effects of a minimum wage increase in New Zealand on overall income inequality and further disaggregate along gender and poverty lines.
-It finds limited redistributional effects for the policy, with negligible impact on overall income inequality and the possibility of actually increasing inequalities among lower percentile income households.
-The authors caution against overestimation of the results' generalizability due to large sample weights possibly biasing results towards sole parent outcomes.
-While the effects on poverty measures overall also remain insignificant for sole parents,
-it does find significant poverty reduction for sole parents which are in employment.
-The authors suggest these findings point to bad programme targeting,
-which at best has negligible positive impact on income equality and at worst may worsen income inequality for lower income households,
-as low-wage earners are often the secondary earners in higher-income households but low-wage households often have no wage earners at all.
-
-Looking at the effect of increases in Romania,
-@Militaru2019 find that minimum wage increases generally correlate with a small wage inequality decrease,
-and also carry a larger positive impact for women.
-They identify a two-fold mechanism which increases the number of waged workers in the total number of employees and mainly concentrates benefits for workers at the minimum income level.[^militaru-limits]
-They also suggest this being the probable channel for larger impacts on female workers since they make up larger parts of low-income and minimum wage households in Romania.
-
-[^militaru-limits]: One limitation of the study may be the over-representation of employees in the sample, as well as not being able to account for tax evasion or other behavioural changes in the model.
-
-
-Turning to studies which take into account spatial effects between different regions,
-@Gilbert2001 similarly find insignificant effects on income inequality in the UK,
-agreeing with the results of @Chao2022.
-However, the effects for rural areas differ depending on their proximity to urban areas.
-While rural areas which are accessible to urban markets are less affected resulting in similarly insignificant impacts,
-more remote rural households experience almost double the reduction in inequality,
-which the authors argue points to effective targeting of the policy.
-For the results to hold, the study has to assume no significant effects on employment after the enactment of the minimum wage.
-
-Analysing both the effects of minimum wage and direct cash transfers in Brazil,
-@SilveiraNeto2011 also focus on the spatial impacts within the country.
-Incomes between regions have converged during the time frame and overall the cash transfers under the 'Bolsa Familia' programme and minimum wage are identified as accounting for 26.2% of the effect.
-Minimum wage contributed 16.6% of the effect to overall Gini reduction between the regions while cash transfers accounted for 9.6% of the effect.
-The authors argue that this highlights the way even ostensibly non-spatial policies can have a positive
-(or, with worse targeting or selection, negative) influence on spatial inequalities,
-as transfers occurring predominantly to poorer regions and minimum wages having larger impacts in those regions created quasi-regional effects without forming explicit part of the policies.[^silveiraneto-limits]
-
-[^silveiraneto-limits]: For the analysis, minimum wage effects had to be constructed from the effects that wages equal to the minimum wage had, and cash transfer impacts could only be estimated for the end-line analysis.
-
-On the other hand also in Brazil, @Sotomayor2021,
-looking at the poverty and inequality outcomes of subsequent minimum wage floor increases,
-finds a poverty reduction by 2.8% and income inequality reduction by 2.4% in the short term (3 months).
-In the long term the results largely agree with @SilveiraNeto2011,
-finding that minimum wage increases show diminishing returns where the legal minimum is already high in relation to median earnings.
-Overall the study finds additional unemployment costs --
-created through new job losses through the introduction --
-are offset by the increased benefits found in higher wages for workers.
-The author suggests an inelastic relationship between increases and poverty incidence,
-with the limitation that the data can only track individual dwellings (instead of household connected to their inhabitants) and thus both resembles repeat cross-sectional data more than panel data,
-and is not able to account for people or households moving to new dwellings.
-
-### Collective bargaining
-
-@Alexiou2023 take a macro-level perspective and investigate the impact of governmental party political orientation and trade unionisation levels on income inequality across countries.
-The findings indicate a negative correlation between strong unionisation and income inequality,
-attributed to enhanced political power redistribution via collective action in national contexts of powerful unions.
-Regions with weak unionisation have higher income inequality post-redistribution,
-also generally indicating a propensity towards uneven redistributive policies.[^alexious-rightwing]
-
-[^alexious-rightwing]: The study observes a positive association between right-leaning governments and income inequality, whereas centrists exhibit varied outcomes, hinting at possible inconsistencies in their redistributive strategies. However, the study can not directly identify the causal factors within these relationships.
-
-@Ahumada2023, taking the opposite approach,
-explore how imbalanced political power distributions affect the availability and strength of collective labour rights.[^ahumada-approach]
-Generally, they concur that contexts characterized by significant power disparities weaken opportunities for collective bargaining,
-primarily due to either more restricted or disregarded labour rights coupled with less deeply rooted trade unionism.
-In contrast, well establishes unionism curtails employers' lobbying efforts and make them susceptible to governments' divide-and-conquer strategies,
-being more separate and less coordinated.
-
-[^ahumada-approach]: The study employs a mix of quantitative global comparisons and qualitative analyses more specifically focused on Argentina and Chile. Thus, the strong institutional context of the two countries provides an analytical background which makes its qualitative analysis more difficult to generalize the quantitative findings.
-
-Focusing on the intersection between collective organisation and gender more specifically,
-@Dieckhoff2015 examine the influence of trade unionisation on gender inequalities within European labour markets.
-The study establishes a positive link between unionisation rates and the likelihood of standard employment contracts for both genders.
-While it finds no direct advantage for men solely through increased unionisation,
-analysis in combination with temporary contracts and family policy reforms sees men experiencing greater benefits than women.
-There is no absolute detrimental effect for either gender as women's employment in standard contracts remains stable, however,
-it may be one factor towards an increase in relative inequality for women which would agree with the findings of @Davies2022.[^dieckhoff-limit]
-
-[^dieckhoff-limit]: The study's causal explanatory power is limited somewhat by its aggregate approach across countries precluding analysis for nation-specific labour market contexts or to disaggregate the gender findings.
-
-@Cardinaleschi2019 investigate turn to collective organisation's effects on the gender wage gap in Italy.
-They identify occupational segregation as the principal cause of wage disparity as opposed to educational inequalities,
-with women predominantly working in more 'feminised' industries.
-
-While collective bargaining practices specifically targeting managerial representation and wages show some reduction in the wage gap,
-the impact is only marginally significant.[^cardinaleschi-msg]
-The authors suggest a stronger mix of policy approaches such as including human capital development through well targeted active labour market policies.
-
-[^cardinaleschi-msg]: The marginal significance primarily stems from internal heterogeneity which only significantly affects the median part of wage distributions while the rest remains insignificant.
-
-@Ferguson2015 specifically examines the relationship between unionisation and the representation of women and minority groups in management positions within U.S. companies.
-It finds that while stronger unionisation is associated with higher representation of both in management and in the overall workforce,
-the effects are only marginally significant.
-Further, the study acknowledges potential confounding factors, such as selection biases,
-should more union-friendly enterprises attract individuals who support diversity.[^ferguson-limit]
-
-[^ferguson-limit]: The study bases its analysis on union elections, and thus can not exclude self-selection effects of people joining more heavily unionised enterprises rather than unionisation increasing representation.
-
-### Workfare programmes
-
-@Whitworth2021 analyse the repercussions of a UK work programme on spatial factors of job deprivation or opportunity increases.
-Despite adopting a quasi-market model rewarding positive employment outcomes,
-the study contends that the policy's non-spatial execution inadvertently exacerbates existing spatial disparities.
-Applying concepts of "social creaming" and "parking" to spatial analysis,
-the study shows that areas already suffering from job deprivation experience further deterioration under the programme.
-Meanwhile, wealthier regions may receive beneficial impacts in an attempt to enhance programme performance metrics,
-leading to the conclusion of bad targeting through neglecting spatial components.
-
-@Li2022 conduct a study on the effects of existing inequalities on the outcomes of a work programme in India intended to provide job opportunity equality for already disadvantages population.[^li-nrega]
-Using land ownership inequality as a proxy for initial inequality levels,
-it finds a significant negative relationship to the provision of jobs through the programme.[^li-indicator]
-Primarily the authors identify resistance from landlords against programme expansion as the underlying mechanism ---
-its expansion often precedes wage hikes in the districts ---
-as they leverage their disproportionate power to influence politics or diminish collective bargaining possibilities.
-
-[^li-nrega]: The National Rural Employment Guarantee Scheme (NREGA) is a workfare programme implemented in India, the largest of its kind, which seeks to provide 100 days of employment for each household per year. It was rolled out from 2005 over several phases until it reached all districts in India in 2008.
-[^li-indicator]: The study uses the Gini coefficient as an indicator for these initial conditions of ownership inequalities and thus concludes the programme being significantly compromised through higher pre-existing capital inequality. The findings also hold true when measuring land inequality as the share of land owned by the top 10 percent of holders.
-
-### Social protection
-
-
-
-@Wang2016 conduct a comparative study on social assistance benefits and wages across 26 OECD countries from 1990 to 2009.
-The analysis finds an overall increase in real minimum income benefits in most countries, mostly excepting Eastern European countries,
-attributing these changes to deliberate policy adjustments rather than inflation.[^wang-channel]
-However, results for income replacement rates vary,
-with some countries experiencing decreases despite rising real benefits.
-The authors suggest this discrepancy is explained by the decoupling of benefit levels from wages and the absence of wage considerations in policy changes, potentially exacerbating income inequalities between income groups.
-
-[^wang-channel]: The study calculates the rise in real benefit levels by comparing the changes in benefit levels to the changes in consumer prices.
-
-
-@Debowicz2014 evaluate the impact of the cash transfer programme Oportunidades on income inequality in Mexico.[^debowicz-oportunidades]
-The study reports an increase of 23 percent in the average income of the poorest households,
-attributed to both the direct cash influx and the beneficial effect for parents keeping their children in school.
-Over the long term, there is a benefit for children whose human capital increases due to the programme.
-There are also indirect benefits for children whose human capital did not increase,
-due to increased scarcity of unskilled labour as a secondary effect,
-thus suggesting a positive economic impact if correctly targeted.
-
-[^debowicz-oportunidades]: The Oportunidades programme conditions its cash benefits on the school attendance of a household's children. While this review focuses on the results for income inequality using the Gini coefficient, other indicators are also reported in the full study.
-
-
-Investigating the impact of childcare subsidies on the female labour force,
-@Hardoy2015 find an overall increase in female labour supply (roughly 5 percent),
-though without significant impact on mothers already participating in the labour market.
-Notably, the impact was greatest for low-education mothers and low-income households since their daycare expenditures constitute a larger budgetary share,
-though it may also be due to lower pre-intervention employment rates for those households.[^hardoy-limits]
-
-[^hardoy-limits]: There was a concurrent increase in childcare capacity which potentially biases the results due to the simultaneous cost reductions and capacity increases. Interestingly, significant effects were only observed among native mothers when disaggregating between migrant and native-born, though reasons for the distinction remain unspecified.
-
-
-@Carstens2018 analyse the factors affecting labour force participation rates of mentally ill individuals in the US,
-correlating it with various Medicaid programmes.
-Key motivators for participation are determined to be reduced depression and anxiety for which positive predictors are increased responsibility, problem-solving and stress management.
-Identified barriers include increased stress, discrimination based on mental state, loss of free time, tests for illegal drugs and loss of government benefits.
-Medicaid ABD (Aged, Blind, Disabled) additionally had a strong negative correlation with participation,
-due to its requirement of demonstrating inability to work creating a negative dependency loop.[^carstens-limits]
-
-[^carstens-limits]: This loop may create a benefit trap with disability determined through abstention from the labour market and benefits disappearing when entering the labour force. The overall identified barriers may, however, be skewed upwards due to an over-representation of racial minorities, women and older individuals in the study's relatively small sample size.
-
-
-
-@Cieplinski2021 conducted a simulation study on a working hours reduction and introduction of UBI in Italy,
-finding that both decreased overall income inequality through different mechanisms.
-UBI sustains aggregate demand, promoting more equitable income distribution,
-while working time reductions significantly decrease aggregate demand through lower individual incomes,
-but in turn increases overall labour force participation and employment.[^cieplinski-notes]
-
-[^cieplinski-notes]: Through these mechanisms environmental outcomes are also oppositional, with work time reduction decreasing the ecological footprint while UBI increases it. However, these results only hold for the assumption that workers will have to accept both lower income and consumption levels (through stable labour market entry) under reduction of working time.
-
-## Structural factors
-
-{{< portrait >}}
-
-::: {#tbl-findings-structural}
-
-```{python}
-# | label: tbl-findings-structural
-from src.model import validity
-from src.model.validity import strength_for # Careful: ruff org imports will remove
-
-findings_structural = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/findings-structural.csv")
-fd_df = validity.add_to_findings(findings_structural, df_by_intervention)
-
-outp = Markdown(
- tabulate(
- fd_df[
- [
- "area of policy",
- "internal_validity",
- "external_validity",
- "findings",
- "channels",
- ]
- ].fillna(""),
- showindex=False,
- headers=[
- "area of policy",
- "internal strength",
- "external strength",
- "main findings",
- "channels",
- ],
- tablefmt="grid",
- )
-)
-del findings_structural, fd_df
-outp # type: ignore[ReportUnusedExpression]
-```
-
-Note: Each main finding is presented with an internal strength of evidence and an external strength of evidence which describe the combined validities of the evidence base for the respective finding.
-Validities are segmented to a weak (-) evidence base under a validity ranking of `{python} strength_for(r"\+")`,
-evidential (+) from `{python} strength_for(r"\+")` and under `{python} strength_for(r"\++")` and strong evidence base (++) for `{python} strength_for(r"\++")` and above.
-
-Summary of main findings for structural policies
-
-:::
-
-{{< landscape >}}
-
-### Fiscal growth and trade liberalisation
-
-Complementing their research on institutional labour regulation,
-@Adams2015 explore how business regulation, credit regulation and FDI impact long-term income inequality in developing countries.
-They find a positive correlation between FDI and income inequality,
-arguing for it to be unlikely to generate positive welfare effects in developing countries primarily through bad targeting,
-while business regulations show more mixed outcomes.[^adams-targeting-fdi]
-However, as with their results for labour regulation,
-the regional focus of the results makes it hard to disaggregate individual causes for individual national contexts.
-
-[^adams-targeting-fdi]: The primary channel, they argue, is FDI often operating on the wrong targeting incentive structure. It would only be able to generate more equity when correctly targeting the creation of rooted connections from the local economy to surrounding economies instead of moving capital directly to surrounding economies.
-
-@Liyanaarachchi2016 investigate the effects of trade liberalisation on income inequality and absolute poverty in Sri Lanka, using a simulation model.
-They find complete elimination of tariffs resulting in absolute poverty reduction,
-with tariff elimination combined with resulting fiscal policy responses for budget balancing having more mixed effects but still an absolute reduction in poverty.
-Income inequality, however, sees short-term increases in most sectors and in all sectors over the long term.
-The study identifies rising wage differences,
-especially increases for managers, professionals and technicians,
-as well as widening gaps between urban workers,
-while low-income households become more dependent on private or government transfers that do not increase with the liberalisation.
-
-@Xu2021 look at both trade liberalisation and FDI effects in 38 sub-Saharan countries,
-finding a negative correlation between FDI and income inequality,
-with positive relationships instead found with trade liberalisation, corruption level, political stability and rule of law and education.
-The contradicting findings to @Adams2015 and @Liyanaarachchi2016 might arise due to differences in sample, variables used or the different periods under study.[^xu-adams-contradictions]
-They identify income inequality reductions through FDI benefiting the agricultural sector,
-primarily employing low-skilled labour,
-while trade liberalisation instead creates jobs in other countries through higher import than export rates.
-
-[^xu-adams-contradictions]: While both use a generalized method of moments approach utilizing the Gini indicator and an analysis on the regional level, the latter includes a broader range of independent domestic structural variables.
-Additionally, while @Adams2015 study long-term processes from 1970 to 2012, @Xu2021 use panel data from 2000 to 2015 restricted to sub-Saharan countries, which may account for some of the differences.
-
-@Khan2021 paint a more nuanced picture for trade liberalisation effects in a simulation study on free trade agreements (FTAs) in Pakistan,
-with some trade agreements related negatively to income inequality and others positively,
-for large-scale, regional and bilateral agreements.
-Impacts are more dependent on micro-economic factors:
-The authors identify grain and livestock as the primary channels through which trade agreements affect income inequality,
-as these are the predominant sources of income for poor rural households.
-Farm-worker incomes generally increase if trade agreements increase grain or livestock exports,
-leading to more equitable distribution,
-while inequality increases instead if this does not happen.[^khan-notes]
-While most of these changes are obscured short-term by greater mobility with more even distribution across regions and households,
-in the long term the study finds more equitable distribution if agricultural growth can be sustained.
-
-[^khan-notes]: Additionally, the authors identify some wage compression effects between urban and rural households, with richer urban households often decreasing service and processed food production in this case. Generalizability may also be limited due to this strong focus on production factor reallocations within the context of rural Pakistan.
-
-@Rendall2013 focus on the impacts of structural changes in Brazil, Mexico, Thailand and India 1987 to 2008,
-especially on female labour market participation and the gender wage gap.
-The results are quite divergent, with India having largely stable participation inequality,
-mixed results in Mexico and Thailand and Brazil a stronger change towards equity similar to that of the US,
-identifying the move from mostly physical labour to more service-oriented economies as primary driver.[^rendall-brain-brawn]
-Female wage gap fell most rapidly in Brazil, though widening again since 2005,
-widening in Mexico during the 1990s, closing again more recently,
-and produced more mixed results in Thailand and India.
-The authors argue this disconnect between participation and wage shows the impacts of contextually different structural labour market changes:
-a quick rise in less physically-oriented occupations in Brazil,
-the introduction of a feminised manufacturing sector Mexico in the 1990s,
-and more subsistence-oriented labour markets with diverging skill structures in Thailand and India.
-
-[^rendall-brain-brawn]: The study uses a framework termed 'brawn' (physical labour) to 'brain' (less physically demanding labour, such as office work and service economy). The concept sees capital displacing brawn in production for transition economies which they find confirmed in all countries, though to different extents.
-As with the study's results for wage gap fluctuations, there are a variety of mediating factors at play in each context, some of which may be unidentified.
-
-@Wang2020 in turn use a simulation to focus on the spatial income inequality effects of terminating subsidies for the agricultural grain sectors in China.
-They see the removal leading to gradual improvements in the industrial economic infrastructure,
-though a short-term rural-urban income inequality increase is observed.
-Long-term the decreases in real wages for rural workers would alleviate,
-increasing the rural income ratio, though with a gap that would remain incompletely closed.[^wang-channels]
-Thus, the authors identify a trade-off between improvements to the national economic output,
-benefited by the removal,
-and rural-urban income disparity,
-benefiting instead more from the subsidies, especially short-term.
-
-[^wang-channels]: Especially for the short-term increase, but also the remaining inequality gap, the study sees the displacement of rural unskilled labour resulting in increased supply of unskilled labour which is challenging to absorb into manufacturing or service sectors as slowing down the process,
-in addition to low price elasticity of agricultural products contributing to an overall decline of rural incomes.
-Thereby the study strongly binds its findings to the structural economic characteristics of the Chinese labour market and its results only hold for the assumption of static national employment.
-
-Finally, @Go2010 model the effects of a wage subsidy targeted at employers of low- and medium-skilled workers on poverty and income inequality in South Africa.
-They find overall income inequality significantly reduced by 0.5 percentage points through an income redistribution due to an increase in formal employment for low- and medium-skilled workers,
-as the subsidy works as an incentive for new job creations.
-An equally significant 1.6 percent of households move out of poverty using an absolute poverty headcount ratio,
-which equally holds for both urban and rural spaces,
-through the targeting being most beneficial for the poorest households through greater income gains and more households being affected.[^go-limits]
-
-[^go-limits]: This approach also restricts the study somewhat by being unable to account for exogenous shocks or remaining unobservables and prior assumptions binding it more closely to the structure of the South African labour market.
-
-The prevalence of equilibrium modelling simulations may exacerbate several limitations:
-A heavy reliance on initial assumptions for results to hold makes these studies susceptible to overlooking exogenous factors or shocks to the system and struggle to accurately represent long-term dynamics.
-Additionally, they often fail to account for the practical challenges to policy implementations through institutional frameworks or political contexts,
-Recognizing such shortcomings is crucial when assessing the reliability and applicability of their findings,
-as will be discussed in considering study robustness.
-
-
-
-### Infrastructure and technological change
-
-@Kuriyama2021 analyse the effects of Japan's energy sector decarbonisation efforts on spatial inequalities.
-While employment in general is positively affected, especially rural sectors benefit from increased employment probability.
-They identify the renewable energy sector's strong entrenchment in rural areas for large-scale projects such as wind, geothermal or large-scale solar power generation.
-At the same time, for the context of Japan some new inequalities may be generated between different regions due to new barriers such as limited energy transmission line capacities or potentially mismatched locations of demand and supply.[^Kuriyama-limits]
-
-[^Kuriyama-limits]: The strong connection to Japanese context also provides one limitation to the study's generalizability, along with carrying strong assumptions about initial and future employment numbers and power generation amounts.
-
-@Stock2021 explores both inclusive and exclusionary effects of infrastructure development,
-including training and temporary employment for local semi-/unskilled labour under the 'gender inclusive' development of a solar park in India,
-in an observational study on achieving micro-level equality through regional uplifting.
-They primarily conclude an increase in inequality through socio-economic exclusion and especially exacerbated impacts for women of lower castes.
-Redistributive potential was stymied through capture by (female) village elites,
-while only an insignificant amount of women from local villages found employment at the park,
-predominantly from the dominant caste.[^stock-notes]
-Though not able to make causal inferences because of the study design,
-the author suggests this may be an example of institutional design neglecting structural power relations and individual agency, especially intersectional between gender and caste.
-
-[^stock-notes]: While acquiring basic additional skills, none of the women participating in training remained connected to the operators of the solar park and none were hired, which disconnects the targeting of training from that of the eventual labour force participants.
-
-
-Focusing on transport infrastructure investments, @Adam2018 model the effects on household income inequalities in rural Tanzania.
-The effectiveness hinges significantly on the financing scheme employed:
-Rural households are generally worse off when developments are deficit-financed or paid through tariff revenues,
-while benefiting from financing through consumption taxes or by external aid.
-The study can not find a Pareto optimum for any of the investment measures for rural and urban locations simultaneously,
-with some worse off in each scheme as much of the increased equity stems from rural workers' movement out of quasi-subsistence agriculture to other locations or other sectors.[^adam-limits]
-
-[^adam-limits]: While the study does create causal inferences its modelling approach limits it to representing the limited subset of these financing schemes,
-as well as to the assumption of no additional population growth for the results to hold.
-
-@Blumenberg2014 examines the spatially motivated 'Moving to Opportunity' programme's impacts on employment for disadvantaged US households,
-comparing it to those of owning an automobile.
-No increase in employment probability was found for participants,
-while vehicle ownership correlated with improved employment outcomes for low-income households and in 'transit-rich' areas.[^blumenberg2014]
-While access to improved transit is related to employment probability, the move to a transit-rich area alone does not increase it significantly,
-reflecting potentially a certain required threshold before it facilitates employment,
-or individuals' strategic relocation to make better use of public transport.
-Ultimately, the findings signal the need for improved individual access to automobiles in disadvantaged households or extensive transit network upgrade which have to cross an efficiency threshold.
-
-[^blumenberg2014]: The programme provided vouchers to randomized households for relocation to a geographically unrestricted area,
-or specifically to a low-poverty area (treatment group),
-some of which were also located in 'transit-rich' areas well-connected to public transport systems.
-The study's strong oversampling of female participants (98%) may obscure intersectionality between spatial and gender disadvantages,
-as well as retaining some possibility for endogeneity bias through unobserved factors such as individual motivation or ability.
-
-
-Looking at the effects of technological change such as the introduction of legal access to contraceptive measures for women in the US instead,
-@Bailey2012 evaluate the effects on the gendered hourly working wage distribution.
-Of the overall closing of the pay gap between 1980 and 2000, this access from an early age contributed nearly 10 percent in the 1980s and over 30 percent in the 1990s,
-thus contributing an estimated third of total female wage during throughout.
-Primarily, the study identifies greater educational attainment, occupational upgrading, increased individual agency over human capital and career investments and increased labour market experience due to fewer early exits as the underlying mechanisms.[^Bailey-limits]
-
-[^Bailey-limits]: With the structure of the data, the study cannot capture access to contraception beyond age 20, restricting the window of analysis especially on women under 21, as well as not being able to control for exogenous social multiplier effects such as changed employer hiring or promotion patterns, changed marriage and childbearing expectations or overarching paradigmatic norms concerning women's work.
-
-### Education access
-
-@Adams2015 also analyse the effects of school enrolment in developing countries between 1970 and 2012,
-finding it positively related with equitable income distribution and thus argue for the effectiveness of well-targeted education policies.
-They especially identify additional enrolment as increasing the capacity of public administration practitioners,
-in turn leading to the creating of effective policies which are more adapted to the developing countries' institutional contexts.
-Thus, education-oriented policies here are seen as two-fold improvements:
-as short- and medium-term increase of human capital, but also as long-term capacity-building measures.
-
-
-
-@Mukhopadhaya2003 turn to Singapore's educational schemes awarding scholarships and monetary benefits for higher educational achievements,
-finding that, due to non-optimal targeting, they may in fact exacerbate existing inequalities for migrants in the country.[^singapore-migrants]
-High-income households (predominantly non-migration households) experience over-representation in high-achievement education brackets,
-and thus create a policy of bad targeting when those in turn receive income inequality exacerbating monetary benefits.
-They thus argue that the Singaporean policies, aimed at providing equal educational opportunity for all,
-may in fact further disadvantage lower-income households with low-education parental backgrounds, thereby increasing inequality.
-
-[^singapore-migrants]: Inequality for migrants in Singapore is relatively high, due to existing income inequalities between the predominant occupations, as well as national migration policies which further stimulate occupational segregation. The study specifically examines two programmes, the 'Edusave Entrance Scholarship for Independent Schools' (EESIS), awarding the top 25% students full secondary education scholarships, and the 'Yearly Awards' scheme awarding cash benefits to the top 5% students that are not EESIS participants each year. The 'Yearly Awards', through prior EESIS exclusion has less of a vicious circle targeting effect than EESIS itself.
-
-
-@Delesalle2021 examines the effects of a universal primary education policy on labour market outcomes in rural Tanzania,
-finding generally positive impacts which also differ along both spatial and gender lines:
-the greatest positive effects are seen for non-agricultural, self-employed or wage work,
-while men tend to move from agricultural to non-farm wage work and rural women experience an increased probability to work in agriculture and to work formally.[^delesalle-indicators]
-
-
-[^delesalle-indicators]: The study uses consumption of households as its only indicator for the policy returns, which, along with its inability to directly identify those who comply with the intervention due to having to construct returns for household heads only, should be seen as its primary limitations. Additionally, there may be a 'villagization' effect by bringing people together in the community villages for the intervention which may bias results.
-
-
-@Pi2016 conduct a study on the impacts of allowing increased access to social welfare provisions and education to urban migrants in China,
-looking at the effects on wage inequality between skilled and unskilled sectors and workers.[^pi-skilled-unskilled]
-Reforms to increase social security access and education for urban migrants decreases sectoral wage inequality only if the skilled sector is more capital intensive than the unskilled sector.
-There are several limitations to the study such as no disaggregation between the private and the (important for the Chinese economy) public sector,
-job searching not being part of the model, and, most importantly,
-a severely restricted generalizability due to the reform characteristics being strongly bound to the institutional contexts of Chinese *hukou*[^hukou] systems.
-
-[^pi-skilled-unskilled]: It uses skilled-unskilled inequality instead of rural-urban inequalities since the real wages of the rural sector are already much lower in China,
-making comparisons along the 9th to 10th decile ratios more difficult.
-
-[^hukou]: The hukou system generally denotes a permission towards either rural land-ownership and agricultural subsidies for the rural hukou or social welfare benefits and employment possibilities for the urban hukou, and children of migrants often have to go back to their place of registered residence for their college entrance examination. This study looks at reforms undoing some of the restrictions under the system.
-
-@Suh2017 examines the effects of education-focused policies specifically on married women's employment in South Korea,
-finding that they significantly increase their employment probability, as well reiterating an overall negative correlation between female labour force participation with income inequality.
-At the same time, policies focused on education alone, while a necessary condition, are not yet sufficient conditions,
-with both married women's family size and structure acting as mediating variables.
-Finally, the study identifies intergenerational impacts as important dimension, with the policies also positively correlating to daughters' education levels.
-
-
-
-
-@Coutinho2006 focus on the impacts of special education for young men and women with disabilities in the US,
-finding that the intervention benefits men significantly more than women and those differences being greatest in more disadvantaged groups.
-Young women with disabilities were significantly less likely to be employed,
-earned less than male groups,
-had lower likelihood of obtaining high school diplomas and were more likely to be biological parents.[^coutinho-notes]
-The study highlights the need of integrating efforts to strengthen personal agency to remain in education longer and delay biological parenthood,
-with transition services focused on self-advocacy and self-determination for young women to supplement structural education preconditions.
-
-[^coutinho-notes]: While these differences were marginal for high-achiever education, they were became significant for lower-achieving and special needs subgroups. Additionally, more women were employed in clerical positions and significantly more men in technical or skilled positions, both for the special education and control groups. The study could not include students with severe impairments due to using self-reporting for sampling, which may also have introduced some selection bias into the results.
-
-On the other hand, @Shepherd-Banigan2021 qualitatively evaluate the effects of vocational and educational training being provided to disabled veterans in the US
-and find the reverse situation of the interventions helping to strengthen individual agency, autonomy and motivation,
-but skill development efforts being impeded if there is the possibility of disability payment loss when the conditions for potential job acquisition are created.[^shepherd-notes]
-The study thus sheds light on the intersection between structural efforts to provide a facilitating environment,
-such as investigated by @Coutinho2006 and @Suh2017,
-but also specifically highlights the necessity of a well-targeted structural environment,
-concurring with the findings by @Carstens2018.
-
-[^shepherd-notes]: The primary identified barriers to return to work efforts are an individual's health problems as well as various programmes not accommodating the needs of disabled veteran students,
-while the primary facilitators are financial assistance provided for education as well as strengthened individual agency through motivation. Participants being restricted to veterans with a caregiver may oversample more substantial impairments.
-
-With a similar focus, @Poppen2017 look at the specific factors influencing employment probability for disabled people in the US,
-finding that the primary facilitators of successful vocational rehabilitation programmes are the participation in a youth-transition programme and having made use of additional optional rehabilitation services,
-while barriers were larger for people receiving social security benefits, as well as female participants.[^poppen-notes]
-Thus, the study reiterates the need for multi-dimensional programmes and especially highlights the gender dimension within educational efforts.
-
-[^poppen-notes]: Additionally, having a mental illness or traumatic brain injury as well as having multiple disabilities or an interpersonal or self-care impediment were significantly negatively correlated with employment probability. The study has limits to its generalizability, sampling data from a single US state.
-
-@Gates2000 also conducted a qualitative study on the specific mechanisms of workplace accommodation increasing successful return to work programmes,
-especially the disaggregation into social and technical components, as well as including a disclosure and psycho-educational plan.
-The findings highlight the importance of considering the social component of return to work efforts,
-with programme failure often being correlated to sole reliance on the functional aspect.[^gates-notes]
-
-[^gates-notes]: The primary barrier identified is relationship issues, not functional ones, with supervisors playing a key role for the success of accommodation programmes, while agency-strengthening measures such as a concrete training plan involving the worker but also other key workplace players become essential drivers, and a major channel becomes 'who' is involved, not just 'what' is involved. The generalizability of the findings may be limited due to its small non-randomized sample.
-
-@Rosen2014, in an experimental study on benefits and vocational training counselling for disabled veterans in the US,
-find a significantly positive correlation between participation and return to work through the average hours worked,
-though the study is not able to clearly identify the exact mediating variables.[^rosen-notes]
-@Thoresen2021 agree with these findings in a mixed-methods study to investigate the effects of vocational training programmes on income inequality and hours worked for participants in Australia,
-finding that the intervention is significantly correlated with reducing inequality in both dimensions, though not fully closing the gap.
-Especially the income distribution is significantly positively affected, more so for the incomes of female participants and participants which received a disability pension.[^thoresen-limits]
-
-[^rosen-notes]: The change in hours worked is measured through a follow-back calendar which compares previous time worked to that in the 28 days preceding the study's final measurement. And while the intervention clearly targets both environmental factors and personal agency, neither beliefs about work, beliefs about benefits, nor services for mental health or substance abuse significantly impacted the outcomes.
-
-[^thoresen-limits]: Generalizability of the study may be impacted by its small control sample and non-representative sample on a national level, and should thus be taken care of to not overestimate the its explanatory power.
-
-
-The studies thus not only reinforce recommendations for strength-based approaches, emphasising the benefits of work,
-but also highlight the targeting importance of subsidy programmes in general on the one hand,
-in the worst case reducing equity through bad targeting mechanisms,
-and their negative reinforcement effects widening existing inequalities of gender, age and racial discrimination through such targeting on the other.
-
-## Agency factors
-
-{{< portrait >}}
-
-::: {#tbl-findings-agency}
-
-```{python}
-# | label: tbl-findings-agency
-from src.model import validity
-from src.model.validity import strength_for # Careful: ruff org imports will remove
-
-findings_agency = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/findings-agency.csv")
-fd_df = validity.add_to_findings(findings_agency, df_by_intervention)
-
-outp = Markdown(
- tabulate(
- fd_df[
- [
- "area of policy",
- "internal_validity",
- "external_validity",
- "findings",
- "channels",
- ]
- ].fillna(""),
- showindex=False,
- headers=[
- "area of policy",
- "internal strength",
- "external strength",
- "main findings",
- "channels",
- ],
- tablefmt="grid",
- )
-)
-del findings_agency, fd_df
-outp # type: ignore[ReportUnusedExpression]
-```
-
-Note: Each main finding is presented with an internal strength of evidence and an external strength of evidence which describe the combined validities of the evidence base for the respective finding.
-Validities are segmented to a weak (-) evidence base under a validity ranking of `{python} strength_for(r"\+")`,
-evidential (+) from `{python} strength_for(r"\+")` and under `{python} strength_for(r"\++")` and strong evidence base (++) for `{python} strength_for(r"\++")` and above.
-
-Summary of main findings for agency-based policies
-
-:::
-
-{{< landscape >}}
-
-### Occupational segregation and social exclusion
-
-@Emigh2018 evaluate the effects of direct state transfers to people in poverty in the post-socialist market transition economies of Hungary, Romania and Bulgaria,
-finding that overall direct transfer levels on their own are, while beneficial against absolute poverty in the short-term,
-often too small to eliminate long-term adverse effects of market transitions.
-The study identified short-term poverty-eliminating effects, consistent with an institutionalist perspective,
-though, also consistent with what the study terms the 'underclass' perspective,
-these benefits providing having no overarching impacts on the deprivations members of disadvantaged groups face.[^emigh-notes]
-While it is missing matching long-term panel data for a solid conclusion the results also suggest little evidence for the neoclassical proposition of welfare dependency being generated.
-
-[^emigh-notes]: This is especially noteworthy in this context since the study also finds a strong correlation between poverty and socio-demographic characteristics such as low education, larger households and Roma households.
-
-@Bartha2020 focus on gendered employment inequalities in an observational study on the long-term care policy trajectories of European countries,
-finding that few still fit one of the ideal-type households of male bread-winner, unsupported double-earner, or supported double-earner households.
-No countries fall into the male bread-winner category,
-and only half the countries into either supported double-earner, mostly prevalent in Western Europe and Scandinavia,
-or unsupported double-earner, more prevalent in Southern and Eastern Europe.
-Especially in the latter model women take on more unpaid care work,
-though the prevalence is visible in all models which, the authors' suggest,
-plays an important role in explaining the persistent employment rate gap.[^bartha-notes]
-
-[^bartha-notes]: With the policies pursued such as pensions, provision of residential/at-home care facilities, regulation and social protection, where female unpaid care work is reducing, the 'familialization' of care work is taken on as cash-for-care work by migrants. While possibly increasing female labour force participation, the study does not find the work sustainable or providing decent work, often remaining poorly regulated, low-paid and reinforcing gender dynamics in migrant communities.
-
-@Shin2006 specifically focus on the effects of wage-setting or fertility differences for teachers,
-finding that providing relatively higher wages compared to non-teaching processions significantly increases female labour force participation,
-though the strongest predictor remains the possession of an education-focused higher education and higher education in general.
-The presence of a new-born baby also significantly decreases labour force participation, having almost double the effect in teaching professions,
-identifying the low wages minimizing the exit costs as those leaving the labour market experience relatively lower temporary wage losses.[^shin-notes]
-
-[^shin-notes]: The presence of a new-born baby is not found to have an effect on job choices between teaching and non-teaching, however. The study can not make statements on male teachers due to the data being restricted on female teachers' panel data.
-
-In a mixed-methods study, @Standing2015 look at the effects of providing UBI for villages in India,
-finding that they generally agree that the intervention significantly reduces household debts,
-but that beyond the monetary benefits it carries 'emancipatory value' increasing economic security and empowerment.
-In a qualitative evaluation the study identifies reduced dependency risks,
-allowing long-term saving, avoidance of new debts, or, if debts have to be incurred, less exploitative forms of borrowing,
-and increasing collective forms of risk taking through reducing the local scarcity of money by infusing it into the community.[^standing-notes]
-
-[^standing-notes]: The UBI reduces dependency risk primarily to lenders with high associated fees (through allowing repayment of existing debts) and not having to work for the lender directly (or provide part of wages). The decreased scarcity also allows a shift to institutionalized saving and thus increased shock event resilience.
-
-
-@Clark2019, in an experimental study providing vouchers for childcare to poor women in urban Kenya,
-find similar positive effects on economic empowerment for married mothers through increased employment probability and hours worked.
-For single mothers, while the study sees a negative effect on hours worked, the incomes remain stable,
-suggesting an pre-intervention increased workload compared to married mothers,
-with the intervention providing the ability to shift to jobs with more regular hours instead.[^clark-notes]
-
-[^clark-notes]: The shift to more regular hours is made possible through childcare provisions where before they may have been incompatible with personal childcare, though the study is restricted to effects within a period of one year, limiting its long-term conclusions.
-
-@Hojman2019 see similar results in urban Nicaragua,
-where the provision of free childcare significantly increased employment probability of the mothers,
-reflecting the increased parental agency through reducing care work requirements.
-While these results hold regardless of childcare quality,
-for high-quality care there are also significant positive effects on the human capital of children.[^hojman-note]
-
-[^hojman-note]: These results reflect the same effects on children's human capital as providing external child-care stimuli in @Dustmann2012.
-
-### Unconscious bias and discriminatory norms
-
-
-
-@Al-Mamun2014 examine the impacts of micro-finance programme in urban Malaysia on women's economic empowerment,
-finding that the ability to receive collateral-free credit increased female household decision-making and personal economic security.[^almamun-notes]
-The study identifies the increased access to finance but also the establishment of an increased collective agency for the women in organised meetings and trainings
-though the restriction to group loans can negatively affect outcomes through existing obstacles to collective organisation such as racial and socio-demographic barriers.
-
-[^almamun-notes]: The intervention's collateral-free disbursements are restricted to low-income urban individuals, though not specifically gendered.
-
-@Field2019 evaluate a more explicitly gendered experimental intervention granting women increased access to their own financial accounts and training,
-finding that short-term the combination increased female labour force participation and long-term increased the acceptance of women working in affected households and significantly increased female hours worked.[^field-notes]
-The intervention took place on the background of the Indian MGNREGS programme which, though ostensibly mandating gender wage parity,
-often risks discouraging female workers or restricting their agency since earned wages are deposited into a single household account ---
-predominantly owned by the male head of household.[^field-mgnregs]
-The study argues for a newly increased bargaining power through having greater control over one's income ultimately reflecting onto local gender norms themselves.
-
-[^field-mgnregs]: The Mahatma Gandhi National Rural Employment Guarantee Scheme, one of the largest redistribution programmes on the household level in the world, entitling each household to up to 100 days of work per year.
-
-[^field-notes]: The impacts on increased hours worked were concentrated on households where previously women worked relatively lower amounts and with stronger norms against female work, while less constrained households' impacts dissipated over time.
-
-# Robustness of evidence
-
-## Output chronology
-
-The identified literature rises in volume over time between 2000 and 2023,
-with first larger outputs identified from 2014 onwards,
-as can be seen in @fig-publications-per-year.
-While fluctuating overall, with a significantly smaller outputs 2017 and in turn significantly higher in 2021,
-the overall output volume increased throughout this period.
-
-```{python}
-#| label: fig-publications-per-year
-#| fig-cap: Publications per year
-from typing import cast
-
-df_study_years = (
- df.groupby(["author", "year", "title"])
- .first()
- .reset_index()
- .drop_duplicates()
- ["year"].value_counts()
- .sort_index()
-)
-df_study_years = cast(pd.DataFrame, df_study_years) # fix potential type errors
-
-# use order to ensure all years are displayed, even ones without values
-years_range = list(range(df_study_years.index.min(), df_study_years.index.max()+1))
-ax = sns.barplot(df_study_years, order=years_range)
-
-ax.set_ylabel("Count")
-ax.set_xlabel("Year")
-plt.tight_layout()
-ax.tick_params(axis='x', rotation=90)
-ax.set_ylabel("Citations")
-ax.set_xlabel("Year")
-plt.show()
-del df_study_years
-```
-
-Such anomalies can point to a dispersed or different focus during the time span,
-newly arising alternative term clusters which have not been captured by the search query
-or a diversion of efforts towards different interventions or policies.
-Their temporary nature, however, makes non-permanent causes more likely than fundamental changes to approaches or terms which could signal more biased results for this review.
-
-The literature is predominantly based on white literature, with only a marginal amount solely published as grey literature.
-Such a gap in volume seems expected with the database query efforts primarily aimed at finding the most current versions of white literature.
-It also points to a well targeted identification procedure, with more up-to-date white literature correctly superseding potential previous grey publications.
-@fig-citations-per-year-avg shows the average number of citations for all studies published within an individual year.
-
-```{python}
-#| label: fig-citations-per-year-avg
-#| fig-cap: Average citations per year
-df["zot_cited"] = df["zot_cited"].dropna().astype("int")
-df_avg_citations = df.groupby(["year"], as_index=False)["zot_cited"].mean()
-fig, ax = plt.subplots()
-ax.bar(df_avg_citations["year"], df_avg_citations["zot_cited"])
-sns.regplot(x=df_avg_citations["year"], y=df_avg_citations["zot_cited"], ax=ax)
-#ax = sns.lmplot(data=df_avg_citations, x="year", y="zot_cited", fit_reg=True)
-
-ax.set_ylabel("Citations")
-ax.set_xlabel("Year")
-plt.tight_layout()
-years_range = list(range(df_avg_citations["year"].min(), df_avg_citations["year"].max()+1))
-ax.set_xticks(years_range)
-ax.tick_params(axis='x', rotation=90)
-plt.show()
-del df_avg_citations
-```
-
-From the literature sample, several patterns emerge:
-First, in general, citation counts are slightly decreasing over time ---
-a trend which should generally be expected as less time has passed to allow newer studies' contents to be distributed and fewer repeat citations to have occurred.
-Second, larger changes between individual years appear more erratically.
-Taken together, this suggests that, though no overall decrease in academic interest in the topic over time occurred,
-it may point to the volume of relevant output not necessarily rising as steadily as overall output.
-
-Early outliers also suggest clearly influential individual studies having been produced during those years,
-a possibility which may be more relevant during years of more singular releases (such as 2011 and 2013).
-This is because, as @fig-publications-per-year showed, the overall output was nowhere near as rich as in the following years, allowing single influential works to skew the visible means for those years.
-
-## Validity ranking
-
-Finally, following @Maitrot2017, the relevant studies are ranked for their validity.
-Here, a 2-dimensional approach is taken to separate the external validity from the internal validity of the studies.
-The ranking process then uses the representativeness of a study's underlying dataset,
-from a non-representative survey sample, through a sub-nationally representative sample, a nationally representative and the use of census data,
-to arrive at a ranking between 2.0 and 5.0 respectively.
-Similarly, the studies are ranked for internal validity using the study design,
-with only quasi-experimental and experimental studies receiving similar rankings between 2.0 and 5.0 depending on the individually applied methods due to their quantifiability,
-while observational and qualitative studies go without an internal validity rank (0.0) due to the more contextual nature of their analyses.
-For a full list of validity ranks, see @appbtbl-validity-external and @appbtbl-validity-internal.
-
-Using the validity ranking separated into internal and external validity for each study,
-it is possible to identify the general make-up of the overall sample,
-the relationship between both dimensions and the distribution of studies within.
-
-@fig-validity-relation shows the relation between each study's validity on the internal dimension and the external dimension,
-with experimental studies additionally distinguished.
-Generally, studies that have a lower internal validity, between 2.0 and 3.5, rank higher on their external validity,
-while studies with higher internal validity in turn do not reach as high on the external validity ranking.
-
-```{python}
-#| label: fig-validity-relation
-#| fig-cap: "Relation between internal and external validity"
-
-plt.figure().set_figheight(5)
-sns.violinplot(
- data=validities,
- x="Internal Validity", y="External Validity", hue="design",
- cut=0, bw_method="scott",
- orient="x"
-)
-sns.swarmplot(
- data=validities,
- x="Internal Validity", y="External Validity", legend=False,
- color="darkmagenta",
- s=4
-)
-```
-
-Studies with an internal validity ranking of of 3.0 (primarily made up of difference-in-difference approaches) and an internal ranking of 5.0 (randomized control trials) have the same tight clustering around an external validity between 4.0 (national) and 5.0 (census-based), and 2.0 (local) and 3.0 (subnational), respectively.
-This clearly shows the expected overall relationship of studies with high internal validity generally ranking lower on their external validity.
-
-The situation is less clear-cut with the internal rankings of 2.0 (primarily ordinary least squares) and 4.0 (primarily instrumental variable),
-which show a larger external validity spread.
-For 2.0-ranked studies, there is an overall larger spread with most using nationally representative data,
-while a significant amount makes use of census-based data and others in turn only being subnationally representative.
-Studies ranked 4.0 internally have a higher heterogeneity with the significant outlier of @Thoresen2021,
-which had the limitation of its underlying data being non-representative.
-
-Looking at the overall density of studies along their external validity dimension,
-@fig-validity-distribution reiterates this overall relationship with internal validity.
-It additionally shows that studies with low internal validity make up the dominant number of nationally representative analyses and the slight majority of census-based analyses,
-while locally or non-representative samples are almost solely made up of internally highly valid (ranking 4.0 or above) analyses,
-again with the exception of @Thoresen2021 already mentioned.
-
-```{python}
-#| label: fig-validity-distribution
-#| fig-cap: "Distribution of internal validities"
-
-sns.displot(
- data=validities,
- x="External Validity", hue="Internal Validity",
- kind="kde",
- multiple="fill", clip=(0, None),
- palette="ch:rot=-0.5,hue=1.5,light=0.9",
- bw_adjust=.65, cut=0,
- warn_singular = False
-)
-```
-
-Looking at the data per region, census-based studies are primarily spread between Latin America and the Caribbean, as well as Europe and Central Asia.
-Meanwhile, studies using nationally, subnationally or non-representative data then to have a larger focus on North America, as well as East Asia and the Pacific.
-A slight trend towards studies focusing on evidence-based research in developing countries is visible,
-though with an overall rising output as could be seen in @fig-publications-per-year, and the possibly a reliance on more recent datasets, this would be expected.
-
-## Regional spread
-
-As can be seen in @fig-region-counts, taken by region for the overall study sample,
-the evidence base receives a relatively even split between the World Bank regional country groupings with the exception of the Middle East and North Africa (MENA) region,
-in which fewer studies have been identified.
-
-```{python}
-#| label: fig-region-counts
-#| fig-cap: Studies by regions analysed
-
-by_region = (
- df[["region"]]
- .assign(
- region = lambda _df: (_df["region"]
- .str.replace(r" ?; ?", ";", regex=True)
- .str.strip()
- .str.split(";")
- )
- )
- .explode("region")
- .reset_index(drop=True)
-)
-ax = sns.countplot(by_region, x="region", order=by_region["region"].value_counts().index)
-plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
- rotation_mode="anchor")
-plt.show()
-del by_region
-
-def regions_for_inequality(df, inequality:str):
- df_temp = df.loc[(df["inequality"] == inequality)]
- return sns.countplot(df_temp, x="region", order=df_temp["region"].value_counts().index)
-```
-
-Most studies come from a context of East Asia and the Pacific, though with an almost equal amount analysing Europe and Central Asia.
-With slightly fewer studies, the contexts of North America, Sub-Saharan Africa follow for amount of anlalyses,
-and in turn Latin America and the Caribbean and South Asia with an equal amount of studies for each region.
-
-The lower amount of studies stemming from a MENA context can point to a variety of underlying causes:
-First, it is possible that there is simply not as much evidence-based analysis undertaken for countries in the region as for other national or subnational contexts,
-with research either following a more theoretical trajectory, or missing the underlying data collection that is available for other regional contexts.
-
-However, it cannot be ruled out that the search protocol itself did not capture the same depth of analytical material as for other contexts,
-with each region often having both a specific focus in policy-orientations and academically,
-and in some cases also differing underlying term bases.
-Such a contextual term differences may then not be captured adequately by the existing query terms and would point to a necessity to re-align it to the required specifics.
-
-One reason for such a differentiation could be a larger amount of grey literature captured compared to other regions,
-which may be utilising less established terms than the majority of captured literature for policy implementations.
-Another reason could be the actual implementation of different policy programmes which are then equally not captured by existing term clusters.
-
-# Discussion
-
-```{python}
-#| label: discussion-prep-inequality-df
-#| echo: false
-# dataframe containing each intervention inequality pair
-df_inequality = (
- df[["region", "intervention", "inequality"]]
- .assign(
- Intervention = lambda _df: (_df["intervention"]
- .str.replace(r"\(.+\)", "", regex=True)
- .str.replace(r" ?; ?", ";", regex=True)
- .str.strip()
- .str.split(";")
- ),
- inequality = lambda _df: (_df["inequality"]
- .str.replace(r"\(.+\)", "", regex=True)
- .str.replace(r" ?; ?", ";", regex=True)
- .str.strip()
- .str.split(";")
- )
- )
- .explode("Intervention")
- .explode("inequality")
- .reset_index(drop=True)
-)
-```
-
-Turning to the available studies from a perspective of inequalities,
-@tbl-inequality-crosstab breaks down the individually targeted inequalities per intervention type.
-
-```{python}
-#| label: tbl-inequality-crosstab
-#| tbl-cap: Intervention types by the inequalities targeted
-
-df_temp = df_inequality.loc[
- (df_inequality["inequality"] == "income")
- | (df_inequality["inequality"] == "gender")
- | (df_inequality["inequality"] == "spatial")
- | (df_inequality["inequality"] == "disability")
- | (df_inequality["inequality"] == "ethnicity")
- ]
-df_temp = df_temp.rename(columns={"inequality": "Inequality"})
-tab = pd.crosstab(df_temp["Intervention"], df_temp["Inequality"],
- margins=True).reindex(["income", "gender", "spatial", "ethnicity", "disability"], axis="columns").sort_values("income", ascending=False)
-del df_temp
-tab
-```
-
-Most studies focus on some indicator of income inequality within national or regional contexts.
-The second most analysed inequality is that of gender,
-followed by spatial inequalities, disabilities, ethnicities, age, inequalities of migration, education and intergenerational issues.
-
-Only a small amount of studies carry analysis of inequalities in the world of work surrounding migration,
-generational connections, age and education into the world of work.
-Age-related inequalities prominently factor into studies as an intersection with disability,
-in focusing on the effects of older people with disabilities on the labour market [@Kirsh2016].
-Studies that solely or mainly target age-related inequalities themselves often do so with a stronger focus on the effects on seniors' health outcomes and long-term activation measures,
-with some extending into the effects of differentiated pension systems.[^pension-studies]
-Equally, for migration few studies can strictly delineate it from racial inequalities or considerations of ethnicity.
-
-[^pension-studies]: Studies focusing on the effects of pensions themselves often do not intersect back into outcomes within the world of work. For an overview on pensions and health effects, see @VanDerHeide2013; for pensions and other intersectional inequalities, see for example @Zantinge2014.
-
-Thus, for the current state of the literature on analyses of policy interventions through the lens of inequality reduction within the world of work,
-there are remaining gaps of academic lenses for generational inequalities, age-related inequalities, educational inequalities and inequalities of migration processes when looking at the quantity of output.
-Care should be taken not to overestimate the decisiveness of merely quantified outputs ---
-multiple studies with strong risk of bias may produce less reliable outcomes than fewer studies with stronger evidence bases ---
-however, it does provide an overview of the size of evidence base in the first place.
-
-
-
-Looking into the prevalence of individual interventions from the gender inequality dimension,
-the crosstab shows that interventions on paid leave, subsidies, collective bargaining, and education received the most attention.
-Thus a slight preference towards institutional and structural interventions is visible,
-though the dimension seems to be viewed from angles of strengthening individual agency just as well,
-with subsidies often seeking to nourish this approach,
-and training, and interventions towards financial agency also being represented in the interventions.
-
-
-Interventions affecting spatial inequalities are often also primarily viewed through indicators of income.
-Interventions aiming at reducing spatial inequalities primarily base themselves on infrastructural changes,
-which aligns with expectations of the infrastructural schism between urban and rural regions.
-Additionally, education interventions target spatial inequalities,
-with the effects of minimum wage, work programmes, interventions strengthening financial agency, trade liberalization and training playing a reduced role.
-
-This can pose a problem, as even non-spatial policies will almost invariably have spatially divergent effects which should be taken into account to avoid worsening issues:
-such as was seen in the further exclusion of already disadvantaged women from employment, infrastructure and training opportunities in India under bad targeting and elite capture [@Stock2021],
-or further deprivation of already disadvantaged regions in the UK work programme [@Whitworth2021].
-Rural communities relying on agricultural economies in particular may be vulnerable to exogenous structural shock events such as climate change, which may thus need to be a focal point for future structural interventions [@Salvati2014].
-
-The results agree with the systematic review of income, employment and poverty correlations by [@Perez2022],
-in that employment plays a significant in spatial disadvantages,
-however with different primary barriers for different spatial contexts.[^perez-interventions]
-On the other hand, as the results by @Hunt2004 have also shown,
-individual measures on their own such as commuting subsidies in this case, while having positive results,
-may not provide enough lasting impact over the long term and may need embedding in a more holistic approach,
-combining multiple policy packages.
-
-[^perez-interventions]: The identified interventions largely overlap with the identified pertinent interventions in this review: credit programmes, institutional support for childcare, guaranteed minimum income/universal basic income or the provision of living wages, commuting subsidies, and housing mobility programs. However, due to their focus on urban contexts, the identified barriers differ.
-
-
-Few studies approach disability inequalities primarily through the prism of income inequality,
-preferring return to work, employment rates or amount of hours worked as indicators.
-Only when looking at the intersection of disability and gender is income the more utilized indicator,
-through measuring female income ratios compared to those of males.
-
-Here, a split between frameworks that favour agency-based approaches,
-putting organisational barriers and environmental activation, as well as individual (re-)integration within the world of work into focus,
-and frameworks which focus on the institutional-structural component,
-with a focus on educational inclusion, and selection and eligibility criteria for benefit or vocational programmes.[^disability-approaches]
-In addition to employment or return to work based indicators it might thus be pertinent to include a focus on decent work and meaningful achievement as additional indications of successful programmes.
-Taken together, these results especially reinforce the results of @Poppen2017 and @Thoresen2021,
-for the importance of correct targeting to avoid unintended negative outcomes,
-while the evidence base also highlights research gaps in contexts and regions other than developed high-income countries.
-
-[^disability-approaches]: For exemplary frameworks in the agency perspective, see @Martin2020 and @Lindsay2015; for the latter see @Lindsay2015a and @Gruber2014.
-
-
-Studies on migration- or ethnicity-based inequalities predominantly focus on structural interventions such as education, fiscal policies or infrastructure,
-or the effects of institutional contexts such as collective bargaining, unionisation or universal incomes.
-The primary indicators are mixed between indicators of income inequality and others such as employment probability,
-though with a focus on absolute measures such as poverty, hours worked or debt.
-While some frameworks do put agency-driven necessities to the foreground,
-there is a consensus for structural approaches required to enable this agency.[^migration-frameworks]
-
-[^migration-frameworks]: For an agency-focused approach, see @Siebers2015; for an example of structural requirements, see @Goodburn2020 or @Samaluk2014 for a discussion of structural power dynamics; for an institutional focus, see @Clibborn2022.
-
-# Conclusions
-
-The preceding study undertook a systematic scoping review of the literature on inequalities in the world of work.
-It focused on the variety of approaches to policy interventions, from institutional to structural to more agency-driven programmes,
-and highlighted the inequalities targeted, analysed in subsequent study, their methods and limitations,
-to arrive at a picture of which lays out the strengths and weaknesses of current approaches.
-
-Wide gaps exist between the research on existing topics within the areas and intersections of inequalities in the world of work.
-First, while regionally research on such inequalities seems relatively evenly distributed,
-focus prevalence on individual inequalities varies widely.
-
-Research into interventions preventing income inequality are still the dominant form of measured outcomes,
-which makes sense for its prevailing usefulness through a variety of indicators and its use to investigate both vertical and horizontal inequalities.
-However, care should be taken not to over-emphasize the reliance on income inequality outcomes:
-they can obscure intersections with other inequalities,
-or diminish the perceived importance of tackling other inequalities themselves, if not directly measurable through income.
-Thus, while interventions attempt to approach the inequality from a variety of institutional, structural and agency-oriented approaches already,
-this could be further enhanced by putting a continuous focus on the closely intertwined intersectional nature of the issue.
-
-Gender inequality is an almost equally considered dimension in the interventions,
-a reasonable conclusion due to the inequality's global ubiquity and persistence.
-Most gender-oriented policy approaches tackle it directly alongside income inequality outcomes,
-especially viewed through gender pay gaps and economic (dis-)empowerment,
-approaching it from backgrounds of structural or agency-driven interventions.
-While both approaches seem fruitful in different contexts, few interventions strive to provide a holistic approach which combines the individual-level with macro-impacts,
-tackling both institutional-structural issues while driving concerns of agency simultaneously.
-
-Spatial inequalities are primarily viewed through rural-urban divides,
-concerning welfare, opportunities and employment probabilities.
-Spatially focused interventions primarily tackle infrastructural issues which should be an effective avenue since most positive interventions are focused on the structural dimension of the inequality.
-However, too many interventions, especially focused on reducing income inequalities,
-still do not take spatial components fully into view,
-potentially leading to worse outcomes for inequalities along the spatial dimension.
-
-Disabilities are rarely viewed through lenses other than employment opportunities.
-While most interventions already focus on dimensions of strengthening agency and improved integration or reintegration of individuals with disabilities into the world of work,
-a wider net needs to be cast with future research focusing on developing regions and the effects of more institutional-structural approaches before clearer recommendations can be given based on existing evidence.
-
-Ethnicity and migration provide dimensions of inequalities which are, while more evenly distributed regionally,
-still equally underdeveloped in research on evidence-based intervention impacts.
-Currently, there is a strong focus on institutional-structural approaches,
-which seems to follow the literature in what is required for effective interventions.
-However, similarly to research on inequalities based on disability, there are clear gaps in research
-on ethnicity and especially migration, before clearer pictures of what works can develop.
-
-The intertwined nature of inequalities, once recognized, requires intervention approaches which heed multi-dimensional issues and can flexibly intervene and subsequently correctly measure their relative effectiveness.
-To do so, perspectives need to shift and align towards a new, more intersectional approach which can incorporate both a wider array of methodological approaches between purely quantitative and qualitative research,
-while relying on indicators for measurement which are flexible yet overlapping enough to encompass such a broadened perspective.
-
-# Bibliography
-
-::: {#refs}
-
-:::
-
-# Appendices {.appendix .unnumbered}
-
-## Appendix A - Term clusters {#sec-search-protocol .unnumbered}
-
-The search protocol followed a three-staged process of execution: identification, screening and extraction.
-First, in identification, the relevant policy, inequality and world of work related dimensions were combined through Boolean operators to conduct a search through the database repository Web of Science and supplemental searches via Google Scholar to supply potential grey literature.
-While the resulting study pools could be screened for in multiple languages, the search queries themselves were passed to the databases in English-language only.
-Relevant results were then complemented through the adoption of a 'snowballing' technique,
-in which an array of identified adjacent published reviews is analysed for their reference lists to find cross-references of potentially missing literature and in turn add those to the pool of studies.
-
-To identify potential studies and create an initial sample, relevant terms for the clusters of world of work, inequality and policy interventions have been extracted from the existing reviews as well as the ILO definitions.[^existingreviews]
-
-[^existingreviews]: TODO: citation of existing reviews used; ILO definitions if mentioned
-
-Identified terms comprising the world of work can be found in the Appendix tables @appatbl-wow-terms, @appatbl-intervention-terms, and @appatbl-inequality-terms,
-with the search query requiring a term from the general column and one other column of each table respectively.
-Each cluster is made up of a general signifier (such as “work”, “inequality” or “intervention”) which has to be labelled in a study to form part of the sample,
-as well as any additional terms looking into one or multiple specific dimensions or categories of these signifiers (such as “domestic” work, “gender” inequality, “maternity leave” intervention).
-For the database query, a single term from the respective general category is required to be included in addition to one term from any of the remaining categories.
-
-Second, in screening, duplicate results were removed and the resulting literature sample is sorted based on a variety of excluding characteristics based on:
-language, title, abstract, full text and literature superseded through newer publications.
-Properties in these characteristics were used to assess an individual study on its suitability for further review in concert with the inclusion criteria mentioned in @tbl-inclusion-criteria.
-
-To facilitate the screening process, with the help of 'Zotero' reference manager a system of keywords is used to tag individual studies in the sample with their reason for exclusion,
-such as 'excluded::language', 'excluded::title', 'excluded::abstract', and 'excluded::superseded'.
-This keyword-based system is equally used to further categorize the sample studies that do not fall into exclusion criteria, based on primary country of analysis, world region, as well as income level classification.
-To that end, a 'country::', 'region::' and 'income::' are used to disambiguate between the respective characteristics, such as 'region::LAC' for Latin America and the Caribbean, 'region::SSA' for Sub-Saharan Africa; as well as for example 'income::low-middle', 'income::upper-middle' or 'income::high'.
-These two delineations follow the ILO categorizations on world regions and the country income classifications based on World Bank income groupings [@ILO2022].
-
-Similarly, if a specific type of inequality, or a specific intervention, represents the focus of a study, these will be reflected in the same keyword system (such as 'inequality::income' or 'inequality::gender').
-The complete process of identification and screening is undertaken with the help of the Zotero reference manager.
-Last, for extraction, studies are screened for their full-texts, irrelevant studies excluded with 'excluded::full-text' as explained above and relevant studies then ingested into the final sample pool.
-
-::: {#appatbl-wow-terms}
-
-```{python}
-terms_wow = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/terms_wow.csv")
-Markdown(tabulate(terms_wow.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
-```
-
-World of work term cluster
-
-:::
-
-::: {#appatbl-intervention-terms}
-
-```{python}
-terms_policy = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/terms_policy.csv")
-# different headers to include 'social norms'
-headers = ["General", "Institutional", "Structural", "Agency & social norms"]
-Markdown(tabulate(terms_policy.fillna(""), showindex=False, headers=headers, tablefmt="grid"))
-```
-
-Policy intervention term cluster
-
-:::
-
-::: {#appatbl-inequality-terms}
-
-```{python}
-terms_inequality = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/terms_inequality.csv")
-Markdown(tabulate(terms_inequality.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
-```
-
-Inequality term cluster
-
-:::
-
-## Appendix B - Validity rankings {#sec-appendix-validity-rankings .unnumbered}
-
-::: {#appbtbl-validity-external}
-
-| Representativeness | Ranking |
-| --- | --- |
-| non-representative survey/dataset | 2.0 |
-| subnationally representative survey/dataset | 3.0 |
-| nationally representative survey/dataset | 4.0 |
-| census-based dataset | 5.0 |
-
-External validity ranking. Adapted from @Maitrot2017.
-
-:::
-
-::: {#appbtbl-validity-internal}
-
-| Method | Ranking |
-| --- | --- |
-| ordinary least squares & fixed-effects | 2.0 |
-| discontinuity matching | 3.0 |
-| difference in difference (& triple difference) | 3.0 |
-| propensity score matching | 3.5 |
-| instrumental variable | 4.0 |
-| general method of moments | 4.0 |
-| regression discontinuity | 4.5 |
-| randomised control trial | 5.0 |
-
-Internal validity ranking. Adapted from @Maitrot2017.
-
-:::
-
-## Appendix C - Boolean search query {.unnumbered}
-
-```{python}
-#| label: full-search-query
-#| echo: false
-#| output: asis
-with open(f"{g.SUPPLEMENTARY_DATA}/query.txt") as f:
- query = f.read()
-
-t3 = "`" * 3
-print(f"""
-```sql
-{query}
-{t3}
-""")
-```
diff --git a/manuscript/meeting_eoy.qmd b/meeting_eoy.qmd
similarity index 93%
rename from manuscript/meeting_eoy.qmd
rename to meeting_eoy.qmd
index 1cb0b1b..fb6a057 100644
--- a/manuscript/meeting_eoy.qmd
+++ b/meeting_eoy.qmd
@@ -1,5 +1,5 @@
---
-bibliography: ../data/references/zotero-library.bib
+bibliography: 02-data/intermediate/zotero-library.bib
csl: /home/marty/documents/library/utilities/styles/APA-7.csl
papersize: A4
linestretch: 1.5
@@ -30,12 +30,26 @@ import bibtexparser
sns.set_style("whitegrid")
-from src import globals as g
+DATA_DIR=Path("./02-data")
+RAW_DATA=DATA_DIR.joinpath("raw")
+WORKING_DATA=DATA_DIR.joinpath("intermediate")
+PROCESSED_DATA=DATA_DIR.joinpath("processed")
+SUPPLEMENTARY_DATA=DATA_DIR.joinpath("supplementary")
-from src import bib_sample
+bib_string=""
+for partial_bib in RAW_DATA.glob("**/*.bib"):
+ with open(partial_bib) as f:
+ bib_string+="\n".join(f.readlines())
+bib_sample_raw_db = bibtexparser.parse_string(bib_string)
+
+bib_string=""
+for partial_bib in WORKING_DATA.glob("**/*.bib"):
+ with open(partial_bib) as f:
+ bib_string+="\n".join(f.readlines())
+bib_sample = bibtexparser.parse_string(bib_string)
# load relevant studies
-from src.extract import load_data
+from src import load_data
# load zotero-based metadata: citations and uses
zot_df = pd.DataFrame([
@@ -49,10 +63,10 @@ zot_df = pd.DataFrame([
], columns = ["doi", "cited", "usage", "keywords"]).drop_duplicates("doi").set_index("doi")
# Add WB country grouping definitions (income group, world region)
-WB_COUNTRY_GROUPS_FILE = Path(f"{g.SUPPLEMENTARY_DATA}/wb-country-groupings.xlsx").resolve()
+WB_COUNTRY_GROUPS_FILE = Path(f"{SUPPLEMENTARY_DATA}/wb-country-groupings.xlsx").resolve()
df_country_groups = pd.read_excel(WB_COUNTRY_GROUPS_FILE).set_index("Economy")
-bib_df = (load_data.from_yml(f"{g.EXTRACTED_DATA}")
+bib_df = (load_data.from_yml(f"{PROCESSED_DATA}/relevant")
.assign(
doi=lambda _df: _df["uri"].str.extract(r"https?://(?:dx\.)?doi\.org/(.*)", expand=False),
zot_cited=lambda _df: _df["doi"].map(zot_df["cited"]),
@@ -88,7 +102,7 @@ nr_out_language = len([1 for kw in all_keywords if "out::language" in kw])
nr_extraction_done = len([1 for kw in all_keywords if "done::extracted" in kw])
t3 = "`" * 3
-# FIXME use data/supplementary undeduplciated counts to get database starting and snowballing counts
+# FIXME use 02-data/supplementary undeduplciated counts to get database starting and snowballing counts
# from: https://github.com/quarto-dev/quarto-cli/discussions/6508
print(f"""
```{{mermaid}}
diff --git a/notebooks/README.md b/notebooks/README.md
deleted file mode 100644
index 82cdce4..0000000
--- a/notebooks/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Notebooks
-
-The notebooks in this directory undertook a variety of exploratory data analysis.
-They are possibly outdated and not guaranteed to work as the project around them continues changing.
-However, they are kept here for the moment to serve as reminders and inspiration for further data analysis.
-
-Each notebook looked into a different issue:
-
-explore.qmd is a fundamental data exploration of the extracted data-set.
-
-test-magma.qmd explores the interaction with ipynb notebooks through the neovim plugin magma-nvim.
-
-bibmanip.qmd explores the parsing and analysis of .bib bibtex files through python.
-
-main-findings.qmd is an attempt to distill the variety of findings into a short-form table format.
-
-rank_validities.qmd attempts to create a map of the validity of each study utilizing the
- internal/external validity method used in the main paper.
diff --git a/manuscript/notes.qmd b/notes.qmd
similarity index 99%
rename from manuscript/notes.qmd
rename to notes.qmd
index 8a43173..987702a 100644
--- a/manuscript/notes.qmd
+++ b/notes.qmd
@@ -1,5 +1,5 @@
---
-bibliography: ../data/references/zotero-library.bib
+bibliography: 02-data/intermediate/zotero-library.bib
csl: /home/marty/documents/library/utilities/styles/APA-7.csl
papersize: A4
linestretch: 1.5
@@ -21,7 +21,12 @@ subtitle: Conceptual Definitions and Key Terms
```{python}
#| echo: false
-from src import globals as g
+from pathlib import Path
+DATA_DIR=Path("./02-data")
+RAW_DATA=DATA_DIR.joinpath("raw")
+WORKING_DATA=DATA_DIR.joinpath("intermediate")
+PROCESSED_DATA=DATA_DIR.joinpath("processed")
+SUPPLEMENTARY_DATA=DATA_DIR.joinpath("supplementary")
## standard imports
from IPython.core.display import Markdown as md
@@ -391,7 +396,7 @@ Policy *areas*, identified by @ILO2022b:
#| label: tbl-inclusion-criteria
#| tbl-cap: Study inclusion and exclusion scoping criteria {#tbl-inclusion-criteria}
-inclusion_criteria = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/inclusion-criteria.tsv", sep="\t")
+inclusion_criteria = pd.read_csv("02-data/supplementary/inclusion-criteria.tsv", sep="\t")
md(tabulate(inclusion_criteria, showindex=False, headers="keys", tablefmt="grid"))
```
@@ -856,7 +861,7 @@ from @Pinto2021:
```{python}
#| echo: false
#| output: asis
-with open(f"{g.SUPPLEMENTARY_DATA}/query.txt") as f:
+with open(f"{SUPPLEMENTARY_DATA}/query.txt") as f:
query = f.read()
t3 = "`" * 3
diff --git a/poetry.lock b/poetry.lock
index 5d320bb..20d8100 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,14 +1,14 @@
-# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
[[package]]
name = "anyio"
-version = "4.4.0"
+version = "4.0.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
python-versions = ">=3.8"
files = [
- {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"},
- {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"},
+ {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"},
+ {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"},
]
[package.dependencies]
@@ -16,19 +16,19 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
-trio = ["trio (>=0.23)"]
+doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
+trio = ["trio (>=0.22)"]
[[package]]
name = "appnope"
-version = "0.1.4"
+version = "0.1.3"
description = "Disable App Nap on macOS >= 10.9"
optional = false
-python-versions = ">=3.6"
+python-versions = "*"
files = [
- {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
- {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
+ {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"},
+ {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"},
]
[[package]]
@@ -138,67 +138,66 @@ files = [
[[package]]
name = "attrs"
-version = "23.2.0"
+version = "23.1.0"
description = "Classes Without Boilerplate"
optional = false
python-versions = ">=3.7"
files = [
- {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"},
- {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"},
+ {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"},
+ {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"},
]
[package.extras]
cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
-dev = ["attrs[tests]", "pre-commit"]
+dev = ["attrs[docs,tests]", "pre-commit"]
docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"]
tests = ["attrs[tests-no-zope]", "zope-interface"]
-tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"]
-tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"]
+tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
[[package]]
name = "babel"
-version = "2.15.0"
+version = "2.13.1"
description = "Internationalization utilities"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"},
- {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"},
+ {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"},
+ {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"},
]
+[package.dependencies]
+setuptools = {version = "*", markers = "python_version >= \"3.12\""}
+
[package.extras]
dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
[[package]]
name = "beautifulsoup4"
-version = "4.12.3"
+version = "4.12.2"
description = "Screen-scraping library"
optional = false
python-versions = ">=3.6.0"
files = [
- {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
- {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+ {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"},
+ {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"},
]
[package.dependencies]
soupsieve = ">1.2"
[package.extras]
-cchardet = ["cchardet"]
-chardet = ["chardet"]
-charset-normalizer = ["charset-normalizer"]
html5lib = ["html5lib"]
lxml = ["lxml"]
[[package]]
name = "bibtexparser"
-version = "2.0.0b7"
+version = "2.0.0b4"
description = "Bibtex parser for python 3"
optional = false
python-versions = "*"
files = [
- {file = "bibtexparser-2.0.0b7-py3-none-any.whl", hash = "sha256:1f4ac78cc6fbfdcc7ce432105fef127688c78ce60324363955fc11feb32964cd"},
- {file = "bibtexparser-2.0.0b7.tar.gz", hash = "sha256:9e0034dd16e1961fbc895b108f49bdef6f988b5d48782b62c9492ee8a281efad"},
+ {file = "bibtexparser-2.0.0b4-py3-none-any.whl", hash = "sha256:14e58c7ef96da78cf675c7bb2cf15b03613d463ef7edcd3daee20f53b489ce83"},
+ {file = "bibtexparser-2.0.0b4.tar.gz", hash = "sha256:7ee6b0576b7054ee9fa8fc8b50157c331619763c1a7bc1e59d90de029aac4052"},
]
[package.dependencies]
@@ -229,13 +228,13 @@ css = ["tinycss2 (>=1.1.0,<1.3)"]
[[package]]
name = "certifi"
-version = "2024.6.2"
+version = "2023.7.22"
description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.6"
files = [
- {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"},
- {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"},
+ {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"},
+ {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"},
]
[[package]]
@@ -428,13 +427,13 @@ files = [
[[package]]
name = "comm"
-version = "0.2.2"
+version = "0.2.0"
description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
optional = false
python-versions = ">=3.8"
files = [
- {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"},
- {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"},
+ {file = "comm-0.2.0-py3-none-any.whl", hash = "sha256:2da8d9ebb8dd7bfc247adaff99f24dce705638a8042b85cb995066793e391001"},
+ {file = "comm-0.2.0.tar.gz", hash = "sha256:a517ea2ca28931c7007a7a99c562a0fa5883cfb48963140cf642c41c948498be"},
]
[package.dependencies]
@@ -445,64 +444,64 @@ test = ["pytest"]
[[package]]
name = "contourpy"
-version = "1.2.1"
+version = "1.2.0"
description = "Python library for calculating contours of 2D quadrilateral grids"
optional = false
python-versions = ">=3.9"
files = [
- {file = "contourpy-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd7c23df857d488f418439686d3b10ae2fbf9bc256cd045b37a8c16575ea1040"},
- {file = "contourpy-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b9eb0ca724a241683c9685a484da9d35c872fd42756574a7cfbf58af26677fd"},
- {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c75507d0a55378240f781599c30e7776674dbaf883a46d1c90f37e563453480"},
- {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9"},
- {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb3315a8a236ee19b6df481fc5f997436e8ade24a9f03dfdc6bd490fea20c6da"},
- {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39f3ecaf76cd98e802f094e0d4fbc6dc9c45a8d0c4d185f0f6c2234e14e5f75b"},
- {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94b34f32646ca0414237168d68a9157cb3889f06b096612afdd296003fdd32fd"},
- {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:457499c79fa84593f22454bbd27670227874cd2ff5d6c84e60575c8b50a69619"},
- {file = "contourpy-1.2.1-cp310-cp310-win32.whl", hash = "sha256:ac58bdee53cbeba2ecad824fa8159493f0bf3b8ea4e93feb06c9a465d6c87da8"},
- {file = "contourpy-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9cffe0f850e89d7c0012a1fb8730f75edd4320a0a731ed0c183904fe6ecfc3a9"},
- {file = "contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5"},
- {file = "contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72"},
- {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6150ffa5c767bc6332df27157d95442c379b7dce3a38dff89c0f39b63275696f"},
- {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c863140fafc615c14a4bf4efd0f4425c02230eb8ef02784c9a156461e62c965"},
- {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2"},
- {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df"},
- {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49e70d111fee47284d9dd867c9bb9a7058a3c617274900780c43e38d90fe1205"},
- {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b59c0ffceff8d4d3996a45f2bb6f4c207f94684a96bf3d9728dbb77428dd8cb8"},
- {file = "contourpy-1.2.1-cp311-cp311-win32.whl", hash = "sha256:7b4182299f251060996af5249c286bae9361fa8c6a9cda5efc29fe8bfd6062ec"},
- {file = "contourpy-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922"},
- {file = "contourpy-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:62828cada4a2b850dbef89c81f5a33741898b305db244904de418cc957ff05dc"},
- {file = "contourpy-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:309be79c0a354afff9ff7da4aaed7c3257e77edf6c1b448a779329431ee79d7e"},
- {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e785e0f2ef0d567099b9ff92cbfb958d71c2d5b9259981cd9bee81bd194c9a4"},
- {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cac0a8f71a041aa587410424ad46dfa6a11f6149ceb219ce7dd48f6b02b87a7"},
- {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af3f4485884750dddd9c25cb7e3915d83c2db92488b38ccb77dd594eac84c4a0"},
- {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ce6889abac9a42afd07a562c2d6d4b2b7134f83f18571d859b25624a331c90b"},
- {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a1eea9aecf761c661d096d39ed9026574de8adb2ae1c5bd7b33558af884fb2ce"},
- {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:187fa1d4c6acc06adb0fae5544c59898ad781409e61a926ac7e84b8f276dcef4"},
- {file = "contourpy-1.2.1-cp312-cp312-win32.whl", hash = "sha256:c2528d60e398c7c4c799d56f907664673a807635b857df18f7ae64d3e6ce2d9f"},
- {file = "contourpy-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:1a07fc092a4088ee952ddae19a2b2a85757b923217b7eed584fdf25f53a6e7ce"},
- {file = "contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb6834cbd983b19f06908b45bfc2dad6ac9479ae04abe923a275b5f48f1a186b"},
- {file = "contourpy-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d59e739ab0e3520e62a26c60707cc3ab0365d2f8fecea74bfe4de72dc56388f"},
- {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd3db01f59fdcbce5b22afad19e390260d6d0222f35a1023d9adc5690a889364"},
- {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a12a813949e5066148712a0626895c26b2578874e4cc63160bb007e6df3436fe"},
- {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985"},
- {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1d59258c3c67c865435d8fbeb35f8c59b8bef3d6f46c1f29f6123556af28445"},
- {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02"},
- {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d31a63bc6e6d87f77d71e1abbd7387ab817a66733734883d1fc0021ed9bfa083"},
- {file = "contourpy-1.2.1-cp39-cp39-win32.whl", hash = "sha256:ddcb8581510311e13421b1f544403c16e901c4e8f09083c881fab2be80ee31ba"},
- {file = "contourpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9"},
- {file = "contourpy-1.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a31f94983fecbac95e58388210427d68cd30fe8a36927980fab9c20062645609"},
- {file = "contourpy-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b055471c0eb466033760a521efb9d8a32b99ab907fc8358481a1dd29e3bd3"},
- {file = "contourpy-1.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b33d2bc4f69caedcd0a275329eb2198f560b325605810895627be5d4b876bf7f"},
- {file = "contourpy-1.2.1.tar.gz", hash = "sha256:4d8908b3bee1c889e547867ca4cdc54e5ab6be6d3e078556814a22457f49423c"},
+ {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"},
+ {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"},
+ {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"},
+ {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"},
+ {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"},
+ {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"},
+ {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"},
+ {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"},
+ {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"},
+ {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"},
+ {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"},
+ {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"},
+ {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"},
+ {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"},
+ {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"},
+ {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"},
+ {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"},
+ {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"},
+ {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"},
+ {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"},
+ {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"},
+ {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"},
+ {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"},
+ {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"},
+ {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"},
+ {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"},
+ {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"},
+ {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"},
+ {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"},
+ {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"},
+ {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"},
+ {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"},
+ {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"},
+ {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"},
+ {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"},
+ {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"},
+ {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"},
+ {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"},
+ {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"},
+ {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"},
+ {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"},
+ {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"},
+ {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"},
+ {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"},
]
[package.dependencies]
-numpy = ">=1.20"
+numpy = ">=1.20,<2.0"
[package.extras]
bokeh = ["bokeh", "selenium"]
docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"]
-mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.8.0)", "types-Pillow"]
+mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"]
test = ["Pillow", "contourpy[test-no-images]", "matplotlib"]
test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"]
@@ -523,33 +522,29 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"]
[[package]]
name = "debugpy"
-version = "1.8.1"
+version = "1.8.0"
description = "An implementation of the Debug Adapter Protocol for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"},
- {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"},
- {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"},
- {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"},
- {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"},
- {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"},
- {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"},
- {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"},
- {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"},
- {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"},
- {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"},
- {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"},
- {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"},
- {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"},
- {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"},
- {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"},
- {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"},
- {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"},
- {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"},
- {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"},
- {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"},
- {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"},
+ {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"},
+ {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"},
+ {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"},
+ {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"},
+ {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"},
+ {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"},
+ {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"},
+ {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"},
+ {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"},
+ {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"},
+ {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"},
+ {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"},
+ {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"},
+ {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"},
+ {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"},
+ {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"},
+ {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"},
+ {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"},
]
[[package]]
@@ -601,13 +596,13 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth
[[package]]
name = "fastjsonschema"
-version = "2.20.0"
+version = "2.18.1"
description = "Fastest Python implementation of JSON schema"
optional = false
python-versions = "*"
files = [
- {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"},
- {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"},
+ {file = "fastjsonschema-2.18.1-py3-none-any.whl", hash = "sha256:aec6a19e9f66e9810ab371cc913ad5f4e9e479b63a7072a2cd060a9369e329a8"},
+ {file = "fastjsonschema-2.18.1.tar.gz", hash = "sha256:06dc8680d937628e993fa0cd278f196d20449a1adc087640710846b324d422ea"},
]
[package.extras]
@@ -615,60 +610,60 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc
[[package]]
name = "fonttools"
-version = "4.53.0"
+version = "4.44.0"
description = "Tools to manipulate font files"
optional = false
python-versions = ">=3.8"
files = [
- {file = "fonttools-4.53.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:52a6e0a7a0bf611c19bc8ec8f7592bdae79c8296c70eb05917fd831354699b20"},
- {file = "fonttools-4.53.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:099634631b9dd271d4a835d2b2a9e042ccc94ecdf7e2dd9f7f34f7daf333358d"},
- {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e40013572bfb843d6794a3ce076c29ef4efd15937ab833f520117f8eccc84fd6"},
- {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:715b41c3e231f7334cbe79dfc698213dcb7211520ec7a3bc2ba20c8515e8a3b5"},
- {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74ae2441731a05b44d5988d3ac2cf784d3ee0a535dbed257cbfff4be8bb49eb9"},
- {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:95db0c6581a54b47c30860d013977b8a14febc206c8b5ff562f9fe32738a8aca"},
- {file = "fonttools-4.53.0-cp310-cp310-win32.whl", hash = "sha256:9cd7a6beec6495d1dffb1033d50a3f82dfece23e9eb3c20cd3c2444d27514068"},
- {file = "fonttools-4.53.0-cp310-cp310-win_amd64.whl", hash = "sha256:daaef7390e632283051e3cf3e16aff2b68b247e99aea916f64e578c0449c9c68"},
- {file = "fonttools-4.53.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec"},
- {file = "fonttools-4.53.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749"},
- {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161"},
- {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee"},
- {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6"},
- {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e"},
- {file = "fonttools-4.53.0-cp311-cp311-win32.whl", hash = "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005"},
- {file = "fonttools-4.53.0-cp311-cp311-win_amd64.whl", hash = "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796"},
- {file = "fonttools-4.53.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d8f191a17369bd53a5557a5ee4bab91d5330ca3aefcdf17fab9a497b0e7cff7a"},
- {file = "fonttools-4.53.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:93156dd7f90ae0a1b0e8871032a07ef3178f553f0c70c386025a808f3a63b1f4"},
- {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bff98816cb144fb7b85e4b5ba3888a33b56ecef075b0e95b95bcd0a5fbf20f06"},
- {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:973d030180eca8255b1bce6ffc09ef38a05dcec0e8320cc9b7bcaa65346f341d"},
- {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c4ee5a24e281fbd8261c6ab29faa7fd9a87a12e8c0eed485b705236c65999109"},
- {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd5bc124fae781a4422f61b98d1d7faa47985f663a64770b78f13d2c072410c2"},
- {file = "fonttools-4.53.0-cp312-cp312-win32.whl", hash = "sha256:a239afa1126b6a619130909c8404070e2b473dd2b7fc4aacacd2e763f8597fea"},
- {file = "fonttools-4.53.0-cp312-cp312-win_amd64.whl", hash = "sha256:45b4afb069039f0366a43a5d454bc54eea942bfb66b3fc3e9a2c07ef4d617380"},
- {file = "fonttools-4.53.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:93bc9e5aaa06ff928d751dc6be889ff3e7d2aa393ab873bc7f6396a99f6fbb12"},
- {file = "fonttools-4.53.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2367d47816cc9783a28645bc1dac07f8ffc93e0f015e8c9fc674a5b76a6da6e4"},
- {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:907fa0b662dd8fc1d7c661b90782ce81afb510fc4b7aa6ae7304d6c094b27bce"},
- {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e0ad3c6ea4bd6a289d958a1eb922767233f00982cf0fe42b177657c86c80a8f"},
- {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:73121a9b7ff93ada888aaee3985a88495489cc027894458cb1a736660bdfb206"},
- {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ee595d7ba9bba130b2bec555a40aafa60c26ce68ed0cf509983e0f12d88674fd"},
- {file = "fonttools-4.53.0-cp38-cp38-win32.whl", hash = "sha256:fca66d9ff2ac89b03f5aa17e0b21a97c21f3491c46b583bb131eb32c7bab33af"},
- {file = "fonttools-4.53.0-cp38-cp38-win_amd64.whl", hash = "sha256:31f0e3147375002aae30696dd1dc596636abbd22fca09d2e730ecde0baad1d6b"},
- {file = "fonttools-4.53.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d6166192dcd925c78a91d599b48960e0a46fe565391c79fe6de481ac44d20ac"},
- {file = "fonttools-4.53.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef50ec31649fbc3acf6afd261ed89d09eb909b97cc289d80476166df8438524d"},
- {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f193f060391a455920d61684a70017ef5284ccbe6023bb056e15e5ac3de11d1"},
- {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba9f09ff17f947392a855e3455a846f9855f6cf6bec33e9a427d3c1d254c712f"},
- {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0c555e039d268445172b909b1b6bdcba42ada1cf4a60e367d68702e3f87e5f64"},
- {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a4788036201c908079e89ae3f5399b33bf45b9ea4514913f4dbbe4fac08efe0"},
- {file = "fonttools-4.53.0-cp39-cp39-win32.whl", hash = "sha256:d1a24f51a3305362b94681120c508758a88f207fa0a681c16b5a4172e9e6c7a9"},
- {file = "fonttools-4.53.0-cp39-cp39-win_amd64.whl", hash = "sha256:1e677bfb2b4bd0e5e99e0f7283e65e47a9814b0486cb64a41adf9ef110e078f2"},
- {file = "fonttools-4.53.0-py3-none-any.whl", hash = "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4"},
- {file = "fonttools-4.53.0.tar.gz", hash = "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002"},
+ {file = "fonttools-4.44.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1cd1c6bb097e774d68402499ff66185190baaa2629ae2f18515a2c50b93db0c"},
+ {file = "fonttools-4.44.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b9eab7f9837fdaa2a10a524fbcc2ec24bf60637c044b6e4a59c3f835b90f0fae"},
+ {file = "fonttools-4.44.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f412954275e594f7a51c16f3b3edd850acb0d842fefc33856b63a17e18499a5"},
+ {file = "fonttools-4.44.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50d25893885e80a5955186791eed5579f1e75921751539cc1dc3ffd1160b48cf"},
+ {file = "fonttools-4.44.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:22ea8aa7b3712450b42b044702bd3a64fd118006bad09a6f94bd1b227088492e"},
+ {file = "fonttools-4.44.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df40daa6c03b98652ffe8110ae014fe695437f6e1cb5a07e16ea37f40e73ac86"},
+ {file = "fonttools-4.44.0-cp310-cp310-win32.whl", hash = "sha256:bca49da868e8bde569ef36f0cc1b6de21d56bf9c3be185c503b629c19a185287"},
+ {file = "fonttools-4.44.0-cp310-cp310-win_amd64.whl", hash = "sha256:dbac86d83d96099890e731cc2af97976ff2c98f4ba432fccde657c5653a32f1c"},
+ {file = "fonttools-4.44.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e8ff7d19a6804bfd561cfcec9b4200dd1788e28f7de4be70189801530c47c1b3"},
+ {file = "fonttools-4.44.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8a1fa9a718de0bc026979c93e1e9b55c5efde60d76f91561fd713387573817d"},
+ {file = "fonttools-4.44.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05064f95aacdfc06f21e55096c964b2228d942b8675fa26995a2551f6329d2d"},
+ {file = "fonttools-4.44.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31b38528f25bc662401e6ffae14b3eb7f1e820892fd80369a37155e3b636a2f4"},
+ {file = "fonttools-4.44.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:05d7c4d2c95b9490e669f3cb83918799bf1c838619ac6d3bad9ea017cfc63f2e"},
+ {file = "fonttools-4.44.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6999e80a125b0cd8e068d0210b63323f17338038c2ecd2e11b9209ec430fe7f2"},
+ {file = "fonttools-4.44.0-cp311-cp311-win32.whl", hash = "sha256:a7aec7f5d14dfcd71fb3ebc299b3f000c21fdc4043079101777ed2042ba5b7c5"},
+ {file = "fonttools-4.44.0-cp311-cp311-win_amd64.whl", hash = "sha256:518a945dbfe337744bfff31423c1430303b8813c5275dffb0f2577f0734a1189"},
+ {file = "fonttools-4.44.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:59b6ad83cce067d10f4790c037a5904424f45bebb5e7be2eb2db90402f288267"},
+ {file = "fonttools-4.44.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c2de1fb18198acd400c45ffe2aef5420c8d55fde903e91cba705596099550f3b"},
+ {file = "fonttools-4.44.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84f308b7a8d28208d54315d11d35f9888d6d607673dd4d42d60b463682ee0400"},
+ {file = "fonttools-4.44.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66bc6efd829382f7a7e6cf33c2fb32b13edc8a239eb15f32acbf197dce7a0165"},
+ {file = "fonttools-4.44.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a8b99713d3a0d0e876b6aecfaada5e7dc9fe979fcd90ef9fa0ba1d9b9aed03f2"},
+ {file = "fonttools-4.44.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b63da598d9cbc52e2381f922da0e94d60c0429f92207bd3fb04d112fc82ea7cb"},
+ {file = "fonttools-4.44.0-cp312-cp312-win32.whl", hash = "sha256:f611c97678604e302b725f71626edea113a5745a7fb557c958b39edb6add87d5"},
+ {file = "fonttools-4.44.0-cp312-cp312-win_amd64.whl", hash = "sha256:58af428746fa73a2edcbf26aff33ac4ef3c11c8d75bb200eaea2f7e888d2de4e"},
+ {file = "fonttools-4.44.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9ee8692e23028564c13d924004495f284df8ac016a19f17a87251210e1f1f928"},
+ {file = "fonttools-4.44.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dab3d00d27b1a79ae4d4a240e8ceea8af0ff049fd45f05adb4f860d93744110d"},
+ {file = "fonttools-4.44.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f53526668beccdb3409c6055a4ffe50987a7f05af6436fa55d61f5e7bd450219"},
+ {file = "fonttools-4.44.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3da036b016c975c2d8c69005bdc4d5d16266f948a7fab950244e0f58301996a"},
+ {file = "fonttools-4.44.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b99fe8ef4093f672d00841569d2d05691e50334d79f4d9c15c1265d76d5580d2"},
+ {file = "fonttools-4.44.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d16d9634ff1e5cea2cf4a8cbda9026f766e4b5f30b48f8180f0e99133d3abfc"},
+ {file = "fonttools-4.44.0-cp38-cp38-win32.whl", hash = "sha256:3d29509f6e05e8d725db59c2d8c076223d793e4e35773040be6632a0349f2f97"},
+ {file = "fonttools-4.44.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4fa4f4bc8fd86579b8cdbe5e948f35d82c0eda0091c399d009b2a5a6b61c040"},
+ {file = "fonttools-4.44.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c794de4086f06ae609b71ac944ec7deb09f34ecf73316fddc041087dd24bba39"},
+ {file = "fonttools-4.44.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2db63941fee3122e31a21dd0f5b2138ce9906b661a85b63622421d3654a74ae2"},
+ {file = "fonttools-4.44.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb01c49c8aa035d5346f46630209923d4927ed15c2493db38d31da9f811eb70d"},
+ {file = "fonttools-4.44.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c79af80a835410874683b5779b6c1ec1d5a285e11c45b5193e79dd691eb111"},
+ {file = "fonttools-4.44.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6e6aa2d066f8dafd06d8d0799b4944b5d5a1f015dd52ac01bdf2895ebe169a0"},
+ {file = "fonttools-4.44.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:63a3112f753baef8c6ac2f5f574bb9ac8001b86c8c0c0380039db47a7f512d20"},
+ {file = "fonttools-4.44.0-cp39-cp39-win32.whl", hash = "sha256:54efed22b2799a85475e6840e907c402ba49892c614565dc770aa97a53621b2b"},
+ {file = "fonttools-4.44.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e91e19b583961979e2e5a701269d3cfc07418963bee717f8160b0a24332826b"},
+ {file = "fonttools-4.44.0-py3-none-any.whl", hash = "sha256:b9beb0fa6ff3ea808ad4a6962d68ac0f140ddab080957b20d9e268e4d67fb335"},
+ {file = "fonttools-4.44.0.tar.gz", hash = "sha256:4e90dd81b6e0d97ebfe52c0d12a17a9ef7f305d6bfbb93081265057d6092f252"},
]
[package.extras]
-all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"]
+all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"]
graphite = ["lz4 (>=1.7.4.2)"]
-interpolatable = ["munkres", "pycairo", "scipy"]
-lxml = ["lxml (>=4.0)"]
+interpolatable = ["munkres", "scipy"]
+lxml = ["lxml (>=4.0,<5)"]
pathops = ["skia-pathops (>=0.5.0)"]
plot = ["matplotlib"]
repacker = ["uharfbuzz (>=0.23.0)"]
@@ -691,170 +686,113 @@ files = [
[[package]]
name = "greenlet"
-version = "3.0.3"
+version = "3.0.1"
description = "Lightweight in-process concurrent programming"
optional = false
python-versions = ">=3.7"
files = [
- {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
- {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
- {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
- {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
- {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
- {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
- {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
- {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
- {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
- {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
- {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
- {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
- {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
- {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
- {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
- {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+ {file = "greenlet-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064"},
+ {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d"},
+ {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd"},
+ {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565"},
+ {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2"},
+ {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63"},
+ {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e"},
+ {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846"},
+ {file = "greenlet-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9"},
+ {file = "greenlet-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65"},
+ {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96"},
+ {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a"},
+ {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec"},
+ {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72"},
+ {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234"},
+ {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884"},
+ {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94"},
+ {file = "greenlet-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c"},
+ {file = "greenlet-3.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa"},
+ {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353"},
+ {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c"},
+ {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9"},
+ {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0"},
+ {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5"},
+ {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d"},
+ {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445"},
+ {file = "greenlet-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4"},
+ {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206"},
+ {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2"},
+ {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a"},
+ {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a"},
+ {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de"},
+ {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166"},
+ {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"},
+ {file = "greenlet-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1"},
+ {file = "greenlet-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8"},
+ {file = "greenlet-3.0.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16"},
+ {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174"},
+ {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3"},
+ {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74"},
+ {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd"},
+ {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9"},
+ {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e"},
+ {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a"},
+ {file = "greenlet-3.0.1-cp38-cp38-win32.whl", hash = "sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd"},
+ {file = "greenlet-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6"},
+ {file = "greenlet-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376"},
+ {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997"},
+ {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe"},
+ {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc"},
+ {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1"},
+ {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d"},
+ {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8"},
+ {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546"},
+ {file = "greenlet-3.0.1-cp39-cp39-win32.whl", hash = "sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57"},
+ {file = "greenlet-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619"},
+ {file = "greenlet-3.0.1.tar.gz", hash = "sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b"},
]
[package.extras]
-docs = ["Sphinx", "furo"]
+docs = ["Sphinx"]
test = ["objgraph", "psutil"]
-[[package]]
-name = "h11"
-version = "0.14.0"
-description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
- {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
-]
-
-[[package]]
-name = "httpcore"
-version = "1.0.5"
-description = "A minimal low-level HTTP client."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"},
- {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"},
-]
-
-[package.dependencies]
-certifi = "*"
-h11 = ">=0.13,<0.15"
-
-[package.extras]
-asyncio = ["anyio (>=4.0,<5.0)"]
-http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
-trio = ["trio (>=0.22.0,<0.26.0)"]
-
-[[package]]
-name = "httpx"
-version = "0.27.0"
-description = "The next generation HTTP client."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"},
- {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"},
-]
-
-[package.dependencies]
-anyio = "*"
-certifi = "*"
-httpcore = "==1.*"
-idna = "*"
-sniffio = "*"
-
-[package.extras]
-brotli = ["brotli", "brotlicffi"]
-cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
-http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
-
[[package]]
name = "idna"
-version = "3.7"
+version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.5"
files = [
- {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
- {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
+ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
+ {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
]
[[package]]
name = "importlib-metadata"
-version = "7.1.0"
+version = "6.8.0"
description = "Read metadata from Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"},
- {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"},
+ {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"},
+ {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"},
]
[package.dependencies]
zipp = ">=0.5"
[package.extras]
-docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
perf = ["ipython"]
-testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"]
+testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
[[package]]
name = "ipykernel"
-version = "6.29.4"
+version = "6.26.0"
description = "IPython Kernel for Jupyter"
optional = false
python-versions = ">=3.8"
files = [
- {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"},
- {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"},
+ {file = "ipykernel-6.26.0-py3-none-any.whl", hash = "sha256:3ba3dc97424b87b31bb46586b5167b3161b32d7820b9201a9e698c71e271602c"},
+ {file = "ipykernel-6.26.0.tar.gz", hash = "sha256:553856658eb8430bbe9653ea041a41bff63e9606fc4628873fc92a6cf3abd404"},
]
[package.dependencies]
@@ -868,7 +806,7 @@ matplotlib-inline = ">=0.1"
nest-asyncio = "*"
packaging = "*"
psutil = "*"
-pyzmq = ">=24"
+pyzmq = ">=20"
tornado = ">=6.1"
traitlets = ">=5.4.0"
@@ -877,62 +815,61 @@ cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
pyqt5 = ["pyqt5"]
pyside6 = ["pyside6"]
-test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov", "pytest-timeout"]
[[package]]
name = "ipython"
-version = "8.25.0"
+version = "8.17.2"
description = "IPython: Productive Interactive Computing"
optional = false
-python-versions = ">=3.10"
+python-versions = ">=3.9"
files = [
- {file = "ipython-8.25.0-py3-none-any.whl", hash = "sha256:53eee7ad44df903a06655871cbab66d156a051fd86f3ec6750470ac9604ac1ab"},
- {file = "ipython-8.25.0.tar.gz", hash = "sha256:c6ed726a140b6e725b911528f80439c534fac915246af3efc39440a6b0f9d716"},
+ {file = "ipython-8.17.2-py3-none-any.whl", hash = "sha256:1e4d1d666a023e3c93585ba0d8e962867f7a111af322efff6b9c58062b3e5444"},
+ {file = "ipython-8.17.2.tar.gz", hash = "sha256:126bb57e1895594bb0d91ea3090bbd39384f6fe87c3d57fd558d0670f50339bb"},
]
[package.dependencies]
+appnope = {version = "*", markers = "sys_platform == \"darwin\""}
colorama = {version = "*", markers = "sys_platform == \"win32\""}
decorator = "*"
jedi = ">=0.16"
matplotlib-inline = "*"
-pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""}
-prompt-toolkit = ">=3.0.41,<3.1.0"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
+prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0"
pygments = ">=2.4.0"
stack-data = "*"
-traitlets = ">=5.13.0"
-typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""}
+traitlets = ">=5"
[package.extras]
-all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"]
+all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
black = ["black"]
-doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"]
+doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
kernel = ["ipykernel"]
-matplotlib = ["matplotlib"]
nbconvert = ["nbconvert"]
nbformat = ["nbformat"]
notebook = ["ipywidgets", "notebook"]
parallel = ["ipyparallel"]
qtconsole = ["qtconsole"]
-test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"]
-test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"]
+test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"]
+test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"]
[[package]]
name = "ipywidgets"
-version = "8.1.3"
+version = "8.1.1"
description = "Jupyter interactive widgets"
optional = false
python-versions = ">=3.7"
files = [
- {file = "ipywidgets-8.1.3-py3-none-any.whl", hash = "sha256:efafd18f7a142248f7cb0ba890a68b96abd4d6e88ddbda483c9130d12667eaf2"},
- {file = "ipywidgets-8.1.3.tar.gz", hash = "sha256:f5f9eeaae082b1823ce9eac2575272952f40d748893972956dc09700a6392d9c"},
+ {file = "ipywidgets-8.1.1-py3-none-any.whl", hash = "sha256:2b88d728656aea3bbfd05d32c747cfd0078f9d7e159cf982433b58ad717eed7f"},
+ {file = "ipywidgets-8.1.1.tar.gz", hash = "sha256:40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8"},
]
[package.dependencies]
comm = ">=0.1.3"
ipython = ">=6.1.0"
-jupyterlab-widgets = ">=3.0.11,<3.1.0"
+jupyterlab-widgets = ">=3.0.9,<3.1.0"
traitlets = ">=4.3.1"
-widgetsnbextension = ">=4.0.11,<4.1.0"
+widgetsnbextension = ">=4.0.9,<4.1.0"
[package.extras]
test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
@@ -972,13 +909,13 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
[[package]]
name = "jinja2"
-version = "3.1.4"
+version = "3.1.2"
description = "A very fast and expressive template engine."
optional = false
python-versions = ">=3.7"
files = [
- {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"},
- {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"},
+ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
+ {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
]
[package.dependencies]
@@ -989,35 +926,38 @@ i18n = ["Babel (>=2.7)"]
[[package]]
name = "json5"
-version = "0.9.25"
+version = "0.9.14"
description = "A Python implementation of the JSON5 data format."
optional = false
-python-versions = ">=3.8"
+python-versions = "*"
files = [
- {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"},
- {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"},
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
]
+[package.extras]
+dev = ["hypothesis"]
+
[[package]]
name = "jsonpointer"
-version = "3.0.0"
+version = "2.4"
description = "Identify specific nodes in a JSON document (RFC 6901)"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
files = [
- {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"},
- {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"},
+ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
+ {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
]
[[package]]
name = "jsonschema"
-version = "4.22.0"
+version = "4.19.2"
description = "An implementation of JSON Schema validation for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"},
- {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"},
+ {file = "jsonschema-4.19.2-py3-none-any.whl", hash = "sha256:eee9e502c788e89cb166d4d37f43084e3b64ab405c795c03d343a4dbc2c810fc"},
+ {file = "jsonschema-4.19.2.tar.gz", hash = "sha256:c9ff4d7447eed9592c23a12ccee508baf0dd0d59650615e847feb6cdca74f392"},
]
[package.dependencies]
@@ -1040,17 +980,17 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-
[[package]]
name = "jsonschema-specifications"
-version = "2023.12.1"
+version = "2023.7.1"
description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
optional = false
python-versions = ">=3.8"
files = [
- {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
- {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
+ {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"},
+ {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"},
]
[package.dependencies]
-referencing = ">=0.31.0"
+referencing = ">=0.28.0"
[[package]]
name = "jupyter"
@@ -1101,13 +1041,13 @@ testing = ["coverage", "ipykernel", "jupytext", "matplotlib", "nbdime", "nbforma
[[package]]
name = "jupyter-client"
-version = "8.6.2"
+version = "8.6.0"
description = "Jupyter protocol implementation and client libraries"
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"},
- {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"},
+ {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
+ {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
]
[package.dependencies]
@@ -1119,7 +1059,7 @@ traitlets = ">=5.3"
[package.extras]
docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
-test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
+test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
[[package]]
name = "jupyter-console"
@@ -1147,13 +1087,13 @@ test = ["flaky", "pexpect", "pytest"]
[[package]]
name = "jupyter-core"
-version = "5.7.2"
+version = "5.5.0"
description = "Jupyter core package. A base package on which Jupyter projects rely."
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"},
- {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"},
+ {file = "jupyter_core-5.5.0-py3-none-any.whl", hash = "sha256:e11e02cd8ae0a9de5c6c44abf5727df9f2581055afe00b22183f621ba3585805"},
+ {file = "jupyter_core-5.5.0.tar.gz", hash = "sha256:880b86053bf298a8724994f95e99b99130659022a4f7f45f563084b6223861d3"},
]
[package.dependencies]
@@ -1163,17 +1103,17 @@ traitlets = ">=5.3"
[package.extras]
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
-test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"]
+test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
[[package]]
name = "jupyter-events"
-version = "0.10.0"
+version = "0.9.0"
description = "Jupyter Event System library"
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"},
- {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"},
+ {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
+ {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
]
[package.dependencies]
@@ -1192,13 +1132,13 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p
[[package]]
name = "jupyter-lsp"
-version = "2.2.5"
+version = "2.2.0"
description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"},
- {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"},
+ {file = "jupyter-lsp-2.2.0.tar.gz", hash = "sha256:8ebbcb533adb41e5d635eb8fe82956b0aafbf0fd443b6c4bfa906edeeb8635a1"},
+ {file = "jupyter_lsp-2.2.0-py3-none-any.whl", hash = "sha256:9e06b8b4f7dd50300b70dd1a78c0c3b0c3d8fa68e0f2d8a5d1fbab62072aca3f"},
]
[package.dependencies]
@@ -1206,49 +1146,49 @@ jupyter-server = ">=1.1.2"
[[package]]
name = "jupyter-server"
-version = "2.14.1"
+version = "2.10.0"
description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyter_server-2.14.1-py3-none-any.whl", hash = "sha256:16f7177c3a4ea8fe37784e2d31271981a812f0b2874af17339031dc3510cc2a5"},
- {file = "jupyter_server-2.14.1.tar.gz", hash = "sha256:12558d158ec7a0653bf96cc272bc7ad79e0127d503b982ed144399346694f726"},
+ {file = "jupyter_server-2.10.0-py3-none-any.whl", hash = "sha256:dde56c9bc3cb52d7b72cc0f696d15d7163603526f1a758eb4a27405b73eab2a5"},
+ {file = "jupyter_server-2.10.0.tar.gz", hash = "sha256:47b8f5e63440125cb1bb8957bf12b18453ee5ed9efe42d2f7b2ca66a7019a278"},
]
[package.dependencies]
anyio = ">=3.1.0"
-argon2-cffi = ">=21.1"
-jinja2 = ">=3.0.3"
+argon2-cffi = "*"
+jinja2 = "*"
jupyter-client = ">=7.4.4"
jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
-jupyter-events = ">=0.9.0"
-jupyter-server-terminals = ">=0.4.4"
+jupyter-events = ">=0.6.0"
+jupyter-server-terminals = "*"
nbconvert = ">=6.4.4"
nbformat = ">=5.3.0"
-overrides = ">=5.0"
-packaging = ">=22.0"
-prometheus-client = ">=0.9"
-pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""}
+overrides = "*"
+packaging = "*"
+prometheus-client = "*"
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
pyzmq = ">=24"
send2trash = ">=1.8.2"
terminado = ">=0.8.3"
tornado = ">=6.2.0"
traitlets = ">=5.6.0"
-websocket-client = ">=1.7"
+websocket-client = "*"
[package.extras]
-docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
-test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"]
+docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
[[package]]
name = "jupyter-server-terminals"
-version = "0.5.3"
+version = "0.4.4"
description = "A Jupyter Server Extension Providing Terminals."
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"},
- {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"},
+ {file = "jupyter_server_terminals-0.4.4-py3-none-any.whl", hash = "sha256:75779164661cec02a8758a5311e18bb8eb70c4e86c6b699403100f1585a12a36"},
+ {file = "jupyter_server_terminals-0.4.4.tar.gz", hash = "sha256:57ab779797c25a7ba68e97bcfb5d7740f2b5e8a83b5e8102b10438041a7eac5d"},
]
[package.dependencies]
@@ -1256,62 +1196,59 @@ pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
terminado = ">=0.8.3"
[package.extras]
-docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
-test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+docs = ["jinja2", "jupyter-server", "mistune (<3.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
[[package]]
name = "jupyterlab"
-version = "4.2.2"
+version = "4.0.8"
description = "JupyterLab computational environment"
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyterlab-4.2.2-py3-none-any.whl", hash = "sha256:59ee9b839f43308c3dfd55d72d1f1a299ed42a7f91f2d1afe9c12a783f9e525f"},
- {file = "jupyterlab-4.2.2.tar.gz", hash = "sha256:a534b6a25719a92a40d514fb133a9fe8f0d9981b0bbce5d8a5fcaa33344a3038"},
+ {file = "jupyterlab-4.0.8-py3-none-any.whl", hash = "sha256:2ff5aa2a51eb21df241d6011c236e88bd1ff9a5dbb75bebc54472f9c18bfffa4"},
+ {file = "jupyterlab-4.0.8.tar.gz", hash = "sha256:c4fe93f977bcc987bd395d7fae5ab02e0c042bf4e0f7c95196f3e2e578c2fb3a"},
]
[package.dependencies]
async-lru = ">=1.0.0"
-httpx = ">=0.25.0"
-ipykernel = ">=6.5.0"
+ipykernel = "*"
jinja2 = ">=3.0.3"
jupyter-core = "*"
jupyter-lsp = ">=2.0.0"
jupyter-server = ">=2.4.0,<3"
-jupyterlab-server = ">=2.27.1,<3"
+jupyterlab-server = ">=2.19.0,<3"
notebook-shim = ">=0.2"
packaging = "*"
-setuptools = ">=40.1.0"
tornado = ">=6.2.0"
traitlets = "*"
[package.extras]
-dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"]
-docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"]
-docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"]
+dev = ["black[jupyter] (==23.10.1)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.0.292)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"]
test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
-upgrade-extension = ["copier (>=8,<10)", "jinja2-time (<0.3)", "pydantic (<2.0)", "pyyaml-include (<2.0)", "tomli-w (<2.0)"]
[[package]]
name = "jupyterlab-pygments"
-version = "0.3.0"
+version = "0.2.2"
description = "Pygments theme using JupyterLab CSS variables"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
- {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+ {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"},
+ {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"},
]
[[package]]
name = "jupyterlab-server"
-version = "2.27.2"
+version = "2.25.1"
description = "A set of server components for JupyterLab and JupyterLab like applications."
optional = false
python-versions = ">=3.8"
files = [
- {file = "jupyterlab_server-2.27.2-py3-none-any.whl", hash = "sha256:54aa2d64fd86383b5438d9f0c032f043c4d8c0264b8af9f60bd061157466ea43"},
- {file = "jupyterlab_server-2.27.2.tar.gz", hash = "sha256:15cbb349dc45e954e09bacf81b9f9bcb10815ff660fb2034ecd7417db3a7ea27"},
+ {file = "jupyterlab_server-2.25.1-py3-none-any.whl", hash = "sha256:dce9714d91fb3e53d2b37d0e0619fa26ed223c8e7b8c81cca112926de19b53a4"},
+ {file = "jupyterlab_server-2.25.1.tar.gz", hash = "sha256:6491283b0000698eae1a38c48507930560dfcf7461aea0015368698aab34dd9c"},
]
[package.dependencies]
@@ -1326,17 +1263,17 @@ requests = ">=2.31"
[package.extras]
docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
-test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
[[package]]
name = "jupyterlab-widgets"
-version = "3.0.11"
+version = "3.0.9"
description = "Jupyter interactive widgets for JupyterLab"
optional = false
python-versions = ">=3.7"
files = [
- {file = "jupyterlab_widgets-3.0.11-py3-none-any.whl", hash = "sha256:78287fd86d20744ace330a61625024cf5521e1c012a352ddc0a3cdc2348becd0"},
- {file = "jupyterlab_widgets-3.0.11.tar.gz", hash = "sha256:dd5ac679593c969af29c9bed054c24f26842baa51352114736756bc035deee27"},
+ {file = "jupyterlab_widgets-3.0.9-py3-none-any.whl", hash = "sha256:3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d"},
+ {file = "jupyterlab_widgets-3.0.9.tar.gz", hash = "sha256:6005a4e974c7beee84060fdfba341a3218495046de8ae3ec64888e5fe19fdb4c"},
]
[[package]]
@@ -1454,109 +1391,98 @@ files = [
[[package]]
name = "markupsafe"
-version = "2.1.5"
+version = "2.1.3"
description = "Safely add untrusted strings to HTML/XML markup."
optional = false
python-versions = ">=3.7"
files = [
- {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
- {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"},
+ {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"},
]
[[package]]
name = "matplotlib"
-version = "3.9.0"
+version = "3.8.1"
description = "Python plotting package"
optional = false
python-versions = ">=3.9"
files = [
- {file = "matplotlib-3.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2bcee1dffaf60fe7656183ac2190bd630842ff87b3153afb3e384d966b57fe56"},
- {file = "matplotlib-3.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f988bafb0fa39d1074ddd5bacd958c853e11def40800c5824556eb630f94d3b"},
- {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe428e191ea016bb278758c8ee82a8129c51d81d8c4bc0846c09e7e8e9057241"},
- {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf3978060a106fab40c328778b148f590e27f6fa3cd15a19d6892575bce387d"},
- {file = "matplotlib-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e7f03e5cbbfacdd48c8ea394d365d91ee8f3cae7e6ec611409927b5ed997ee4"},
- {file = "matplotlib-3.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:13beb4840317d45ffd4183a778685e215939be7b08616f431c7795276e067463"},
- {file = "matplotlib-3.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38"},
- {file = "matplotlib-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a2fa6d899e17ddca6d6526cf6e7ba677738bf2a6a9590d702c277204a7c6152"},
- {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550cdda3adbd596078cca7d13ed50b77879104e2e46392dcd7c75259d8f00e85"},
- {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cce0f31b351e3551d1f3779420cf8f6ec0d4a8cf9c0237a3b549fd28eb4abb"},
- {file = "matplotlib-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c53aeb514ccbbcbab55a27f912d79ea30ab21ee0531ee2c09f13800efb272674"},
- {file = "matplotlib-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5be985db2596d761cdf0c2eaf52396f26e6a64ab46bd8cd810c48972349d1be"},
- {file = "matplotlib-3.9.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c79f3a585f1368da6049318bdf1f85568d8d04b2e89fc24b7e02cc9b62017382"},
- {file = "matplotlib-3.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bdd1ecbe268eb3e7653e04f451635f0fb0f77f07fd070242b44c076c9106da84"},
- {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e85a1a6d732f645f1403ce5e6727fd9418cd4574521d5803d3d94911038e5"},
- {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a490715b3b9984fa609116481b22178348c1a220a4499cda79132000a79b4db"},
- {file = "matplotlib-3.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8146ce83cbc5dc71c223a74a1996d446cd35cfb6a04b683e1446b7e6c73603b7"},
- {file = "matplotlib-3.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:d91a4ffc587bacf5c4ce4ecfe4bcd23a4b675e76315f2866e588686cc97fccdf"},
- {file = "matplotlib-3.9.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:616fabf4981a3b3c5a15cd95eba359c8489c4e20e03717aea42866d8d0465956"},
- {file = "matplotlib-3.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd53c79fd02f1c1808d2cfc87dd3cf4dbc63c5244a58ee7944497107469c8d8a"},
- {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06a478f0d67636554fa78558cfbcd7b9dba85b51f5c3b5a0c9be49010cf5f321"},
- {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81c40af649d19c85f8073e25e5806926986806fa6d54be506fbf02aef47d5a89"},
- {file = "matplotlib-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52146fc3bd7813cc784562cb93a15788be0b2875c4655e2cc6ea646bfa30344b"},
- {file = "matplotlib-3.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:0fc51eaa5262553868461c083d9adadb11a6017315f3a757fc45ec6ec5f02888"},
- {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bd4f2831168afac55b881db82a7730992aa41c4f007f1913465fb182d6fb20c0"},
- {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:290d304e59be2b33ef5c2d768d0237f5bd132986bdcc66f80bc9bcc300066a03"},
- {file = "matplotlib-3.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff2e239c26be4f24bfa45860c20ffccd118d270c5b5d081fa4ea409b5469fcd"},
- {file = "matplotlib-3.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:af4001b7cae70f7eaacfb063db605280058246de590fa7874f00f62259f2df7e"},
- {file = "matplotlib-3.9.0.tar.gz", hash = "sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a"},
+ {file = "matplotlib-3.8.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e11ab864323fa73ac1b7849688d9671c47a2665242e899785b4db1a375b547e1"},
+ {file = "matplotlib-3.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:43a9d40feb63c9e31a0b8b069dcbd74a912f59bdc0095d187126694cd26977e4"},
+ {file = "matplotlib-3.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:608ea2951838d391e45dec2e644888db6899c752d3c29e157af9dcefb3d7d8d5"},
+ {file = "matplotlib-3.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82ec95b02e894561c21e066bd0c716e4b410df141ce9441aa5af6cd937e4ade2"},
+ {file = "matplotlib-3.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e3ad1759ad4a5245172c6d32b8ada603a6020d03211524c39d78d25c9a7dc0d2"},
+ {file = "matplotlib-3.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:20a0fdfd3ee836179047f3782be060057b878ad37f5abe29edf006a1ff3ecd73"},
+ {file = "matplotlib-3.8.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7658b7073c1d6a2922ecc0ed41602410fae88586cb8a54f7a2063d537b6beaf7"},
+ {file = "matplotlib-3.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf6889643d4560fcc56f9f0941f078e4df0d72a6c3e4ca548841fc13c5642664"},
+ {file = "matplotlib-3.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff842e27bc6a80de08c40e0bfdce460bd08080e8a94af131162b6a1b8948f2cc"},
+ {file = "matplotlib-3.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f99d07c0e753717775be7be39ab383453b4d8b629c9fa174596b970c6555890"},
+ {file = "matplotlib-3.8.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f34b46dbb1db1f09bfa937cd5853e5f2af232caeeff509c3ab6e43fd33780eae"},
+ {file = "matplotlib-3.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1fcb49b6baf0375281979cbf26695ec10bd1cada1e311893e89533b3b70143e7"},
+ {file = "matplotlib-3.8.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e17674ee127f78f26fea237e7f4d5cf910a8be82beb6260fedf358b88075b823"},
+ {file = "matplotlib-3.8.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d921c0270647ab11c3ef283efaaa3d46fd005ba233bfb3aea75231cdf3656de8"},
+ {file = "matplotlib-3.8.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2afe7d2f8c9e35e94fbcfcfd9b28f29cb32f0a9068cba469cf907428379c8db9"},
+ {file = "matplotlib-3.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5a504ff40f81d6233603475a45497a6dca37a873393fa20ae6f7dd6596ef72b"},
+ {file = "matplotlib-3.8.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cd54bbf089953140905768ed4626d7223e1ad1d7e2a138410a9c4d3b865ccd80"},
+ {file = "matplotlib-3.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:27502d2452208ae784c19504644f09f83742809143bbeae147617640930aa344"},
+ {file = "matplotlib-3.8.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f55fb5ff02d999a100be28bf6ffe826e1867a54c7b465409685332c9dd48ffa5"},
+ {file = "matplotlib-3.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:afb72822ae410d62aa1a2920c6563cb5680de9078358f0e9474396c6c3e06be2"},
+ {file = "matplotlib-3.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43cf368a4a1d8cbc426944806e5e183cead746647a64d2cdb786441546235967"},
+ {file = "matplotlib-3.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54c55457c7f5ea4dfdba0020004fc7667f5c10c8d9b8010d735345acc06c9b8"},
+ {file = "matplotlib-3.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e3bb809b743653b5aab5d72ee45c8c937c28e147b0846b0826a54bece898608c"},
+ {file = "matplotlib-3.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:c1b0ecaa0d1f4fe1e30f625a2347f0034a89a7d17c39efbb502e554d92ee2f61"},
+ {file = "matplotlib-3.8.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ca84deaa38cb64b7dd160ca2046b45f7b5dbff2b0179642e1339fadc337446c9"},
+ {file = "matplotlib-3.8.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed3b29f54f6bbf3eaca4cbd23bc260155153ace63b7f597c474fa6fc6f386530"},
+ {file = "matplotlib-3.8.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d24c47a1bb47e392fbcd26fe322e4ff3431653ac1e8718e4e147d450ae97a44"},
+ {file = "matplotlib-3.8.1.tar.gz", hash = "sha256:044df81c1f6f3a8e52d70c4cfcb44e77ea9632a10929932870dfaa90de94365d"},
]
[package.dependencies]
@@ -1564,24 +1490,21 @@ contourpy = ">=1.0.1"
cycler = ">=0.10"
fonttools = ">=4.22.0"
kiwisolver = ">=1.3.1"
-numpy = ">=1.23"
+numpy = ">=1.21,<2"
packaging = ">=20.0"
pillow = ">=8"
pyparsing = ">=2.3.1"
python-dateutil = ">=2.7"
-[package.extras]
-dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"]
-
[[package]]
name = "matplotlib-inline"
-version = "0.1.7"
+version = "0.1.6"
description = "Inline Matplotlib backend for Jupyter"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.5"
files = [
- {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"},
- {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"},
+ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
+ {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
]
[package.dependencies]
@@ -1600,67 +1523,67 @@ files = [
[[package]]
name = "msgpack"
-version = "1.0.8"
+version = "1.0.7"
description = "MessagePack serializer"
optional = false
python-versions = ">=3.8"
files = [
- {file = "msgpack-1.0.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:505fe3d03856ac7d215dbe005414bc28505d26f0c128906037e66d98c4e95868"},
- {file = "msgpack-1.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6b7842518a63a9f17107eb176320960ec095a8ee3b4420b5f688e24bf50c53c"},
- {file = "msgpack-1.0.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:376081f471a2ef24828b83a641a02c575d6103a3ad7fd7dade5486cad10ea659"},
- {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e390971d082dba073c05dbd56322427d3280b7cc8b53484c9377adfbae67dc2"},
- {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e073efcba9ea99db5acef3959efa45b52bc67b61b00823d2a1a6944bf45982"},
- {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82d92c773fbc6942a7a8b520d22c11cfc8fd83bba86116bfcf962c2f5c2ecdaa"},
- {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9ee32dcb8e531adae1f1ca568822e9b3a738369b3b686d1477cbc643c4a9c128"},
- {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e3aa7e51d738e0ec0afbed661261513b38b3014754c9459508399baf14ae0c9d"},
- {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69284049d07fce531c17404fcba2bb1df472bc2dcdac642ae71a2d079d950653"},
- {file = "msgpack-1.0.8-cp310-cp310-win32.whl", hash = "sha256:13577ec9e247f8741c84d06b9ece5f654920d8365a4b636ce0e44f15e07ec693"},
- {file = "msgpack-1.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:e532dbd6ddfe13946de050d7474e3f5fb6ec774fbb1a188aaf469b08cf04189a"},
- {file = "msgpack-1.0.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9517004e21664f2b5a5fd6333b0731b9cf0817403a941b393d89a2f1dc2bd836"},
- {file = "msgpack-1.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d16a786905034e7e34098634b184a7d81f91d4c3d246edc6bd7aefb2fd8ea6ad"},
- {file = "msgpack-1.0.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2872993e209f7ed04d963e4b4fbae72d034844ec66bc4ca403329db2074377b"},
- {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c330eace3dd100bdb54b5653b966de7f51c26ec4a7d4e87132d9b4f738220ba"},
- {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83b5c044f3eff2a6534768ccfd50425939e7a8b5cf9a7261c385de1e20dcfc85"},
- {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1876b0b653a808fcd50123b953af170c535027bf1d053b59790eebb0aeb38950"},
- {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dfe1f0f0ed5785c187144c46a292b8c34c1295c01da12e10ccddfc16def4448a"},
- {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3528807cbbb7f315bb81959d5961855e7ba52aa60a3097151cb21956fbc7502b"},
- {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e2f879ab92ce502a1e65fce390eab619774dda6a6ff719718069ac94084098ce"},
- {file = "msgpack-1.0.8-cp311-cp311-win32.whl", hash = "sha256:26ee97a8261e6e35885c2ecd2fd4a6d38252246f94a2aec23665a4e66d066305"},
- {file = "msgpack-1.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:eadb9f826c138e6cf3c49d6f8de88225a3c0ab181a9b4ba792e006e5292d150e"},
- {file = "msgpack-1.0.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:114be227f5213ef8b215c22dde19532f5da9652e56e8ce969bf0a26d7c419fee"},
- {file = "msgpack-1.0.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d661dc4785affa9d0edfdd1e59ec056a58b3dbb9f196fa43587f3ddac654ac7b"},
- {file = "msgpack-1.0.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d56fd9f1f1cdc8227d7b7918f55091349741904d9520c65f0139a9755952c9e8"},
- {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0726c282d188e204281ebd8de31724b7d749adebc086873a59efb8cf7ae27df3"},
- {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8db8e423192303ed77cff4dce3a4b88dbfaf43979d280181558af5e2c3c71afc"},
- {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99881222f4a8c2f641f25703963a5cefb076adffd959e0558dc9f803a52d6a58"},
- {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b5505774ea2a73a86ea176e8a9a4a7c8bf5d521050f0f6f8426afe798689243f"},
- {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ef254a06bcea461e65ff0373d8a0dd1ed3aa004af48839f002a0c994a6f72d04"},
- {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1dd7839443592d00e96db831eddb4111a2a81a46b028f0facd60a09ebbdd543"},
- {file = "msgpack-1.0.8-cp312-cp312-win32.whl", hash = "sha256:64d0fcd436c5683fdd7c907eeae5e2cbb5eb872fafbc03a43609d7941840995c"},
- {file = "msgpack-1.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:74398a4cf19de42e1498368c36eed45d9528f5fd0155241e82c4082b7e16cffd"},
- {file = "msgpack-1.0.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ceea77719d45c839fd73abcb190b8390412a890df2f83fb8cf49b2a4b5c2f40"},
- {file = "msgpack-1.0.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ab0bbcd4d1f7b6991ee7c753655b481c50084294218de69365f8f1970d4c151"},
- {file = "msgpack-1.0.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1cce488457370ffd1f953846f82323cb6b2ad2190987cd4d70b2713e17268d24"},
- {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3923a1778f7e5ef31865893fdca12a8d7dc03a44b33e2a5f3295416314c09f5d"},
- {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a22e47578b30a3e199ab067a4d43d790249b3c0587d9a771921f86250c8435db"},
- {file = "msgpack-1.0.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd739c9251d01e0279ce729e37b39d49a08c0420d3fee7f2a4968c0576678f77"},
- {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3420522057ebab1728b21ad473aa950026d07cb09da41103f8e597dfbfaeb13"},
- {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5845fdf5e5d5b78a49b826fcdc0eb2e2aa7191980e3d2cfd2a30303a74f212e2"},
- {file = "msgpack-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a0e76621f6e1f908ae52860bdcb58e1ca85231a9b0545e64509c931dd34275a"},
- {file = "msgpack-1.0.8-cp38-cp38-win32.whl", hash = "sha256:374a8e88ddab84b9ada695d255679fb99c53513c0a51778796fcf0944d6c789c"},
- {file = "msgpack-1.0.8-cp38-cp38-win_amd64.whl", hash = "sha256:f3709997b228685fe53e8c433e2df9f0cdb5f4542bd5114ed17ac3c0129b0480"},
- {file = "msgpack-1.0.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f51bab98d52739c50c56658cc303f190785f9a2cd97b823357e7aeae54c8f68a"},
- {file = "msgpack-1.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:73ee792784d48aa338bba28063e19a27e8d989344f34aad14ea6e1b9bd83f596"},
- {file = "msgpack-1.0.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f9904e24646570539a8950400602d66d2b2c492b9010ea7e965025cb71d0c86d"},
- {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e75753aeda0ddc4c28dce4c32ba2f6ec30b1b02f6c0b14e547841ba5b24f753f"},
- {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5dbf059fb4b7c240c873c1245ee112505be27497e90f7c6591261c7d3c3a8228"},
- {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4916727e31c28be8beaf11cf117d6f6f188dcc36daae4e851fee88646f5b6b18"},
- {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7938111ed1358f536daf311be244f34df7bf3cdedb3ed883787aca97778b28d8"},
- {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:493c5c5e44b06d6c9268ce21b302c9ca055c1fd3484c25ba41d34476c76ee746"},
- {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fbb160554e319f7b22ecf530a80a3ff496d38e8e07ae763b9e82fadfe96f273"},
- {file = "msgpack-1.0.8-cp39-cp39-win32.whl", hash = "sha256:f9af38a89b6a5c04b7d18c492c8ccf2aee7048aff1ce8437c4683bb5a1df893d"},
- {file = "msgpack-1.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:ed59dd52075f8fc91da6053b12e8c89e37aa043f8986efd89e61fae69dc1b011"},
- {file = "msgpack-1.0.8.tar.gz", hash = "sha256:95c02b0e27e706e48d0e5426d1710ca78e0f0628d6e89d5b5a5b91a5f12274f3"},
+ {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862"},
+ {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329"},
+ {file = "msgpack-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b"},
+ {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6"},
+ {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee"},
+ {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d"},
+ {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d"},
+ {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1"},
+ {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681"},
+ {file = "msgpack-1.0.7-cp310-cp310-win32.whl", hash = "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9"},
+ {file = "msgpack-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415"},
+ {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84"},
+ {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93"},
+ {file = "msgpack-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8"},
+ {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46"},
+ {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b"},
+ {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e"},
+ {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002"},
+ {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c"},
+ {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e"},
+ {file = "msgpack-1.0.7-cp311-cp311-win32.whl", hash = "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1"},
+ {file = "msgpack-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82"},
+ {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b"},
+ {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4"},
+ {file = "msgpack-1.0.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee"},
+ {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5"},
+ {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672"},
+ {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075"},
+ {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba"},
+ {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c"},
+ {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5"},
+ {file = "msgpack-1.0.7-cp312-cp312-win32.whl", hash = "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9"},
+ {file = "msgpack-1.0.7-cp312-cp312-win_amd64.whl", hash = "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf"},
+ {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95"},
+ {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0"},
+ {file = "msgpack-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7"},
+ {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d"},
+ {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524"},
+ {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc"},
+ {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc"},
+ {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf"},
+ {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c"},
+ {file = "msgpack-1.0.7-cp38-cp38-win32.whl", hash = "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2"},
+ {file = "msgpack-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c"},
+ {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f"},
+ {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81"},
+ {file = "msgpack-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc"},
+ {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d"},
+ {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7"},
+ {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61"},
+ {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819"},
+ {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd"},
+ {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f"},
+ {file = "msgpack-1.0.7-cp39-cp39-win32.whl", hash = "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad"},
+ {file = "msgpack-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3"},
+ {file = "msgpack-1.0.7.tar.gz", hash = "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87"},
]
[[package]]
@@ -1687,13 +1610,13 @@ test = ["flaky", "ipykernel", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "p
[[package]]
name = "nbconvert"
-version = "7.16.4"
-description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)."
+version = "7.11.0"
+description = "Converting Jupyter Notebooks"
optional = false
python-versions = ">=3.8"
files = [
- {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"},
- {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"},
+ {file = "nbconvert-7.11.0-py3-none-any.whl", hash = "sha256:d1d417b7f34a4e38887f8da5bdfd12372adf3b80f995d57556cb0972c68909fe"},
+ {file = "nbconvert-7.11.0.tar.gz", hash = "sha256:abedc01cf543177ffde0bfc2a69726d5a478f6af10a332fc1bf29fcb4f0cf000"},
]
[package.dependencies]
@@ -1714,29 +1637,29 @@ tinycss2 = "*"
traitlets = ">=5.1"
[package.extras]
-all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"]
+all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
-qtpdf = ["pyqtwebengine (>=5.15)"]
+qtpdf = ["nbconvert[qtpng]"]
qtpng = ["pyqtwebengine (>=5.15)"]
serve = ["tornado (>=6.1)"]
-test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pytest"]
webpdf = ["playwright"]
[[package]]
name = "nbformat"
-version = "5.10.4"
+version = "5.9.2"
description = "The Jupyter Notebook format"
optional = false
python-versions = ">=3.8"
files = [
- {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"},
- {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"},
+ {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
+ {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
]
[package.dependencies]
-fastjsonschema = ">=2.15"
+fastjsonschema = "*"
jsonschema = ">=2.6"
-jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+jupyter-core = "*"
traitlets = ">=5.1"
[package.extras]
@@ -1745,47 +1668,47 @@ test = ["pep440", "pre-commit", "pytest", "testpath"]
[[package]]
name = "nest-asyncio"
-version = "1.6.0"
+version = "1.5.8"
description = "Patch asyncio to allow nested event loops"
optional = false
python-versions = ">=3.5"
files = [
- {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
- {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+ {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"},
+ {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"},
]
[[package]]
name = "notebook"
-version = "7.2.1"
+version = "7.0.6"
description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
optional = false
python-versions = ">=3.8"
files = [
- {file = "notebook-7.2.1-py3-none-any.whl", hash = "sha256:f45489a3995746f2195a137e0773e2130960b51c9ac3ce257dbc2705aab3a6ca"},
- {file = "notebook-7.2.1.tar.gz", hash = "sha256:4287b6da59740b32173d01d641f763d292f49c30e7a51b89c46ba8473126341e"},
+ {file = "notebook-7.0.6-py3-none-any.whl", hash = "sha256:0fe8f67102fea3744fedf652e4c15339390902ca70c5a31c4f547fa23da697cc"},
+ {file = "notebook-7.0.6.tar.gz", hash = "sha256:ec6113b06529019f7f287819af06c97a2baf7a95ac21a8f6e32192898e9f9a58"},
]
[package.dependencies]
jupyter-server = ">=2.4.0,<3"
-jupyterlab = ">=4.2.0,<4.3"
-jupyterlab-server = ">=2.27.1,<3"
+jupyterlab = ">=4.0.2,<5"
+jupyterlab-server = ">=2.22.1,<3"
notebook-shim = ">=0.2,<0.3"
tornado = ">=6.2.0"
[package.extras]
dev = ["hatch", "pre-commit"]
docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
-test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
[[package]]
name = "notebook-shim"
-version = "0.2.4"
+version = "0.2.3"
description = "A shim layer for notebook traits and config"
optional = false
python-versions = ">=3.7"
files = [
- {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"},
- {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"},
+ {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
+ {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
]
[package.dependencies]
@@ -1796,67 +1719,54 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"
[[package]]
name = "numpy"
-version = "2.0.0"
+version = "1.26.1"
description = "Fundamental package for array computing in Python"
optional = false
-python-versions = ">=3.9"
+python-versions = "<3.13,>=3.9"
files = [
- {file = "numpy-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:04494f6ec467ccb5369d1808570ae55f6ed9b5809d7f035059000a37b8d7e86f"},
- {file = "numpy-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2635dbd200c2d6faf2ef9a0d04f0ecc6b13b3cad54f7c67c61155138835515d2"},
- {file = "numpy-2.0.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:0a43f0974d501842866cc83471bdb0116ba0dffdbaac33ec05e6afed5b615238"},
- {file = "numpy-2.0.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:8d83bb187fb647643bd56e1ae43f273c7f4dbcdf94550d7938cfc32566756514"},
- {file = "numpy-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e843d186c8fb1b102bef3e2bc35ef81160ffef3194646a7fdd6a73c6b97196"},
- {file = "numpy-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d7696c615765091cc5093f76fd1fa069870304beaccfd58b5dcc69e55ef49c1"},
- {file = "numpy-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b4c76e3d4c56f145d41b7b6751255feefae92edbc9a61e1758a98204200f30fc"},
- {file = "numpy-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd3a644e4807e73b4e1867b769fbf1ce8c5d80e7caaef0d90dcdc640dfc9787"},
- {file = "numpy-2.0.0-cp310-cp310-win32.whl", hash = "sha256:cee6cc0584f71adefe2c908856ccc98702baf95ff80092e4ca46061538a2ba98"},
- {file = "numpy-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:ed08d2703b5972ec736451b818c2eb9da80d66c3e84aed1deeb0c345fefe461b"},
- {file = "numpy-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad0c86f3455fbd0de6c31a3056eb822fc939f81b1618f10ff3406971893b62a5"},
- {file = "numpy-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7f387600d424f91576af20518334df3d97bc76a300a755f9a8d6e4f5cadd289"},
- {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:34f003cb88b1ba38cb9a9a4a3161c1604973d7f9d5552c38bc2f04f829536609"},
- {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b6f6a8f45d0313db07d6d1d37bd0b112f887e1369758a5419c0370ba915b3871"},
- {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f64641b42b2429f56ee08b4f427a4d2daf916ec59686061de751a55aafa22e4"},
- {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7039a136017eaa92c1848152827e1424701532ca8e8967fe480fe1569dae581"},
- {file = "numpy-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46e161722e0f619749d1cd892167039015b2c2817296104487cd03ed4a955995"},
- {file = "numpy-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0e50842b2295ba8414c8c1d9d957083d5dfe9e16828b37de883f51fc53c4016f"},
- {file = "numpy-2.0.0-cp311-cp311-win32.whl", hash = "sha256:2ce46fd0b8a0c947ae047d222f7136fc4d55538741373107574271bc00e20e8f"},
- {file = "numpy-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbd6acc766814ea6443628f4e6751d0da6593dae29c08c0b2606164db026970c"},
- {file = "numpy-2.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:354f373279768fa5a584bac997de6a6c9bc535c482592d7a813bb0c09be6c76f"},
- {file = "numpy-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4d2f62e55a4cd9c58c1d9a1c9edaedcd857a73cb6fda875bf79093f9d9086f85"},
- {file = "numpy-2.0.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:1e72728e7501a450288fc8e1f9ebc73d90cfd4671ebbd631f3e7857c39bd16f2"},
- {file = "numpy-2.0.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:84554fc53daa8f6abf8e8a66e076aff6ece62de68523d9f665f32d2fc50fd66e"},
- {file = "numpy-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73aafd1afca80afecb22718f8700b40ac7cab927b8abab3c3e337d70e10e5a2"},
- {file = "numpy-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d9f7d256fbc804391a7f72d4a617302b1afac1112fac19b6c6cec63fe7fe8a"},
- {file = "numpy-2.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0ec84b9ba0654f3b962802edc91424331f423dcf5d5f926676e0150789cb3d95"},
- {file = "numpy-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:feff59f27338135776f6d4e2ec7aeeac5d5f7a08a83e80869121ef8164b74af9"},
- {file = "numpy-2.0.0-cp312-cp312-win32.whl", hash = "sha256:c5a59996dc61835133b56a32ebe4ef3740ea5bc19b3983ac60cc32be5a665d54"},
- {file = "numpy-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:a356364941fb0593bb899a1076b92dfa2029f6f5b8ba88a14fd0984aaf76d0df"},
- {file = "numpy-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e61155fae27570692ad1d327e81c6cf27d535a5d7ef97648a17d922224b216de"},
- {file = "numpy-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4554eb96f0fd263041baf16cf0881b3f5dafae7a59b1049acb9540c4d57bc8cb"},
- {file = "numpy-2.0.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:903703372d46bce88b6920a0cd86c3ad82dae2dbef157b5fc01b70ea1cfc430f"},
- {file = "numpy-2.0.0-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:3e8e01233d57639b2e30966c63d36fcea099d17c53bf424d77f088b0f4babd86"},
- {file = "numpy-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cde1753efe513705a0c6d28f5884e22bdc30438bf0085c5c486cdaff40cd67a"},
- {file = "numpy-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:821eedb7165ead9eebdb569986968b541f9908979c2da8a4967ecac4439bae3d"},
- {file = "numpy-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a1712c015831da583b21c5bfe15e8684137097969c6d22e8316ba66b5baabe4"},
- {file = "numpy-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9c27f0946a3536403efb0e1c28def1ae6730a72cd0d5878db38824855e3afc44"},
- {file = "numpy-2.0.0-cp39-cp39-win32.whl", hash = "sha256:63b92c512d9dbcc37f9d81b123dec99fdb318ba38c8059afc78086fe73820275"},
- {file = "numpy-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:3f6bed7f840d44c08ebdb73b1825282b801799e325bcbdfa6bc5c370e5aecc65"},
- {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9416a5c2e92ace094e9f0082c5fd473502c91651fb896bc17690d6fc475128d6"},
- {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:17067d097ed036636fa79f6a869ac26df7db1ba22039d962422506640314933a"},
- {file = "numpy-2.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ecb5b0582cd125f67a629072fed6f83562d9dd04d7e03256c9829bdec027ad"},
- {file = "numpy-2.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cef04d068f5fb0518a77857953193b6bb94809a806bd0a14983a8f12ada060c9"},
- {file = "numpy-2.0.0.tar.gz", hash = "sha256:cf5d1c9e6837f8af9f92b6bd3e86d513cdc11f60fd62185cc49ec7d1aba34864"},
+ {file = "numpy-1.26.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82e871307a6331b5f09efda3c22e03c095d957f04bf6bc1804f30048d0e5e7af"},
+ {file = "numpy-1.26.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdd9ec98f0063d93baeb01aad472a1a0840dee302842a2746a7a8e92968f9575"},
+ {file = "numpy-1.26.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d78f269e0c4fd365fc2992c00353e4530d274ba68f15e968d8bc3c69ce5f5244"},
+ {file = "numpy-1.26.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ab9163ca8aeb7fd32fe93866490654d2f7dda4e61bc6297bf72ce07fdc02f67"},
+ {file = "numpy-1.26.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:78ca54b2f9daffa5f323f34cdf21e1d9779a54073f0018a3094ab907938331a2"},
+ {file = "numpy-1.26.1-cp310-cp310-win32.whl", hash = "sha256:d1cfc92db6af1fd37a7bb58e55c8383b4aa1ba23d012bdbba26b4bcca45ac297"},
+ {file = "numpy-1.26.1-cp310-cp310-win_amd64.whl", hash = "sha256:d2984cb6caaf05294b8466966627e80bf6c7afd273279077679cb010acb0e5ab"},
+ {file = "numpy-1.26.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cd7837b2b734ca72959a1caf3309457a318c934abef7a43a14bb984e574bbb9a"},
+ {file = "numpy-1.26.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1c59c046c31a43310ad0199d6299e59f57a289e22f0f36951ced1c9eac3665b9"},
+ {file = "numpy-1.26.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d58e8c51a7cf43090d124d5073bc29ab2755822181fcad978b12e144e5e5a4b3"},
+ {file = "numpy-1.26.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6081aed64714a18c72b168a9276095ef9155dd7888b9e74b5987808f0dd0a974"},
+ {file = "numpy-1.26.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:97e5d6a9f0702c2863aaabf19f0d1b6c2628fbe476438ce0b5ce06e83085064c"},
+ {file = "numpy-1.26.1-cp311-cp311-win32.whl", hash = "sha256:b9d45d1dbb9de84894cc50efece5b09939752a2d75aab3a8b0cef6f3a35ecd6b"},
+ {file = "numpy-1.26.1-cp311-cp311-win_amd64.whl", hash = "sha256:3649d566e2fc067597125428db15d60eb42a4e0897fc48d28cb75dc2e0454e53"},
+ {file = "numpy-1.26.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d1bd82d539607951cac963388534da3b7ea0e18b149a53cf883d8f699178c0f"},
+ {file = "numpy-1.26.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:afd5ced4e5a96dac6725daeb5242a35494243f2239244fad10a90ce58b071d24"},
+ {file = "numpy-1.26.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a03fb25610ef560a6201ff06df4f8105292ba56e7cdd196ea350d123fc32e24e"},
+ {file = "numpy-1.26.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcfaf015b79d1f9f9c9fd0731a907407dc3e45769262d657d754c3a028586124"},
+ {file = "numpy-1.26.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e509cbc488c735b43b5ffea175235cec24bbc57b227ef1acc691725beb230d1c"},
+ {file = "numpy-1.26.1-cp312-cp312-win32.whl", hash = "sha256:af22f3d8e228d84d1c0c44c1fbdeb80f97a15a0abe4f080960393a00db733b66"},
+ {file = "numpy-1.26.1-cp312-cp312-win_amd64.whl", hash = "sha256:9f42284ebf91bdf32fafac29d29d4c07e5e9d1af862ea73686581773ef9e73a7"},
+ {file = "numpy-1.26.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb894accfd16b867d8643fc2ba6c8617c78ba2828051e9a69511644ce86ce83e"},
+ {file = "numpy-1.26.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e44ccb93f30c75dfc0c3aa3ce38f33486a75ec9abadabd4e59f114994a9c4617"},
+ {file = "numpy-1.26.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9696aa2e35cc41e398a6d42d147cf326f8f9d81befcb399bc1ed7ffea339b64e"},
+ {file = "numpy-1.26.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5b411040beead47a228bde3b2241100454a6abde9df139ed087bd73fc0a4908"},
+ {file = "numpy-1.26.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1e11668d6f756ca5ef534b5be8653d16c5352cbb210a5c2a79ff288e937010d5"},
+ {file = "numpy-1.26.1-cp39-cp39-win32.whl", hash = "sha256:d1d2c6b7dd618c41e202c59c1413ef9b2c8e8a15f5039e344af64195459e3104"},
+ {file = "numpy-1.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:59227c981d43425ca5e5c01094d59eb14e8772ce6975d4b2fc1e106a833d5ae2"},
+ {file = "numpy-1.26.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:06934e1a22c54636a059215d6da99e23286424f316fddd979f5071093b648668"},
+ {file = "numpy-1.26.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76ff661a867d9272cd2a99eed002470f46dbe0943a5ffd140f49be84f68ffc42"},
+ {file = "numpy-1.26.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6965888d65d2848e8768824ca8288db0a81263c1efccec881cb35a0d805fcd2f"},
+ {file = "numpy-1.26.1.tar.gz", hash = "sha256:c8c6c72d4a9f831f328efb1312642a1cafafaa88981d9ab76368d50d07d93cbe"},
]
[[package]]
name = "openpyxl"
-version = "3.1.4"
+version = "3.1.2"
description = "A Python library to read/write Excel 2010 xlsx/xlsm files"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.6"
files = [
- {file = "openpyxl-3.1.4-py2.py3-none-any.whl", hash = "sha256:ec17f6483f2b8f7c88c57e5e5d3b0de0e3fb9ac70edc084d28e864f5b33bbefd"},
- {file = "openpyxl-3.1.4.tar.gz", hash = "sha256:8d2c8adf5d20d6ce8f9bca381df86b534835e974ed0156dacefa76f68c1d69fb"},
+ {file = "openpyxl-3.1.2-py2.py3-none-any.whl", hash = "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5"},
+ {file = "openpyxl-3.1.2.tar.gz", hash = "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184"},
]
[package.dependencies]
@@ -1864,123 +1774,118 @@ et-xmlfile = "*"
[[package]]
name = "overrides"
-version = "7.7.0"
+version = "7.4.0"
description = "A decorator to automatically detect mismatch when overriding a method."
optional = false
python-versions = ">=3.6"
files = [
- {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"},
- {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"},
+ {file = "overrides-7.4.0-py3-none-any.whl", hash = "sha256:3ad24583f86d6d7a49049695efe9933e67ba62f0c7625d53c59fa832ce4b8b7d"},
+ {file = "overrides-7.4.0.tar.gz", hash = "sha256:9502a3cca51f4fac40b5feca985b6703a5c1f6ad815588a7ca9e285b9dca6757"},
]
[[package]]
name = "packaging"
-version = "24.1"
+version = "23.2"
description = "Core utilities for Python packages"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
- {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]
[[package]]
name = "pandas"
-version = "2.2.2"
+version = "2.1.3"
description = "Powerful data structures for data analysis, time series, and statistics"
optional = false
python-versions = ">=3.9"
files = [
- {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"},
- {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"},
- {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"},
- {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"},
- {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"},
- {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"},
- {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"},
- {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"},
- {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"},
- {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"},
- {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"},
- {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"},
- {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"},
- {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"},
- {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"},
- {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"},
- {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"},
- {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"},
- {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"},
- {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"},
- {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"},
- {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"},
- {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"},
- {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"},
- {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"},
- {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"},
- {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"},
- {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"},
- {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"},
+ {file = "pandas-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acf08a73b5022b479c1be155d4988b72f3020f308f7a87c527702c5f8966d34f"},
+ {file = "pandas-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3cc4469ff0cf9aa3a005870cb49ab8969942b7156e0a46cc3f5abd6b11051dfb"},
+ {file = "pandas-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35172bff95f598cc5866c047f43c7f4df2c893acd8e10e6653a4b792ed7f19bb"},
+ {file = "pandas-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59dfe0e65a2f3988e940224e2a70932edc964df79f3356e5f2997c7d63e758b4"},
+ {file = "pandas-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0296a66200dee556850d99b24c54c7dfa53a3264b1ca6f440e42bad424caea03"},
+ {file = "pandas-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:465571472267a2d6e00657900afadbe6097c8e1dc43746917db4dfc862e8863e"},
+ {file = "pandas-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04d4c58e1f112a74689da707be31cf689db086949c71828ef5da86727cfe3f82"},
+ {file = "pandas-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fa2ad4ff196768ae63a33f8062e6838efed3a319cf938fdf8b95e956c813042"},
+ {file = "pandas-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4441ac94a2a2613e3982e502ccec3bdedefe871e8cea54b8775992485c5660ef"},
+ {file = "pandas-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5ded6ff28abbf0ea7689f251754d3789e1edb0c4d0d91028f0b980598418a58"},
+ {file = "pandas-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca5680368a5139d4920ae3dc993eb5106d49f814ff24018b64d8850a52c6ed2"},
+ {file = "pandas-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:de21e12bf1511190fc1e9ebc067f14ca09fccfb189a813b38d63211d54832f5f"},
+ {file = "pandas-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a5d53c725832e5f1645e7674989f4c106e4b7249c1d57549023ed5462d73b140"},
+ {file = "pandas-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7cf4cf26042476e39394f1f86868d25b265ff787c9b2f0d367280f11afbdee6d"},
+ {file = "pandas-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72c84ec1b1d8e5efcbff5312abe92bfb9d5b558f11e0cf077f5496c4f4a3c99e"},
+ {file = "pandas-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f539e113739a3e0cc15176bf1231a553db0239bfa47a2c870283fd93ba4f683"},
+ {file = "pandas-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc77309da3b55732059e484a1efc0897f6149183c522390772d3561f9bf96c00"},
+ {file = "pandas-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:08637041279b8981a062899da0ef47828df52a1838204d2b3761fbd3e9fcb549"},
+ {file = "pandas-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b99c4e51ef2ed98f69099c72c75ec904dd610eb41a32847c4fcbc1a975f2d2b8"},
+ {file = "pandas-2.1.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7ea8ae8004de0381a2376662c0505bb0a4f679f4c61fbfd122aa3d1b0e5f09d"},
+ {file = "pandas-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd76d67ca2d48f56e2db45833cf9d58f548f97f61eecd3fdc74268417632b8a"},
+ {file = "pandas-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1329dbe93a880a3d7893149979caa82d6ba64a25e471682637f846d9dbc10dd2"},
+ {file = "pandas-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:321ecdb117bf0f16c339cc6d5c9a06063854f12d4d9bc422a84bb2ed3207380a"},
+ {file = "pandas-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:11a771450f36cebf2a4c9dbd3a19dfa8c46c4b905a3ea09dc8e556626060fe71"},
+ {file = "pandas-2.1.3.tar.gz", hash = "sha256:22929f84bca106921917eb73c1521317ddd0a4c71b395bcf767a106e3494209f"},
]
[package.dependencies]
numpy = [
- {version = ">=1.23.2", markers = "python_version == \"3.11\""},
- {version = ">=1.26.0", markers = "python_version >= \"3.12\""},
+ {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""},
+ {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""},
]
python-dateutil = ">=2.8.2"
pytz = ">=2020.1"
-tzdata = ">=2022.7"
+tzdata = ">=2022.1"
[package.extras]
-all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"]
-aws = ["s3fs (>=2022.11.0)"]
-clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"]
-compression = ["zstandard (>=0.19.0)"]
-computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"]
+all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"]
+aws = ["s3fs (>=2022.05.0)"]
+clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"]
+compression = ["zstandard (>=0.17.0)"]
+computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"]
consortium-standard = ["dataframe-api-compat (>=0.1.7)"]
-excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"]
-feather = ["pyarrow (>=10.0.1)"]
-fss = ["fsspec (>=2022.11.0)"]
-gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"]
-hdf5 = ["tables (>=3.8.0)"]
-html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"]
-mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"]
-output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"]
-parquet = ["pyarrow (>=10.0.1)"]
-performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"]
-plot = ["matplotlib (>=3.6.3)"]
-postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"]
-pyarrow = ["pyarrow (>=10.0.1)"]
-spss = ["pyreadstat (>=1.2.0)"]
-sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"]
+excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"]
+feather = ["pyarrow (>=7.0.0)"]
+fss = ["fsspec (>=2022.05.0)"]
+gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"]
+hdf5 = ["tables (>=3.7.0)"]
+html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"]
+mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"]
+output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"]
+parquet = ["pyarrow (>=7.0.0)"]
+performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"]
+plot = ["matplotlib (>=3.6.1)"]
+postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"]
+spss = ["pyreadstat (>=1.1.5)"]
+sql-other = ["SQLAlchemy (>=1.4.36)"]
test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"]
-xml = ["lxml (>=4.9.2)"]
+xml = ["lxml (>=4.8.0)"]
[[package]]
name = "pandocfilters"
-version = "1.5.1"
+version = "1.5.0"
description = "Utilities for writing pandoc filters in python"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
- {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
- {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
+ {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"},
+ {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"},
]
[[package]]
name = "parso"
-version = "0.8.4"
+version = "0.8.3"
description = "A Python Parser"
optional = false
python-versions = ">=3.6"
files = [
- {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"},
- {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"},
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
]
[package.extras]
-qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
-testing = ["docopt", "pytest"]
+qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
+testing = ["docopt", "pytest (<6.0.0)"]
[[package]]
name = "pastel"
@@ -1995,13 +1900,13 @@ files = [
[[package]]
name = "pexpect"
-version = "4.9.0"
+version = "4.8.0"
description = "Pexpect allows easy control of interactive console applications."
optional = false
python-versions = "*"
files = [
- {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
- {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"},
+ {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"},
]
[package.dependencies]
@@ -2009,105 +1914,85 @@ ptyprocess = ">=0.5"
[[package]]
name = "pillow"
-version = "10.3.0"
+version = "10.1.0"
description = "Python Imaging Library (Fork)"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"},
- {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"},
- {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"},
- {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"},
- {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"},
- {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"},
- {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"},
- {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"},
- {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"},
- {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"},
- {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"},
- {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"},
- {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"},
- {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"},
- {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"},
- {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"},
- {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"},
- {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"},
- {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"},
- {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"},
- {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"},
- {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"},
- {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"},
- {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"},
- {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"},
- {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"},
- {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"},
- {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"},
- {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"},
- {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"},
- {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"},
- {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"},
- {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"},
- {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"},
- {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"},
- {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"},
- {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"},
- {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"},
- {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"},
- {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"},
- {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"},
- {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"},
- {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"},
- {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"},
- {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"},
- {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"},
- {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"},
- {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"},
- {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"},
- {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"},
- {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"},
- {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"},
- {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"},
- {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"},
- {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"},
- {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"},
- {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"},
- {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"},
- {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"},
- {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"},
- {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"},
- {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"},
- {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"},
- {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"},
- {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"},
- {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"},
- {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"},
- {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"},
- {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"},
+ {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"},
+ {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"},
+ {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"},
+ {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"},
+ {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"},
+ {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"},
+ {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"},
+ {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"},
+ {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"},
+ {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"},
+ {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"},
+ {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"},
+ {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"},
+ {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"},
+ {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"},
+ {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"},
+ {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"},
+ {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"},
+ {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"},
+ {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"},
+ {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"},
+ {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"},
+ {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"},
+ {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"},
+ {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"},
+ {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"},
+ {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"},
+ {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"},
+ {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"},
+ {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"},
+ {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"},
+ {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"},
+ {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"},
+ {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"},
+ {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"},
+ {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"},
+ {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"},
+ {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"},
+ {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"},
+ {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"},
+ {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"},
+ {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"},
+ {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"},
+ {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"},
+ {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"},
+ {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"},
+ {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"},
+ {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"},
+ {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"},
+ {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"},
+ {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"},
+ {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"},
+ {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"},
+ {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"},
]
[package.extras]
docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
-fpx = ["olefile"]
-mic = ["olefile"]
tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
-typing = ["typing-extensions"]
-xmp = ["defusedxml"]
[[package]]
name = "platformdirs"
-version = "4.2.2"
-description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
+version = "4.0.0"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
- {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
+ {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"},
+ {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"},
]
[package.extras]
-docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
-type = ["mypy (>=1.8)"]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
[[package]]
name = "poethepoet"
@@ -2129,13 +2014,13 @@ poetry-plugin = ["poetry (>=1.0,<2.0)"]
[[package]]
name = "prometheus-client"
-version = "0.20.0"
+version = "0.18.0"
description = "Python client for the Prometheus monitoring system."
optional = false
python-versions = ">=3.8"
files = [
- {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"},
- {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"},
+ {file = "prometheus_client-0.18.0-py3-none-any.whl", hash = "sha256:8de3ae2755f890826f4b6479e5571d4f74ac17a81345fe69a6778fdb92579184"},
+ {file = "prometheus_client-0.18.0.tar.gz", hash = "sha256:35f7a8c22139e2bb7ca5a698e92d38145bc8dc74c1c0bf56f25cca886a764e17"},
]
[package.extras]
@@ -2143,13 +2028,13 @@ twisted = ["twisted"]
[[package]]
name = "prompt-toolkit"
-version = "3.0.47"
+version = "3.0.40"
description = "Library for building powerful interactive command lines in Python"
optional = false
python-versions = ">=3.7.0"
files = [
- {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"},
- {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"},
+ {file = "prompt_toolkit-3.0.40-py3-none-any.whl", hash = "sha256:99ba3dfb23d5b5af89712f89e60a5f3d9b8b67a9482ca377c5771d0e9047a34b"},
+ {file = "prompt_toolkit-3.0.40.tar.gz", hash = "sha256:a371c06bb1d66cd499fecd708e50c0b6ae00acba9822ba33c586e2f16d1b739e"},
]
[package.dependencies]
@@ -2157,28 +2042,27 @@ wcwidth = "*"
[[package]]
name = "psutil"
-version = "6.0.0"
+version = "5.9.6"
description = "Cross-platform lib for process and system monitoring in Python."
optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [
- {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"},
- {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"},
- {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"},
- {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"},
- {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"},
- {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"},
- {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"},
- {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"},
- {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"},
- {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"},
- {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"},
- {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"},
- {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"},
- {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"},
- {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"},
- {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"},
- {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"},
+ {file = "psutil-5.9.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d"},
+ {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c"},
+ {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28"},
+ {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017"},
+ {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c"},
+ {file = "psutil-5.9.6-cp27-none-win32.whl", hash = "sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9"},
+ {file = "psutil-5.9.6-cp27-none-win_amd64.whl", hash = "sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac"},
+ {file = "psutil-5.9.6-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a"},
+ {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c"},
+ {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4"},
+ {file = "psutil-5.9.6-cp36-cp36m-win32.whl", hash = "sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602"},
+ {file = "psutil-5.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa"},
+ {file = "psutil-5.9.6-cp37-abi3-win32.whl", hash = "sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c"},
+ {file = "psutil-5.9.6-cp37-abi3-win_amd64.whl", hash = "sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a"},
+ {file = "psutil-5.9.6-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57"},
+ {file = "psutil-5.9.6.tar.gz", hash = "sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a"},
]
[package.extras]
@@ -2211,28 +2095,28 @@ tests = ["pytest"]
[[package]]
name = "pycparser"
-version = "2.22"
+version = "2.21"
description = "C parser in Python"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
- {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"},
- {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"},
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
]
[[package]]
name = "pygments"
-version = "2.18.0"
+version = "2.16.1"
description = "Pygments is a syntax highlighting package written in Python."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"},
- {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"},
+ {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"},
+ {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"},
]
[package.extras]
-windows-terminal = ["colorama (>=0.4.6)"]
+plugins = ["importlib-metadata"]
[[package]]
name = "pylatexenc"
@@ -2246,32 +2130,31 @@ files = [
[[package]]
name = "pynvim"
-version = "0.5.0"
-description = "Python client for Neovim"
+version = "0.4.3"
+description = "Python client to neovim"
optional = false
-python-versions = ">=3.7"
+python-versions = "*"
files = [
- {file = "pynvim-0.5.0-py2.py3-none-any.whl", hash = "sha256:2ac197ef0cdfff53719184a45c33cfb7cef88d1c9bf7f0525c21b3239cb5365f"},
- {file = "pynvim-0.5.0.tar.gz", hash = "sha256:e80a11f6f5d194c6a47bea4135b90b55faca24da3544da7cf4a5f7ba8fb09215"},
+ {file = "pynvim-0.4.3.tar.gz", hash = "sha256:3a795378bde5e8092fbeb3a1a99be9c613d2685542f1db0e5c6fd467eed56dff"},
]
[package.dependencies]
-greenlet = ">=3.0"
+greenlet = "*"
msgpack = ">=0.5.0"
[package.extras]
pyuv = ["pyuv (>=1.0.0)"]
-test = ["pytest"]
+test = ["pytest (>=3.4.0)"]
[[package]]
name = "pyparsing"
-version = "3.1.2"
+version = "3.1.1"
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
optional = false
python-versions = ">=3.6.8"
files = [
- {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"},
- {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"},
+ {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"},
+ {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"},
]
[package.extras]
@@ -2279,23 +2162,23 @@ diagrams = ["jinja2", "railroad-diagrams"]
[[package]]
name = "pyperclip"
-version = "1.9.0"
+version = "1.8.2"
description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)"
optional = false
python-versions = "*"
files = [
- {file = "pyperclip-1.9.0.tar.gz", hash = "sha256:b7de0142ddc81bfc5c7507eea19da920b92252b548b96186caf94a5e2527d310"},
+ {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"},
]
[[package]]
name = "python-dateutil"
-version = "2.9.0.post0"
+version = "2.8.2"
description = "Extensions to the standard Python datetime module"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
- {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
- {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
[package.dependencies]
@@ -2314,13 +2197,13 @@ files = [
[[package]]
name = "pytz"
-version = "2024.1"
+version = "2023.3.post1"
description = "World timezone definitions, modern and historical"
optional = false
python-versions = "*"
files = [
- {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
- {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+ {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"},
+ {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"},
]
[[package]]
@@ -2348,17 +2231,17 @@ files = [
[[package]]
name = "pywinpty"
-version = "2.0.13"
+version = "2.0.12"
description = "Pseudo terminal support for Windows from Python."
optional = false
python-versions = ">=3.8"
files = [
- {file = "pywinpty-2.0.13-cp310-none-win_amd64.whl", hash = "sha256:697bff211fb5a6508fee2dc6ff174ce03f34a9a233df9d8b5fe9c8ce4d5eaf56"},
- {file = "pywinpty-2.0.13-cp311-none-win_amd64.whl", hash = "sha256:b96fb14698db1284db84ca38c79f15b4cfdc3172065b5137383910567591fa99"},
- {file = "pywinpty-2.0.13-cp312-none-win_amd64.whl", hash = "sha256:2fd876b82ca750bb1333236ce98488c1be96b08f4f7647cfdf4129dfad83c2d4"},
- {file = "pywinpty-2.0.13-cp38-none-win_amd64.whl", hash = "sha256:61d420c2116c0212808d31625611b51caf621fe67f8a6377e2e8b617ea1c1f7d"},
- {file = "pywinpty-2.0.13-cp39-none-win_amd64.whl", hash = "sha256:71cb613a9ee24174730ac7ae439fd179ca34ccb8c5349e8d7b72ab5dea2c6f4b"},
- {file = "pywinpty-2.0.13.tar.gz", hash = "sha256:c34e32351a3313ddd0d7da23d27f835c860d32fe4ac814d372a3ea9594f41dde"},
+ {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
+ {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
+ {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"},
+ {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"},
+ {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
+ {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
]
[[package]]
@@ -2412,99 +2295,104 @@ files = [
[[package]]
name = "pyzmq"
-version = "26.0.3"
+version = "25.1.1"
description = "Python bindings for 0MQ"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.6"
files = [
- {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"},
- {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"},
- {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"},
- {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"},
- {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"},
- {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"},
- {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"},
- {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"},
- {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"},
- {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"},
- {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"},
- {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"},
- {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"},
- {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"},
- {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"},
- {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"},
- {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"},
- {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"},
- {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"},
- {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"},
- {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"},
- {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"},
- {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"},
- {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"},
- {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"},
- {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"},
- {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"},
- {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"},
- {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"},
- {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"},
- {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"},
- {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"},
- {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"},
- {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"},
- {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"},
- {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"},
- {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"},
- {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"},
- {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"},
- {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"},
- {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"},
- {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"},
- {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"},
- {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"},
- {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"},
- {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"},
- {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"},
- {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"},
- {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"},
- {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"},
- {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"},
- {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"},
- {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"},
- {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"},
- {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"},
- {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"},
- {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"},
- {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"},
- {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"},
- {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"},
- {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"},
- {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"},
- {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"},
- {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"},
- {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"},
- {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"},
- {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"},
- {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"},
- {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"},
- {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"},
- {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"},
- {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"},
- {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"},
- {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"},
- {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"},
- {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"},
- {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"},
- {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"},
- {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"},
- {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"},
- {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"},
- {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"},
- {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"},
- {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"},
- {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"},
- {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"},
- {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"},
- {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"},
+ {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"},
+ {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"},
+ {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"},
+ {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"},
+ {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"},
+ {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"},
+ {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"},
+ {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"},
+ {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"},
+ {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"},
+ {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"},
+ {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"},
+ {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"},
+ {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"},
+ {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"},
+ {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"},
+ {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"},
+ {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"},
+ {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"},
+ {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"},
+ {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"},
+ {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"},
+ {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"},
+ {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"},
+ {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"},
+ {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"},
+ {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"},
+ {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"},
+ {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"},
+ {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"},
+ {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"},
+ {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"},
+ {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"},
+ {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"},
+ {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"},
+ {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"},
+ {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"},
+ {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"},
+ {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"},
+ {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"},
+ {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"},
+ {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"},
+ {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"},
+ {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"},
+ {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"},
+ {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"},
+ {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"},
+ {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"},
+ {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"},
+ {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"},
+ {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"},
+ {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"},
+ {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"},
+ {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"},
+ {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"},
+ {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"},
+ {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"},
+ {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"},
+ {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"},
+ {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"},
+ {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"},
+ {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"},
+ {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"},
+ {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"},
+ {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"},
+ {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"},
+ {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"},
+ {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"},
+ {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"},
+ {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"},
+ {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"},
+ {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"},
+ {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"},
+ {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"},
+ {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"},
+ {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"},
+ {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"},
]
[package.dependencies]
@@ -2512,13 +2400,13 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""}
[[package]]
name = "qtconsole"
-version = "5.5.2"
+version = "5.5.0"
description = "Jupyter Qt console"
optional = false
-python-versions = ">=3.8"
+python-versions = ">= 3.8"
files = [
- {file = "qtconsole-5.5.2-py3-none-any.whl", hash = "sha256:42d745f3d05d36240244a04e1e1ec2a86d5d9b6edb16dbdef582ccb629e87e0b"},
- {file = "qtconsole-5.5.2.tar.gz", hash = "sha256:6b5fb11274b297463706af84dcbbd5c92273b1f619e6d25d08874b0a88516989"},
+ {file = "qtconsole-5.5.0-py3-none-any.whl", hash = "sha256:6b6bcf8f834c6df1579a3e6623c8531b85d3e723997cee3a1156296df14716c8"},
+ {file = "qtconsole-5.5.0.tar.gz", hash = "sha256:ea8b4a07d7dc915a1b1238fbfe2c9aea570640402557b64615e09a4bc60df47c"},
]
[package.dependencies]
@@ -2554,13 +2442,13 @@ test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
[[package]]
name = "referencing"
-version = "0.35.1"
+version = "0.30.2"
description = "JSON Referencing + Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"},
- {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"},
+ {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"},
+ {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"},
]
[package.dependencies]
@@ -2569,13 +2457,13 @@ rpds-py = ">=0.7.0"
[[package]]
name = "requests"
-version = "2.32.3"
+version = "2.31.0"
description = "Python HTTP for Humans."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
- {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
]
[package.dependencies]
@@ -2615,125 +2503,125 @@ files = [
[[package]]
name = "rpds-py"
-version = "0.18.1"
+version = "0.12.0"
description = "Python bindings to Rust's persistent data structures (rpds)"
optional = false
python-versions = ">=3.8"
files = [
- {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"},
- {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"},
- {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"},
- {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"},
- {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"},
- {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"},
- {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"},
- {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"},
- {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"},
- {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"},
- {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"},
- {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"},
- {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"},
- {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"},
- {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"},
- {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"},
- {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"},
- {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"},
- {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"},
- {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"},
- {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"},
- {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"},
- {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"},
- {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"},
- {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"},
- {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"},
- {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"},
- {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"},
- {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"},
- {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"},
- {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"},
- {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"},
- {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"},
- {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"},
- {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"},
- {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"},
- {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"},
- {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"},
- {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"},
- {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"},
- {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"},
- {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"},
- {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"},
- {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"},
- {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"},
- {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"},
- {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"},
- {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"},
- {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"},
- {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"},
- {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"},
- {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"},
- {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"},
- {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"},
- {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"},
- {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"},
- {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"},
- {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"},
- {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"},
- {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"},
- {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"},
- {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"},
- {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"},
- {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"},
- {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"},
- {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"},
- {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"},
- {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"},
- {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"},
+ {file = "rpds_py-0.12.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:c694bee70ece3b232df4678448fdda245fd3b1bb4ba481fb6cd20e13bb784c46"},
+ {file = "rpds_py-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30e5ce9f501fb1f970e4a59098028cf20676dee64fc496d55c33e04bbbee097d"},
+ {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d72a4315514e5a0b9837a086cb433b004eea630afb0cc129de76d77654a9606f"},
+ {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eebaf8c76c39604d52852366249ab807fe6f7a3ffb0dd5484b9944917244cdbe"},
+ {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a239303acb0315091d54c7ff36712dba24554993b9a93941cf301391d8a997ee"},
+ {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ced40cdbb6dd47a032725a038896cceae9ce267d340f59508b23537f05455431"},
+ {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c8c0226c71bd0ce9892eaf6afa77ae8f43a3d9313124a03df0b389c01f832de"},
+ {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8e11715178f3608874508f08e990d3771e0b8c66c73eb4e183038d600a9b274"},
+ {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5210a0018c7e09c75fa788648617ebba861ae242944111d3079034e14498223f"},
+ {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:171d9a159f1b2f42a42a64a985e4ba46fc7268c78299272ceba970743a67ee50"},
+ {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:57ec6baec231bb19bb5fd5fc7bae21231860a1605174b11585660236627e390e"},
+ {file = "rpds_py-0.12.0-cp310-none-win32.whl", hash = "sha256:7188ddc1a8887194f984fa4110d5a3d5b9b5cd35f6bafdff1b649049cbc0ce29"},
+ {file = "rpds_py-0.12.0-cp310-none-win_amd64.whl", hash = "sha256:1e04581c6117ad9479b6cfae313e212fe0dfa226ac727755f0d539cd54792963"},
+ {file = "rpds_py-0.12.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:0a38612d07a36138507d69646c470aedbfe2b75b43a4643f7bd8e51e52779624"},
+ {file = "rpds_py-0.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f12d69d568f5647ec503b64932874dade5a20255736c89936bf690951a5e79f5"},
+ {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8a1d990dc198a6c68ec3d9a637ba1ce489b38cbfb65440a27901afbc5df575"},
+ {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c567c664fc2f44130a20edac73e0a867f8e012bf7370276f15c6adc3586c37c"},
+ {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e9e976e0dbed4f51c56db10831c9623d0fd67aac02853fe5476262e5a22acb7"},
+ {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efddca2d02254a52078c35cadad34762adbae3ff01c6b0c7787b59d038b63e0d"},
+ {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9e7f29c00577aff6b318681e730a519b235af292732a149337f6aaa4d1c5e31"},
+ {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:389c0e38358fdc4e38e9995e7291269a3aead7acfcf8942010ee7bc5baee091c"},
+ {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33ab498f9ac30598b6406e2be1b45fd231195b83d948ebd4bd77f337cb6a2bff"},
+ {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d56b1cd606ba4cedd64bb43479d56580e147c6ef3f5d1c5e64203a1adab784a2"},
+ {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fa73ed22c40a1bec98d7c93b5659cd35abcfa5a0a95ce876b91adbda170537c"},
+ {file = "rpds_py-0.12.0-cp311-none-win32.whl", hash = "sha256:dbc25baa6abb205766fb8606f8263b02c3503a55957fcb4576a6bb0a59d37d10"},
+ {file = "rpds_py-0.12.0-cp311-none-win_amd64.whl", hash = "sha256:c6b52b7028b547866c2413f614ee306c2d4eafdd444b1ff656bf3295bf1484aa"},
+ {file = "rpds_py-0.12.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:9620650c364c01ed5b497dcae7c3d4b948daeae6e1883ae185fef1c927b6b534"},
+ {file = "rpds_py-0.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2124f9e645a94ab7c853bc0a3644e0ca8ffbe5bb2d72db49aef8f9ec1c285733"},
+ {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281c8b219d4f4b3581b918b816764098d04964915b2f272d1476654143801aa2"},
+ {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:27ccc93c7457ef890b0dd31564d2a05e1aca330623c942b7e818e9e7c2669ee4"},
+ {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1c562a9bb72244fa767d1c1ab55ca1d92dd5f7c4d77878fee5483a22ffac808"},
+ {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e57919c32ee295a2fca458bb73e4b20b05c115627f96f95a10f9f5acbd61172d"},
+ {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa35ad36440aaf1ac8332b4a4a433d4acd28f1613f0d480995f5cfd3580e90b7"},
+ {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e6aea5c0eb5b0faf52c7b5c4a47c8bb64437173be97227c819ffa31801fa4e34"},
+ {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:81cf9d306c04df1b45971c13167dc3bad625808aa01281d55f3cf852dde0e206"},
+ {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:08e6e7ff286254016b945e1ab632ee843e43d45e40683b66dd12b73791366dd1"},
+ {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4d0a675a7acbbc16179188d8c6d0afb8628604fc1241faf41007255957335a0b"},
+ {file = "rpds_py-0.12.0-cp312-none-win32.whl", hash = "sha256:b2287c09482949e0ca0c0eb68b2aca6cf57f8af8c6dfd29dcd3bc45f17b57978"},
+ {file = "rpds_py-0.12.0-cp312-none-win_amd64.whl", hash = "sha256:8015835494b21aa7abd3b43fdea0614ee35ef6b03db7ecba9beb58eadf01c24f"},
+ {file = "rpds_py-0.12.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6174d6ad6b58a6bcf67afbbf1723420a53d06c4b89f4c50763d6fa0a6ac9afd2"},
+ {file = "rpds_py-0.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a689e1ded7137552bea36305a7a16ad2b40be511740b80748d3140614993db98"},
+ {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f45321224144c25a62052035ce96cbcf264667bcb0d81823b1bbc22c4addd194"},
+ {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa32205358a76bf578854bf31698a86dc8b2cb591fd1d79a833283f4a403f04b"},
+ {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91bd2b7cf0f4d252eec8b7046fa6a43cee17e8acdfc00eaa8b3dbf2f9a59d061"},
+ {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3acadbab8b59f63b87b518e09c4c64b142e7286b9ca7a208107d6f9f4c393c5c"},
+ {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:429349a510da82c85431f0f3e66212d83efe9fd2850f50f339341b6532c62fe4"},
+ {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05942656cb2cb4989cd50ced52df16be94d344eae5097e8583966a1d27da73a5"},
+ {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0c5441b7626c29dbd54a3f6f3713ec8e956b009f419ffdaaa3c80eaf98ddb523"},
+ {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:b6b0e17d39d21698185097652c611f9cf30f7c56ccec189789920e3e7f1cee56"},
+ {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3b7a64d43e2a1fa2dd46b678e00cabd9a49ebb123b339ce799204c44a593ae1c"},
+ {file = "rpds_py-0.12.0-cp38-none-win32.whl", hash = "sha256:e5bbe011a2cea9060fef1bb3d668a2fd8432b8888e6d92e74c9c794d3c101595"},
+ {file = "rpds_py-0.12.0-cp38-none-win_amd64.whl", hash = "sha256:bec29b801b4adbf388314c0d050e851d53762ab424af22657021ce4b6eb41543"},
+ {file = "rpds_py-0.12.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:1096ca0bf2d3426cbe79d4ccc91dc5aaa73629b08ea2d8467375fad8447ce11a"},
+ {file = "rpds_py-0.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48aa98987d54a46e13e6954880056c204700c65616af4395d1f0639eba11764b"},
+ {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7979d90ee2190d000129598c2b0c82f13053dba432b94e45e68253b09bb1f0f6"},
+ {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:88857060b690a57d2ea8569bca58758143c8faa4639fb17d745ce60ff84c867e"},
+ {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4eb74d44776b0fb0782560ea84d986dffec8ddd94947f383eba2284b0f32e35e"},
+ {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f62581d7e884dd01ee1707b7c21148f61f2febb7de092ae2f108743fcbef5985"},
+ {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f5dcb658d597410bb7c967c1d24eaf9377b0d621358cbe9d2ff804e5dd12e81"},
+ {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bf9acce44e967a5103fcd820fc7580c7b0ab8583eec4e2051aec560f7b31a63"},
+ {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:240687b5be0f91fbde4936a329c9b7589d9259742766f74de575e1b2046575e4"},
+ {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:25740fb56e8bd37692ed380e15ec734be44d7c71974d8993f452b4527814601e"},
+ {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a54917b7e9cd3a67e429a630e237a90b096e0ba18897bfb99ee8bd1068a5fea0"},
+ {file = "rpds_py-0.12.0-cp39-none-win32.whl", hash = "sha256:b92aafcfab3d41580d54aca35a8057341f1cfc7c9af9e8bdfc652f83a20ced31"},
+ {file = "rpds_py-0.12.0-cp39-none-win_amd64.whl", hash = "sha256:cd316dbcc74c76266ba94eb021b0cc090b97cca122f50bd7a845f587ff4bf03f"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0853da3d5e9bc6a07b2486054a410b7b03f34046c123c6561b535bb48cc509e1"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:cb41ad20064e18a900dd427d7cf41cfaec83bcd1184001f3d91a1f76b3fcea4e"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b710bf7e7ae61957d5c4026b486be593ed3ec3dca3e5be15e0f6d8cf5d0a4990"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a952ae3eb460c6712388ac2ec706d24b0e651b9396d90c9a9e0a69eb27737fdc"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0bedd91ae1dd142a4dc15970ed2c729ff6c73f33a40fa84ed0cdbf55de87c777"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:761531076df51309075133a6bc1db02d98ec7f66e22b064b1d513bc909f29743"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2baa6be130e8a00b6cbb9f18a33611ec150b4537f8563bddadb54c1b74b8193"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f05450fa1cd7c525c0b9d1a7916e595d3041ac0afbed2ff6926e5afb6a781b7f"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:81c4d1a3a564775c44732b94135d06e33417e829ff25226c164664f4a1046213"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e888be685fa42d8b8a3d3911d5604d14db87538aa7d0b29b1a7ea80d354c732d"},
+ {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6f8d7fe73d1816eeb5378409adc658f9525ecbfaf9e1ede1e2d67a338b0c7348"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0831d3ecdea22e4559cc1793f22e77067c9d8c451d55ae6a75bf1d116a8e7f42"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:513ccbf7420c30e283c25c82d5a8f439d625a838d3ba69e79a110c260c46813f"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:301bd744a1adaa2f6a5e06c98f1ac2b6f8dc31a5c23b838f862d65e32fca0d4b"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8832a4f83d4782a8f5a7b831c47e8ffe164e43c2c148c8160ed9a6d630bc02a"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2416ed743ec5debcf61e1242e012652a4348de14ecc7df3512da072b074440"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35585a8cb5917161f42c2104567bb83a1d96194095fc54a543113ed5df9fa436"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d389ff1e95b6e46ebedccf7fd1fadd10559add595ac6a7c2ea730268325f832c"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9b007c2444705a2dc4a525964fd4dd28c3320b19b3410da6517cab28716f27d3"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:188912b22b6c8225f4c4ffa020a2baa6ad8fabb3c141a12dbe6edbb34e7f1425"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b4cf9ab9a0ae0cb122685209806d3f1dcb63b9fccdf1424fb42a129dc8c2faa"},
+ {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2d34a5450a402b00d20aeb7632489ffa2556ca7b26f4a63c35f6fccae1977427"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:466030a42724780794dea71eb32db83cc51214d66ab3fb3156edd88b9c8f0d78"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:68172622a5a57deb079a2c78511c40f91193548e8ab342c31e8cb0764d362459"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54cdfcda59251b9c2f87a05d038c2ae02121219a04d4a1e6fc345794295bdc07"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6b75b912a0baa033350367a8a07a8b2d44fd5b90c890bfbd063a8a5f945f644b"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47aeceb4363851d17f63069318ba5721ae695d9da55d599b4d6fb31508595278"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0525847f83f506aa1e28eb2057b696fe38217e12931c8b1b02198cfe6975e142"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efbe0b5e0fd078ed7b005faa0170da4f72666360f66f0bb2d7f73526ecfd99f9"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0fadfdda275c838cba5102c7f90a20f2abd7727bf8f4a2b654a5b617529c5c18"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:56dd500411d03c5e9927a1eb55621e906837a83b02350a9dc401247d0353717c"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:6915fc9fa6b3ec3569566832e1bb03bd801c12cea030200e68663b9a87974e76"},
+ {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5f1519b080d8ce0a814f17ad9fb49fb3a1d4d7ce5891f5c85fc38631ca3a8dc4"},
+ {file = "rpds_py-0.12.0.tar.gz", hash = "sha256:7036316cc26b93e401cedd781a579be606dad174829e6ad9e9c5a0da6e036f80"},
]
[[package]]
name = "seaborn"
-version = "0.13.2"
+version = "0.13.0"
description = "Statistical data visualization"
optional = false
python-versions = ">=3.8"
files = [
- {file = "seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987"},
- {file = "seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7"},
+ {file = "seaborn-0.13.0-py3-none-any.whl", hash = "sha256:70d740828c48de0f402bb17234e475eda687e3c65f4383ea25d0cc4728f7772e"},
+ {file = "seaborn-0.13.0.tar.gz", hash = "sha256:0e76abd2ec291c655b516703c6a022f0fd5afed26c8e714e8baef48150f73598"},
]
[package.dependencies]
-matplotlib = ">=3.4,<3.6.1 || >3.6.1"
+matplotlib = ">=3.3,<3.6.1 || >3.6.1"
numpy = ">=1.20,<1.24.0 || >1.24.0"
pandas = ">=1.2"
@@ -2744,13 +2632,13 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"]
[[package]]
name = "send2trash"
-version = "1.8.3"
+version = "1.8.2"
description = "Send file to trash natively under Mac OS X, Windows and Linux"
optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [
- {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"},
- {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"},
+ {file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
+ {file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
]
[package.extras]
@@ -2760,18 +2648,19 @@ win32 = ["pywin32"]
[[package]]
name = "setuptools"
-version = "70.1.0"
+version = "68.2.2"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "setuptools-70.1.0-py3-none-any.whl", hash = "sha256:d9b8b771455a97c8a9f3ab3448ebe0b29b5e105f1228bba41028be116985a267"},
- {file = "setuptools-70.1.0.tar.gz", hash = "sha256:01a1e793faa5bd89abc851fa15d0a0db26f160890c7102cd8dce643e886b47f5"},
+ {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"},
+ {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"},
]
[package.extras]
-docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
-testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
[[package]]
name = "six"
@@ -2786,13 +2675,13 @@ files = [
[[package]]
name = "sniffio"
-version = "1.3.1"
+version = "1.3.0"
description = "Sniff out which async library your code is running under"
optional = false
python-versions = ">=3.7"
files = [
- {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
- {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
]
[[package]]
@@ -2808,70 +2697,70 @@ files = [
[[package]]
name = "sqlalchemy"
-version = "2.0.31"
+version = "2.0.23"
description = "Database Abstraction Library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "SQLAlchemy-2.0.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f2a213c1b699d3f5768a7272de720387ae0122f1becf0901ed6eaa1abd1baf6c"},
- {file = "SQLAlchemy-2.0.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9fea3d0884e82d1e33226935dac990b967bef21315cbcc894605db3441347443"},
- {file = "SQLAlchemy-2.0.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3ad7f221d8a69d32d197e5968d798217a4feebe30144986af71ada8c548e9fa"},
- {file = "SQLAlchemy-2.0.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2bee229715b6366f86a95d497c347c22ddffa2c7c96143b59a2aa5cc9eebbc"},
- {file = "SQLAlchemy-2.0.31-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cd5b94d4819c0c89280b7c6109c7b788a576084bf0a480ae17c227b0bc41e109"},
- {file = "SQLAlchemy-2.0.31-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:750900a471d39a7eeba57580b11983030517a1f512c2cb287d5ad0fcf3aebd58"},
- {file = "SQLAlchemy-2.0.31-cp310-cp310-win32.whl", hash = "sha256:7bd112be780928c7f493c1a192cd8c5fc2a2a7b52b790bc5a84203fb4381c6be"},
- {file = "SQLAlchemy-2.0.31-cp310-cp310-win_amd64.whl", hash = "sha256:5a48ac4d359f058474fadc2115f78a5cdac9988d4f99eae44917f36aa1476327"},
- {file = "SQLAlchemy-2.0.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f68470edd70c3ac3b6cd5c2a22a8daf18415203ca1b036aaeb9b0fb6f54e8298"},
- {file = "SQLAlchemy-2.0.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e2c38c2a4c5c634fe6c3c58a789712719fa1bf9b9d6ff5ebfce9a9e5b89c1ca"},
- {file = "SQLAlchemy-2.0.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd15026f77420eb2b324dcb93551ad9c5f22fab2c150c286ef1dc1160f110203"},
- {file = "SQLAlchemy-2.0.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2196208432deebdfe3b22185d46b08f00ac9d7b01284e168c212919891289396"},
- {file = "SQLAlchemy-2.0.31-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:352b2770097f41bff6029b280c0e03b217c2dcaddc40726f8f53ed58d8a85da4"},
- {file = "SQLAlchemy-2.0.31-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:56d51ae825d20d604583f82c9527d285e9e6d14f9a5516463d9705dab20c3740"},
- {file = "SQLAlchemy-2.0.31-cp311-cp311-win32.whl", hash = "sha256:6e2622844551945db81c26a02f27d94145b561f9d4b0c39ce7bfd2fda5776dac"},
- {file = "SQLAlchemy-2.0.31-cp311-cp311-win_amd64.whl", hash = "sha256:ccaf1b0c90435b6e430f5dd30a5aede4764942a695552eb3a4ab74ed63c5b8d3"},
- {file = "SQLAlchemy-2.0.31-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3b74570d99126992d4b0f91fb87c586a574a5872651185de8297c6f90055ae42"},
- {file = "SQLAlchemy-2.0.31-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f77c4f042ad493cb8595e2f503c7a4fe44cd7bd59c7582fd6d78d7e7b8ec52c"},
- {file = "SQLAlchemy-2.0.31-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd1591329333daf94467e699e11015d9c944f44c94d2091f4ac493ced0119449"},
- {file = "SQLAlchemy-2.0.31-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74afabeeff415e35525bf7a4ecdab015f00e06456166a2eba7590e49f8db940e"},
- {file = "SQLAlchemy-2.0.31-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b9c01990d9015df2c6f818aa8f4297d42ee71c9502026bb074e713d496e26b67"},
- {file = "SQLAlchemy-2.0.31-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:66f63278db425838b3c2b1c596654b31939427016ba030e951b292e32b99553e"},
- {file = "SQLAlchemy-2.0.31-cp312-cp312-win32.whl", hash = "sha256:0b0f658414ee4e4b8cbcd4a9bb0fd743c5eeb81fc858ca517217a8013d282c96"},
- {file = "SQLAlchemy-2.0.31-cp312-cp312-win_amd64.whl", hash = "sha256:fa4b1af3e619b5b0b435e333f3967612db06351217c58bfb50cee5f003db2a5a"},
- {file = "SQLAlchemy-2.0.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f43e93057cf52a227eda401251c72b6fbe4756f35fa6bfebb5d73b86881e59b0"},
- {file = "SQLAlchemy-2.0.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d337bf94052856d1b330d5fcad44582a30c532a2463776e1651bd3294ee7e58b"},
- {file = "SQLAlchemy-2.0.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c06fb43a51ccdff3b4006aafee9fcf15f63f23c580675f7734245ceb6b6a9e05"},
- {file = "SQLAlchemy-2.0.31-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:b6e22630e89f0e8c12332b2b4c282cb01cf4da0d26795b7eae16702a608e7ca1"},
- {file = "SQLAlchemy-2.0.31-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:79a40771363c5e9f3a77f0e28b3302801db08040928146e6808b5b7a40749c88"},
- {file = "SQLAlchemy-2.0.31-cp37-cp37m-win32.whl", hash = "sha256:501ff052229cb79dd4c49c402f6cb03b5a40ae4771efc8bb2bfac9f6c3d3508f"},
- {file = "SQLAlchemy-2.0.31-cp37-cp37m-win_amd64.whl", hash = "sha256:597fec37c382a5442ffd471f66ce12d07d91b281fd474289356b1a0041bdf31d"},
- {file = "SQLAlchemy-2.0.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dc6d69f8829712a4fd799d2ac8d79bdeff651c2301b081fd5d3fe697bd5b4ab9"},
- {file = "SQLAlchemy-2.0.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:23b9fbb2f5dd9e630db70fbe47d963c7779e9c81830869bd7d137c2dc1ad05fb"},
- {file = "SQLAlchemy-2.0.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a21c97efcbb9f255d5c12a96ae14da873233597dfd00a3a0c4ce5b3e5e79704"},
- {file = "SQLAlchemy-2.0.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26a6a9837589c42b16693cf7bf836f5d42218f44d198f9343dd71d3164ceeeac"},
- {file = "SQLAlchemy-2.0.31-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc251477eae03c20fae8db9c1c23ea2ebc47331bcd73927cdcaecd02af98d3c3"},
- {file = "SQLAlchemy-2.0.31-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2fd17e3bb8058359fa61248c52c7b09a97cf3c820e54207a50af529876451808"},
- {file = "SQLAlchemy-2.0.31-cp38-cp38-win32.whl", hash = "sha256:c76c81c52e1e08f12f4b6a07af2b96b9b15ea67ccdd40ae17019f1c373faa227"},
- {file = "SQLAlchemy-2.0.31-cp38-cp38-win_amd64.whl", hash = "sha256:4b600e9a212ed59355813becbcf282cfda5c93678e15c25a0ef896b354423238"},
- {file = "SQLAlchemy-2.0.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b6cf796d9fcc9b37011d3f9936189b3c8074a02a4ed0c0fbbc126772c31a6d4"},
- {file = "SQLAlchemy-2.0.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:78fe11dbe37d92667c2c6e74379f75746dc947ee505555a0197cfba9a6d4f1a4"},
- {file = "SQLAlchemy-2.0.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fc47dc6185a83c8100b37acda27658fe4dbd33b7d5e7324111f6521008ab4fe"},
- {file = "SQLAlchemy-2.0.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a41514c1a779e2aa9a19f67aaadeb5cbddf0b2b508843fcd7bafdf4c6864005"},
- {file = "SQLAlchemy-2.0.31-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:afb6dde6c11ea4525318e279cd93c8734b795ac8bb5dda0eedd9ebaca7fa23f1"},
- {file = "SQLAlchemy-2.0.31-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3f9faef422cfbb8fd53716cd14ba95e2ef655400235c3dfad1b5f467ba179c8c"},
- {file = "SQLAlchemy-2.0.31-cp39-cp39-win32.whl", hash = "sha256:fc6b14e8602f59c6ba893980bea96571dd0ed83d8ebb9c4479d9ed5425d562e9"},
- {file = "SQLAlchemy-2.0.31-cp39-cp39-win_amd64.whl", hash = "sha256:3cb8a66b167b033ec72c3812ffc8441d4e9f5f78f5e31e54dcd4c90a4ca5bebc"},
- {file = "SQLAlchemy-2.0.31-py3-none-any.whl", hash = "sha256:69f3e3c08867a8e4856e92d7afb618b95cdee18e0bc1647b77599722c9a28911"},
- {file = "SQLAlchemy-2.0.31.tar.gz", hash = "sha256:b607489dd4a54de56984a0c7656247504bd5523d9d0ba799aef59d4add009484"},
+ {file = "SQLAlchemy-2.0.23-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea"},
+ {file = "SQLAlchemy-2.0.23-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d"},
+ {file = "SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34"},
+ {file = "SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab"},
+ {file = "SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3"},
+ {file = "SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965"},
+ {file = "SQLAlchemy-2.0.23-cp310-cp310-win32.whl", hash = "sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8"},
+ {file = "SQLAlchemy-2.0.23-cp310-cp310-win_amd64.whl", hash = "sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6"},
+ {file = "SQLAlchemy-2.0.23-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1"},
+ {file = "SQLAlchemy-2.0.23-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72"},
+ {file = "SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e"},
+ {file = "SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d"},
+ {file = "SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d"},
+ {file = "SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4"},
+ {file = "SQLAlchemy-2.0.23-cp311-cp311-win32.whl", hash = "sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855"},
+ {file = "SQLAlchemy-2.0.23-cp311-cp311-win_amd64.whl", hash = "sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22"},
+ {file = "SQLAlchemy-2.0.23-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45"},
+ {file = "SQLAlchemy-2.0.23-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4"},
+ {file = "SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac"},
+ {file = "SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577"},
+ {file = "SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda"},
+ {file = "SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60"},
+ {file = "SQLAlchemy-2.0.23-cp312-cp312-win32.whl", hash = "sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846"},
+ {file = "SQLAlchemy-2.0.23-cp312-cp312-win_amd64.whl", hash = "sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca"},
+ {file = "SQLAlchemy-2.0.23-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d"},
+ {file = "SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf"},
+ {file = "SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24"},
+ {file = "SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89"},
+ {file = "SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8"},
+ {file = "SQLAlchemy-2.0.23-cp37-cp37m-win32.whl", hash = "sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18"},
+ {file = "SQLAlchemy-2.0.23-cp37-cp37m-win_amd64.whl", hash = "sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc"},
+ {file = "SQLAlchemy-2.0.23-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df"},
+ {file = "SQLAlchemy-2.0.23-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693"},
+ {file = "SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5"},
+ {file = "SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4"},
+ {file = "SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab"},
+ {file = "SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204"},
+ {file = "SQLAlchemy-2.0.23-cp38-cp38-win32.whl", hash = "sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306"},
+ {file = "SQLAlchemy-2.0.23-cp38-cp38-win_amd64.whl", hash = "sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b"},
+ {file = "SQLAlchemy-2.0.23-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55"},
+ {file = "SQLAlchemy-2.0.23-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74"},
+ {file = "SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35"},
+ {file = "SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221"},
+ {file = "SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0"},
+ {file = "SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab"},
+ {file = "SQLAlchemy-2.0.23-cp39-cp39-win32.whl", hash = "sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884"},
+ {file = "SQLAlchemy-2.0.23-cp39-cp39-win_amd64.whl", hash = "sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b"},
+ {file = "SQLAlchemy-2.0.23-py3-none-any.whl", hash = "sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d"},
+ {file = "SQLAlchemy-2.0.23.tar.gz", hash = "sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69"},
]
[package.dependencies]
-greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"}
-typing-extensions = ">=4.6.0"
+greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""}
+typing-extensions = ">=4.2.0"
[package.extras]
aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
-aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"]
asyncio = ["greenlet (!=0.4.17)"]
asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
@@ -2881,7 +2770,7 @@ mssql-pyodbc = ["pyodbc"]
mypy = ["mypy (>=0.910)"]
mysql = ["mysqlclient (>=1.4.0)"]
mysql-connector = ["mysql-connector-python"]
-oracle = ["cx_oracle (>=8)"]
+oracle = ["cx-oracle (>=8)"]
oracle-oracledb = ["oracledb (>=1.0.1)"]
postgresql = ["psycopg2 (>=2.7)"]
postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
@@ -2891,7 +2780,7 @@ postgresql-psycopg2binary = ["psycopg2-binary"]
postgresql-psycopg2cffi = ["psycopg2cffi"]
postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
pymysql = ["pymysql"]
-sqlcipher = ["sqlcipher3_binary"]
+sqlcipher = ["sqlcipher3-binary"]
[[package]]
name = "stack-data"
@@ -2928,13 +2817,13 @@ widechars = ["wcwidth"]
[[package]]
name = "terminado"
-version = "0.18.1"
+version = "0.18.0"
description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
optional = false
python-versions = ">=3.8"
files = [
- {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"},
- {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"},
+ {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
+ {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
]
[package.dependencies]
@@ -2949,13 +2838,13 @@ typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
[[package]]
name = "tinycss2"
-version = "1.3.0"
+version = "1.2.1"
description = "A tiny CSS parser"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"},
- {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"},
+ {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
+ {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
]
[package.dependencies]
@@ -2963,7 +2852,7 @@ webencodings = ">=0.4"
[package.extras]
doc = ["sphinx", "sphinx_rtd_theme"]
-test = ["pytest", "ruff"]
+test = ["flake8", "isort", "pytest"]
[[package]]
name = "tomli"
@@ -2978,70 +2867,70 @@ files = [
[[package]]
name = "tornado"
-version = "6.4.1"
+version = "6.3.3"
description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
optional = false
-python-versions = ">=3.8"
+python-versions = ">= 3.8"
files = [
- {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"},
- {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"},
- {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"},
- {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"},
- {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"},
- {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"},
- {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"},
- {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"},
- {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"},
- {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"},
- {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"},
+ {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:502fba735c84450974fec147340016ad928d29f1e91f49be168c0a4c18181e1d"},
+ {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:805d507b1f588320c26f7f097108eb4023bbaa984d63176d1652e184ba24270a"},
+ {file = "tornado-6.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f"},
+ {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ac51f42808cca9b3613f51ffe2a965c8525cb1b00b7b2d56828b8045354f76a"},
+ {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71a8db65160a3c55d61839b7302a9a400074c9c753040455494e2af74e2501f2"},
+ {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ceb917a50cd35882b57600709dd5421a418c29ddc852da8bcdab1f0db33406b0"},
+ {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:7d01abc57ea0dbb51ddfed477dfe22719d376119844e33c661d873bf9c0e4a16"},
+ {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9dc4444c0defcd3929d5c1eb5706cbe1b116e762ff3e0deca8b715d14bf6ec17"},
+ {file = "tornado-6.3.3-cp38-abi3-win32.whl", hash = "sha256:65ceca9500383fbdf33a98c0087cb975b2ef3bfb874cb35b8de8740cf7f41bd3"},
+ {file = "tornado-6.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5"},
+ {file = "tornado-6.3.3.tar.gz", hash = "sha256:e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe"},
]
[[package]]
name = "traitlets"
-version = "5.14.3"
+version = "5.13.0"
description = "Traitlets Python configuration system"
optional = false
python-versions = ">=3.8"
files = [
- {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"},
- {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"},
+ {file = "traitlets-5.13.0-py3-none-any.whl", hash = "sha256:baf991e61542da48fe8aef8b779a9ea0aa38d8a54166ee250d5af5ecf4486619"},
+ {file = "traitlets-5.13.0.tar.gz", hash = "sha256:9b232b9430c8f57288c1024b34a8f0251ddcc47268927367a0dd3eeaca40deb5"},
]
[package.extras]
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
-test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
[[package]]
name = "types-python-dateutil"
-version = "2.9.0.20240316"
+version = "2.8.19.14"
description = "Typing stubs for python-dateutil"
optional = false
-python-versions = ">=3.8"
+python-versions = "*"
files = [
- {file = "types-python-dateutil-2.9.0.20240316.tar.gz", hash = "sha256:5d2f2e240b86905e40944dd787db6da9263f0deabef1076ddaed797351ec0202"},
- {file = "types_python_dateutil-2.9.0.20240316-py3-none-any.whl", hash = "sha256:6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b"},
+ {file = "types-python-dateutil-2.8.19.14.tar.gz", hash = "sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b"},
+ {file = "types_python_dateutil-2.8.19.14-py3-none-any.whl", hash = "sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9"},
]
[[package]]
name = "typing-extensions"
-version = "4.12.2"
+version = "4.8.0"
description = "Backported and Experimental Type Hints for Python 3.8+"
optional = false
python-versions = ">=3.8"
files = [
- {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
- {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
+ {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"},
+ {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"},
]
[[package]]
name = "tzdata"
-version = "2024.1"
+version = "2023.3"
description = "Provider of IANA time zone data"
optional = false
python-versions = ">=2"
files = [
- {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
- {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+ {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"},
+ {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"},
]
[[package]]
@@ -3060,46 +2949,46 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake
[[package]]
name = "urllib3"
-version = "2.2.2"
+version = "2.0.7"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
- {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
+ {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"},
+ {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"},
]
[package.extras]
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
-h2 = ["h2 (>=4,<5)"]
+secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "wcwidth"
-version = "0.2.13"
+version = "0.2.9"
description = "Measures the displayed width of unicode strings in a terminal"
optional = false
python-versions = "*"
files = [
- {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
- {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
+ {file = "wcwidth-0.2.9-py2.py3-none-any.whl", hash = "sha256:9a929bd8380f6cd9571a968a9c8f4353ca58d7cd812a4822bba831f8d685b223"},
+ {file = "wcwidth-0.2.9.tar.gz", hash = "sha256:a675d1a4a2d24ef67096a04b85b02deeecd8e226f57b5e3a72dbb9ed99d27da8"},
]
[[package]]
name = "webcolors"
-version = "24.6.0"
+version = "1.13"
description = "A library for working with the color formats defined by HTML and CSS."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "webcolors-24.6.0-py3-none-any.whl", hash = "sha256:8cf5bc7e28defd1d48b9e83d5fc30741328305a8195c29a8e668fa45586568a1"},
- {file = "webcolors-24.6.0.tar.gz", hash = "sha256:1d160d1de46b3e81e58d0a280d0c78b467dc80f47294b91b1ad8029d2cedb55b"},
+ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
+ {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
]
[package.extras]
docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
-tests = ["coverage[toml]"]
+tests = ["pytest", "pytest-cov"]
[[package]]
name = "webencodings"
@@ -3114,47 +3003,47 @@ files = [
[[package]]
name = "websocket-client"
-version = "1.8.0"
+version = "1.6.4"
description = "WebSocket client for Python with low level API options"
optional = false
python-versions = ">=3.8"
files = [
- {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"},
- {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"},
+ {file = "websocket-client-1.6.4.tar.gz", hash = "sha256:b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df"},
+ {file = "websocket_client-1.6.4-py3-none-any.whl", hash = "sha256:084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24"},
]
[package.extras]
-docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
optional = ["python-socks", "wsaccel"]
test = ["websockets"]
[[package]]
name = "widgetsnbextension"
-version = "4.0.11"
+version = "4.0.9"
description = "Jupyter interactive widgets for Jupyter Notebook"
optional = false
python-versions = ">=3.7"
files = [
- {file = "widgetsnbextension-4.0.11-py3-none-any.whl", hash = "sha256:55d4d6949d100e0d08b94948a42efc3ed6dfdc0e9468b2c4b128c9a2ce3a7a36"},
- {file = "widgetsnbextension-4.0.11.tar.gz", hash = "sha256:8b22a8f1910bfd188e596fe7fc05dcbd87e810c8a4ba010bdb3da86637398474"},
+ {file = "widgetsnbextension-4.0.9-py3-none-any.whl", hash = "sha256:91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175"},
+ {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"},
]
[[package]]
name = "zipp"
-version = "3.19.2"
+version = "3.17.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
optional = false
python-versions = ">=3.8"
files = [
- {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"},
- {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"},
+ {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+ {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
]
[package.extras]
-doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"]
+testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
[metadata]
lock-version = "2.0"
python-versions = "<3.13,>=3.11"
-content-hash = "44bb19f7379cc5c7e91f92c15198c3277c70233d78f6a02f65671fc947429389"
+content-hash = "f6f60ec28f3f1e61377114f1b58e6117b45fb290f362ad471790611505e95dfc"
diff --git a/manuscript/presentation_summary.md b/presentation_summary.md
similarity index 100%
rename from manuscript/presentation_summary.md
rename to presentation_summary.md
diff --git a/pyproject.toml b/pyproject.toml
index 64fc994..bc3a204 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,22 +1,22 @@
[tool.poetry]
name = "scoping-review"
-version = "0.5.1"
+version = "0.5.0"
description = ""
authors = ["Marty Oehme "]
-packages = [{ include = "src" }]
+readme = "README.md"
[tool.poetry.dependencies]
python = "<3.13,>=3.11"
pandas = "^2.1.1"
seaborn = "^0.13.0"
-bibtexparser = { version = ">=2.0.0b1", allow-prereleases = true }
+bibtexparser = {version = ">=2.0.0b1", allow-prereleases = true}
jupyter = "^1.0.0"
jupyter-cache = "^0.6.1"
tabulate = "^0.9.0"
openpyxl = "^3.1.2"
[tool.poetry.group.dev.dependencies]
-pynvim = "^0.5.0"
+pynvim = "^0.4.3"
pyperclip = "^1.8.2"
poethepoet = "^0.24.4"
@@ -26,14 +26,12 @@ build-backend = "poetry.core.masonry.api"
[tool.ruff]
ignore = ["E402"]
-[tool.pyright]
-typeCheckingMode="basic"
[tool.poe]
poetry_command = ""
[tool.poe.tasks.preview]
help = "Preview the main review in the browser"
-cmd = "quarto preview manuscript/article.qmd --to=html"
+cmd = "quarto preview scoping_review.qmd --to=html"
[tool.poe.tasks.render]
help = "Render all project files"
cmd = "quarto render"
@@ -43,19 +41,15 @@ cmd = "nvim"
[tool.poe.tasks.extract]
help = "Extract the csv data from raw yaml files"
shell = """
-python src/extract/raw_to_extracted_csv.py > data/processed/extracted.csv
-"""
-[tool.poe.tasks.prisma]
-help = "Update PRISMA flowchart numbers"
-shell = """
-python src/model/prisma.py > data/processed/prisma.mmd
+python src/matrix.py > 02-data/processed/extracted.csv
"""
[tool.poe.tasks.milestone]
help = "Extract, render, commit and version a finished artifact"
shell = """
quarto render --output-dir 05-final_paper
+poe extract
VERSION="$(poetry version -s minor)"
-git add pyproject.toml data 05-final_paper
+git add pyproject.toml 02-data 05-final_paper
git commit -m "Publish version $VERSION" --no-gpg-sign
git tag -a -m "new bundle for $(date -Isecond)" "$VERSION"
"""
diff --git a/manuscript/scoping_review.qmd b/scoping_review.qmd
similarity index 94%
rename from manuscript/scoping_review.qmd
rename to scoping_review.qmd
index b7685d1..a4187c5 100644
--- a/manuscript/scoping_review.qmd
+++ b/scoping_review.qmd
@@ -22,25 +22,45 @@ crossref:
---
```{python}
-#| label: standard-imports
+#| label: load-data
#| echo: false
-#| output: false
-import src.globals as g
+from pathlib import Path
import re
-from IPython.display import display, Markdown, HTML
+## standard imports
+from IPython.core.display import Markdown as md
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
-from tabulate import tabulate
import seaborn as sns
-sns.set_style("whitegrid")
-```
+from tabulate import tabulate
+import bibtexparser
-```{python}
-#| label: load-dataframes
-#| echo: false
-#| output: false
-from src import df, df_by_intervention, validities
+sns.set_style("whitegrid")
+
+DATA_DIR=Path("./02-data")
+RAW_DATA=DATA_DIR.joinpath("raw")
+WORKING_DATA=DATA_DIR.joinpath("intermediate")
+PROCESSED_DATA=DATA_DIR.joinpath("processed")
+SUPPLEMENTARY_DATA=DATA_DIR.joinpath("supplementary")
+
+from src import prep_data
+
+# raw database-search results
+bib_sample_raw_db = prep_data.bib_library_from_dir(RAW_DATA)
+# the complete library of sampled (and working) literature
+bib_sample = prep_data.bib_library_from_dir(WORKING_DATA)
+
+# load relevant studies
+from src import load_data
+
+bib_df = prep_data.observations_with_metadata_df(
+ raw_observations = load_data.from_yml(PROCESSED_DATA),
+ study_metadata = prep_data.bib_metadata_df(bib_sample),
+ country_groups = prep_data.country_groups_df(Path(f"{SUPPLEMENTARY_DATA}/wb-country-groupings.xlsx")),
+)
+raw_observations = None
+zot_df = None
+df_country_groups = None
```
@@ -227,7 +247,7 @@ The identified channels here are different social supports, gender role expectat
Kumari [-@Kumari2018] looks at the relationship of both economic growth and gender disparity on the labour supply in investigating their effects on female work participation.
-
+
They see a U-shaped participation rate and some evidence of cross-sector gender pay disparity which is affected by demographic factors such as migration, marriage, child care and fertility, as well as economic factors such as per capita income, unemployment, infrastructure and the prevalence of non-farm jobs.
Ultimately, they argue that the labour supply inequalities are based on inequality between the sexes and, while regulatory measures such as adequate family and childcare policies, tax regimes and the presence of subsidized healthcare help, changes to the female labour force participation fundamentally require the replacement of such a traditional value system itself.
@@ -270,8 +290,7 @@ There is also low evidence for return to work being increased by education, work
# Methodology and data
-The following section will discuss the methodology that is proposed to conduct the review of the literature on policy interventions that are expected to address inequalities in forms of work and labour market outcomes,
-as well as give an overview of the collected data.
+This section will discuss the systematic scoping review methodology that is proposed to conduct the review of the literature on policy interventions that are expected to address inequalities in forms of work and labour market outcomes.
This study follows the principles of a systematic review framework, to systematically assess the impact of an array of policies on inequalities in the world of work.
It strives to follow the clear and reproducible method of identification prior to synthesis of relevant research,
while limiting "bias by the systematic assembly, critical appraisal and synthesis" through applying scientific strategies to the review itself [@Cook1995].
@@ -287,12 +306,14 @@ With an increasingly adopted approach in recent years, with rigorous dichotomy o
## The search protocol
+
The search protocol was carried out based on the introduced areas of policies as well as the possible combination of definitions and outcomes in the world of work.
For each dimension of definitions, a cluster containing possible utilized terms will be created, that is for: definitions of work and labour, forms of work, definitions of inequality, forms of vertical and forms of horizontal inequalities, labour market outcomes, and definitions of policy.
Each of the clusters contains synonymous terms as well as term-adjacent phrase combinations which are in turn used to refine or broaden the search scope to best encapsulate each respective cluster, based on the above definitions.
+
The search protocol then follows a three-staged process of execution: identification, screening and extraction.
-First, in identification, the relevant policy, inequality and world of work related dimensions are combined through Boolean operators to conduct a search through the database repository Web of Science and supplemental searches via Google Scholar to supply potential grey literature.
+First, in identification, the relevant policy, inequality and world of work related dimensions are combined through Boolean operators to conduct a search through the database repository Web of Science and supplemental searches via Google Scholar to supply potential gray literature.
While the resulting study pools could be screened for in multiple languages, the search queries themselves are passed to the databases in English-language only.
Relevant results are then complemented through the adoption of a 'snowballing' technique,
in which an array of identified adjacent published reviews is analysed for their reference lists to find cross-references of potentially missing literature and in turn add those to the pool of studies.
@@ -301,39 +322,51 @@ To identify potential studies and create an initial sample, relevant terms for t
Identified terms comprising the world of work can be found in @tbl-wow-terms,
with the search query requiring a term from the general column and one other column.
+::: {#tbl-wow-terms}
+
```{python}
#| label: tbl-wow-terms
#| tbl-cap: World of work term cluster
-terms_wow = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/terms_wow.csv")
-Markdown(tabulate(terms_wow.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
+terms_wow = pd.read_csv("02-data/supplementary/terms_wow.csv")
+md(tabulate(terms_wow.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
```
+World of work term cluster
+
+:::
+
The world of work cluster, like the inequality and policy intervention clusters below, is made up of a general signifier (such as "work", "inequality" or "intervention") which has to be labelled in a study to form part of the sample,
as well as any additional terms looking into one or multiple specific dimensions or categories of these signifiers (such as "domestic" work, "gender" inequality, "maternity leave" intervention).
At least one general term and at least one additional term have to be mentioned by a study to be identified for the initial sample pool.
For the policy intervention cluster, a variety of terms have been identified both from the ILO policy areas and guidelines as well as existing reviews, as can be seen in @tbl-intervention-terms.
Where terms have been identified from previous reviews outside the introduced ILO policy guidelines,
-their sources have been included in the table.
+there source has been included in the table.
For the database query, a single term from the general category is required to be included in addition to one term from *any* of the remaining categories.
+::: {#tbl-intervention-terms}
+
```{python}
#| label: tbl-intervention-terms
-#| tbl-cap: Policy intervention term cluster
-terms_policy = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/terms_policy.csv")
+#| tbl-cap: Intervention term cluster
+terms_policy = pd.read_csv("02-data/supplementary/terms_policy.csv")
# different headers to include 'social norms'
headers = ["General", "Institutional", "Structural", "Agency & social norms"]
-Markdown(tabulate(terms_policy.fillna(""), showindex=False, headers=headers, tablefmt="grid"))
+md(tabulate(terms_policy.fillna(""), showindex=False, headers=headers, tablefmt="grid"))
```
+Policy intervention term cluster
+
+:::
+
Lastly, the inequality cluster is once again made up of a general term describing inequality which has to form part of the query results, as well as at least one term describing a specific vertical or horizontal inequality,
as seen in @tbl-inequality-terms.
```{python}
#| label: tbl-inequality-terms
#| tbl-cap: Inequality term cluster
-terms_inequality = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/terms_inequality.csv")
-Markdown(tabulate(terms_inequality.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
+terms_inequality = pd.read_csv("02-data/supplementary/terms_inequality.csv")
+md(tabulate(terms_inequality.fillna(""), showindex=False, headers="keys", tablefmt="grid"))
```
A general as well as category-specific term from each cluster will be required, using a intersection merge (Boolean 'AND'),
@@ -354,10 +387,10 @@ with a focus on the narrowing criteria specified in @tbl-inclusion-criteria.
::: {#tbl-inclusion-criteria}
```{python}
-#| label: inclusion-criteria
+#| label: tbl-inclusion-criteria
-inclusion_criteria = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/inclusion-criteria.tsv", sep="\t")
-Markdown(tabulate(inclusion_criteria, showindex=False, headers="keys", tablefmt="grid"))
+inclusion_criteria = pd.read_csv("02-data/supplementary/inclusion-criteria.tsv", sep="\t")
+md(tabulate(inclusion_criteria, showindex=False, headers="keys", tablefmt="grid"))
```
Source: Author's elaboration
@@ -378,12 +411,57 @@ Last, for extraction, studies are screened for their full-texts, irrelevant stud
Should any literature reviews be identified as relevant during this screening process,
they will in turn be crawled for cited sources in a 'snowballing' process,
and the sources will be added to the sample to undergo the same screening process explained above.
-The resulting process can be seen in @fig-prisma.
-```{mermaid}
+```{python}
+#| label: calculate-scoping-flowchart
+#| echo: false
+#| output: asis
+
+nr_database_query_raw = len(bib_sample_raw_db.entries)
+nr_snowballing_raw = 2240
+
+all_keywords = [entry["keywords"] for entry in bib_sample.entries if "keywords" in entry.fields_dict.keys()]
+nr_database_deduplicated = len([1 for kw in all_keywords if "sample::database" in kw])
+nr_snowballing_deduplicated = len([1 for kw in all_keywords if "sample::snowballing" in kw])
+nr_out_superseded = len([1 for kw in all_keywords if "out::superseded" in kw])
+
+FULL_RAW_SAMPLE_NOTHING_REMOVED = nr_database_query_raw + nr_snowballing_raw
+FULL_SAMPLE_DUPLICATES_REMOVED = nr_database_deduplicated + nr_snowballing_deduplicated + nr_out_superseded
+
+NON_ZOTERO_CAPTURE_TITLE_REMOVAL = 1150
+NON_ZOTERO_CAPTURE_ABSTRACT_REMOVAL = 727
+NON_ZOTERO_CAPTURE_FULLTEXT_REMOVAL = 348
+
+nr_out_duplicates = FULL_RAW_SAMPLE_NOTHING_REMOVED - FULL_SAMPLE_DUPLICATES_REMOVED
+nr_out_title = len([1 for kw in all_keywords if "out::title" in kw]) + NON_ZOTERO_CAPTURE_TITLE_REMOVAL
+nr_out_abstract = len([1 for kw in all_keywords if "out::abstract" in kw]) + NON_ZOTERO_CAPTURE_ABSTRACT_REMOVAL
+nr_out_fulltext = len([1 for kw in all_keywords if "out::full-text" in kw]) + NON_ZOTERO_CAPTURE_FULLTEXT_REMOVAL
+nr_out_language = len([1 for kw in all_keywords if "out::language" in kw])
+nr_extraction_done = len([1 for kw in all_keywords if "done::extracted" in kw])
+
+t3 = "`" * 3
+# FIXME use 02-data/supplementary undeduplciated counts to get database starting and snowballing counts
+# from: https://github.com/quarto-dev/quarto-cli/discussions/6508
+print(f"""
+```{{mermaid}}
%%| label: fig-prisma
-%%| fig-cap: PRISMA flowchart for scoping process
-%%| file: ../data/processed/prisma.mmd
+%%| fig-cap: "Sample sorting process through identification and screening"
+%%| fig-width: 6
+flowchart TD;
+ search_db["Records identified through database searching (n={nr_database_query_raw})"] --> starting_sample;
+ search_prev["Records identified through other sources (n={nr_snowballing_raw})"] --> starting_sample["Starting sample (n={FULL_RAW_SAMPLE_NOTHING_REMOVED})"];
+
+ starting_sample -- "Duplicate removal ({nr_out_duplicates+nr_out_superseded} removed) "--> dedup["Records after duplicates removed (n={FULL_SAMPLE_DUPLICATES_REMOVED})"];
+
+ dedup -- "Title screening ({nr_out_title} excluded)" --> title_screened["Records after titles screened (n={FULL_SAMPLE_DUPLICATES_REMOVED - nr_out_title})"];
+
+ title_screened -- "Abstract screening ({nr_out_abstract} excluded)"--> abstract_screened["Records after abstracts screened (n={FULL_SAMPLE_DUPLICATES_REMOVED-nr_out_title-nr_out_abstract})"];
+
+ abstract_screened -- " Language screening ({nr_out_language} excluded) "--> language_screened["Records after language screened (n={FULL_SAMPLE_DUPLICATES_REMOVED-nr_out_title-nr_out_abstract-nr_out_language})"];
+
+ language_screened -- " Full-text screening ({nr_out_fulltext} excluded) "--> full-text_screened["Full-text articles assessed for eligibility (n={nr_extraction_done})"];
+{t3}
+""")
```
All relevant data concerning both their major findings and statistical significance are then extracted from the individual studies into a collective results matrix.
@@ -402,81 +480,68 @@ For a full list of validity ranks, see @apptbl-validity-external and @apptbl-val
## Data
```{python}
-from src.model import prisma
-p = prisma.PrismaNumbers()
+#| label: calculate-relevant-studies
+#| echo: false
+# TODO Remove redundant 'relevant' studies observation below once all studies are extracted.
+nr_relevant = len([1 for kw in all_keywords if "relevant" in kw])
```
-The query execution results in an initial sample of
-`{python} p.raw_db`
-potential studies identified from the database search as well as
-`{python} p.raw_snowball`
-potential studies from other sources,
-leading to a total initial number of
-`{python} p.raw_full`.
+The query execution results in an initial sample of `{python} nr_database_query_raw` potential studies identified from the database search as well as `{python} nr_snowballing_raw` potential studies from other sources, leading to a total initial number of `{python} FULL_RAW_SAMPLE_NOTHING_REMOVED`.
This accounts for all identified studies without duplicate removal, without controlling for literature that has been superseded or applying any other screening criteria.
-Of these,
-`{python} p.dedup_full - p.out_title - p.out_abstract - p.out_language`
-have been identified as potentially relevant studies for the purposes of this scoping review and selected for a full text review,
-from which in turn
-`{python} p.final_extracted`
-have ultimately been extracted.
+Of these, `{python} nr_relevant` have been identified as potentially relevant studies for the purposes of this scoping review, from which `{python} nr_extraction_done` have been extracted.
+
+
The currently identified literature rises somewhat in volume over time,
with first larger outputs identified from 2014,
as can be seen in @fig-publications-per-year.
+
+
+
```{python}
#| label: fig-publications-per-year
#| fig-cap: Publications per year
df_study_years = (
- df.groupby(["author", "year", "title"])
+ bib_df.groupby(["author", "year", "title"])
.first()
.reset_index()
.drop_duplicates()
- ["year"].value_counts()
- .sort_index()
)
-# use order to ensure all years are displayed, even ones without values
-years_range = list(range(df_study_years.index.min(), df_study_years.index.max()+1))
-ax = sns.barplot(df_study_years, order=years_range)
-
-ax.set_ylabel("Count")
-ax.set_xlabel("Year")
-plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor") # ensure rotated right-anchor
+# plot by year TODO decide if we want to distinguish by literature type/region/etc as hue
+# FIXME should be timeseries plot so no years are missing
+ax = sns.countplot(df_study_years, x="year")
+ax.tick_params(axis='x', rotation=45)
+ax.set_xlabel("")
plt.tight_layout()
plt.show()
df_study_years = None
```
-Anomalies such as the relatively significant dips in output in 2016 and 2017 become especially interesting against the strong overall increase of output.
-While this can mean a decreased interest or different focus points within academia during the time span,
-it may also point towards newly arising alternative term clusters, or a re-focus towards different interventions,
-either of which may not be completely captured in the data and should thus be kept in mind for future scoping efforts.
+Anomalies such as the relatively significant dips in output in 2016 and 2012 become especially interesting against the strong later increase of output.
+While this can mean a decreased interest or different focus points within academia during those time spans,
+it may also point towards alternative term clusters that are newly arising, or a re-focus towards different interventions,
+and should thus be kept in mind for future scoping efforts.
-The predominant amount of literature is based on white literature, with only a marginal amount solely published as grey literature.
+The predominant amount of literature is based on white literature, with only a marginal amount solely published as gray literature.
This represents a gap which seems reasonable and not surprising since the database query efforts were primarily aimed at finding the most current versions of white literature.
Such a stark gap speaks to a well targeted identifaction procedure, with more up-to-date white literature correctly superseding potential previous publications.
@fig-citations-per-year-avg shows the average number of citations for all studies published within an individual year.
From the literature sample, several patterns emerge:
-First, in general, citation counts are slightly decreasing --- as should generally be expected for newer publications as less time has passed allowing either their contents be dissected and distributed or any repeat citations having taken place.
+First, in general, citation counts are slightly decreasing - as should generally be expected with newer publications as less time has passed allowing either their contents be dissected and distributed or any repeat citations having taken place.
```{python}
#| label: fig-citations-per-year-avg
#| fig-cap: Average citations per year
-df["zot_cited"] = df["zot_cited"].dropna().astype("int")
-grpd = df.groupby(["year"], as_index=False)["zot_cited"].mean()
+bib_df["zot_cited"] = bib_df["zot_cited"].dropna().astype("int")
+grpd = bib_df.groupby(["year"], as_index=False)["zot_cited"].mean()
fig, ax = plt.subplots()
ax.bar(grpd["year"], grpd["zot_cited"])
sns.regplot(x=grpd["year"], y=grpd["zot_cited"], ax=ax)
#ax = sns.lmplot(data=grpd, x="year", y="zot_cited", fit_reg=True)
-
-years_list = np.arange(2000, 2024).tolist()
-ax.set_xticks(years_list)
ax.tick_params(axis='x', rotation=45)
-ax.set_ylabel("Citations")
-ax.set_xlabel("Year")
plt.tight_layout()
plt.show()
```
@@ -486,10 +551,8 @@ This suggests, first, no overall decrease in academic interest in the topic over
and second, no linearly developing concentration or centralization of knowledge output and dissemination,
though it also throws into question a clear-cut increase of *relevant* output over time.
-Positive outlier years in citation amount can point to clusters of relevant literature feeding wider dissemination or cross-disciplinary interest,
-a possible sign of still somewhat unfocused research production which does not yet approach from a single coherent perspective.
-It can also point to a centralization of knowledge production, with studies feeding more intensely off each other during the literature review process,
-a possible sign of more focused knowledge production and thus valuable to more closely review during screening.
+Positive outlier years in citation amount can point to clusters of relevant literature feeding wider dissemination or cross-disciplinary interest, a possible sign of still somewhat unfocused research production which does not approach from a single coherent perspective yet.
+It can also point to a centralization of knowledge production, with studies feeding more intensely off each other during the review process, a possible sign of more focused knowledge production and thus valuable to more closely review during the screening process.
It may also suggest that clearly influential studies have been produced during those years, a possibility which may be more relevant during years of more singular releases (such as 2011 and 2013).
This is because, as @fig-publications-per-year showed, the overall output was nowhere near as rich as in the following years, allowing single influential works to skew the visible means for those years.
@@ -497,6 +560,10 @@ This is because, as @fig-publications-per-year showed, the overall output was no
In all of these cases, such outliers should provide clear points of interest during the screening process for eventual re-evaluation of utilized scoping term clusters and for future research focus.
Should they point towards gaps (or over-optimization) of specific areas of interest during those time-frames or more generally, they may provide an impetus for tweaking future identification queries to better align with the prevailing literature output.
+
+
+
+
# Synthesis: A multitude of lenses
This section will present a synthesis of evidence from the scoping review,
@@ -507,7 +574,7 @@ analysing the main findings per policy area, as well as underscore individual st
#| fig-cap: Available studies by primary type of intervention
by_intervention = (
- df
+ bib_df
.fillna("")
.groupby(["author", "year", "title", "design", "method", "representativeness", "citation"])
.agg(
@@ -570,10 +637,10 @@ study_strength_bins = {
def strength_for(val):
return list(study_strength_bins.keys())[list(study_strength_bins.values()).index(val)]
-findings_institutional = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/findings-institutional.csv")
+findings_institutional = pd.read_csv("02-data/supplementary/findings-institutional.csv")
fd_df = validity.add_to_findings(findings_institutional, by_intervention, study_strength_bins)
-Markdown(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
+md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
```
Note: Each main finding is presented with an internal strength of evidence and an external strength of evidence which describe the combined validities of the evidence base for the respective finding.
@@ -747,7 +814,7 @@ The results show the same trends for measurement of land inequality using the sh
### Social protection
-
+
@Wang2016 undertake an observational study on the levels of social assistance benefits and wages in a national comparative study within 26 OECD countries.
@@ -784,7 +851,8 @@ The authors suggest this shows the primary channel of the programme becoming a b
Two limitations of the study are its small sample size due to a low response rate, and an over-representation of racial minorities, women and older persons in the sample mentioned as introducing possible downward bias for measured labour force participation rates.
-
+
+
@Cieplinski2021 undertake a simulation study on the income inequality effects of both a policy targeting a reduction in working time and the introduction of a UBI in Italy.
It finds that while both decrease overall income inequality, measured through Gini coefficient, they do so through different channels.
While provision of a UBI sustains aggregate demand, thereby spreading income in a more equitable manner,
@@ -802,10 +870,10 @@ One limitation of the study is the modelling assumption that workers will have t
#| label: tbl-findings-structural
from src.model import validity
-findings_structural = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/findings-structural.csv")
+findings_structural = pd.read_csv("02-data/supplementary/findings-structural.csv")
fd_df = validity.add_to_findings(findings_structural, by_intervention, study_strength_bins)
-Markdown(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
+md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
```
Note: Each main finding is presented with an internal strength of evidence and an external strength of evidence which describe the combined validities of the evidence base for the respective finding.
@@ -1039,10 +1107,10 @@ Though the intervention clearly aims at strengthening some aspect of individual
#| label: tbl-findings-agency
from src.model import validity
-findings_agency = pd.read_csv(f"{g.SUPPLEMENTARY_DATA}/findings-agency.csv")
+findings_agency = pd.read_csv("02-data/supplementary/findings-agency.csv")
fd_df = validity.add_to_findings(findings_agency, by_intervention, study_strength_bins)
-Markdown(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
+md(tabulate(fd_df[["area of policy", "internal_validity", "external_validity", "findings", "channels"]].fillna(""), showindex=False, headers=["area of policy", "internal strength", "external strength", "main findings", "channels"], tablefmt="grid"))
```
Note: Each main finding is presented with an internal strength of evidence and an external strength of evidence which describe the combined validities of the evidence base for the respective finding.
@@ -1107,7 +1175,8 @@ Some limitations to the study include a relatively small overall sample size, as
### Unconscious bias and discriminatory norms
-
+
+
@Al-Mamun2014 conduct a study on the impacts of an urban micro-finance programme in Malaysia on the economic empowerment of women.
The programme introduced the ability for low-income urban individuals to receive collateral-free credit.
@@ -1135,7 +1204,7 @@ The authors suggest the primary channel is the newly increased bargaining power
#| label: prep-inequalities-crosstabs
# dataframe containing each intervention inequality pair
df_inequality = (
- df[["region", "intervention", "inequality"]]
+ bib_df[["region", "intervention", "inequality"]]
.assign(
Intervention = lambda _df: (_df["intervention"]
.str.replace(r"\(.+\)", "", regex=True)
@@ -1172,7 +1241,7 @@ in which fewer studies have been identified.
#| fig-cap: Studies by regions analysed
by_region = (
- df[["region"]]
+ bib_df[["region"]]
.assign(
region = lambda _df: (_df["region"]
.str.replace(r" ?; ?", ";", regex=True)
@@ -1206,7 +1275,7 @@ with each region often having both a specific focus in policy-orientations and a
and in some cases also differing underlying term bases.
Such a contextual term differences may then not be captured adequately by the existing query terms and would point to a necessity to re-align it to the required specifics.
-One reason for such a differentiation could be a larger amount of grey literature captured compared to other regions,
+One reason for such a differentiation could be a larger amount of gray literature captured compared to other regions,
which may be utilising less established terms than the majority of captured literature for policy implementations.
Another reason could be the actual implementation of different policy programmes which are then equally not captured by existing term clusters.
@@ -1216,11 +1285,12 @@ Using the validity ranking separated into internal and external validity for eac
it is possible to identify the general make-up of the overall sample,
the relationship between both dimensions and the distribution of studies within.
-@fig-validity-relation shows the relation between each study's validity on the internal dimension and the external dimension,
-with experimental studies additionally distinguished.
+As can be seen in @fig-validity-relation, the relationship between the internal dimension and the external dimension of validity for the study pool follows a normal distribution.
Generally, studies that have a lower internal validity, between 2.0 and 3.5, rank higher on their external validity,
while studies with higher internal validity in turn do not reach as high on the external validity ranking.
+::: {layout-ncol=2 .column-body-outset}
+
```{python}
#| label: fig-validity-relation
#| fig-cap: "Relation between internal and external validity"
@@ -1232,24 +1302,39 @@ validities["identifier"] = validities["author"].str.replace(r',.*$', '', regex=T
validities = validities.loc[(validities["design"] == "quasi-experimental") | (validities["design"] == "experimental")]
#validities["external_validity"] = validities["external_validity"].astype('category')
validities["internal_validity"] = validities["internal_validity"].astype('category')
-validities["External Validity"] = validities["external_validity"]
-validities["Internal Validity"] = validities["internal_validity"]
plt.figure().set_figheight(5)
sns.violinplot(
data=validities,
- x="Internal Validity", y="External Validity", hue="design",
+ x="internal_validity", y="external_validity", hue="design",
cut=0, bw_method="scott",
orient="x"
)
sns.swarmplot(
data=validities,
- x="Internal Validity", y="External Validity", legend=False,
+ x="internal_validity", y="external_validity", legend=False,
color="darkmagenta",
s=4
)
```
+```{python}
+#| label: fig-validity-distribution
+#| fig-cap: "Distribution of internal validities"
+
+sns.displot(
+ data=validities,
+ x="external_validity", hue="internal_validity",
+ kind="kde",
+ multiple="fill", clip=(0, None),
+ palette="ch:rot=-0.5,hue=1.5,light=0.9",
+ bw_adjust=.65, cut=0,
+ warn_singular = False
+)
+```
+
+:::
+
Studies with an internal validity ranking of of 3.0 (primarily made up of difference-in-difference approaches) and an internal ranking of 5.0 (randomized control trials) have the same tight clustering around an external validity between 4.0 (national) and 5.0 (census-based), and 2.0 (local) and 3.0 (subnational), respectively.
This clearly shows the expected overall relationship of studies with high internal validity generally ranking lower on their external validity.
@@ -1266,25 +1351,10 @@ It additionally shows that studies with low internal validity make up the domina
while locally or non-representative samples are almost solely made up of internally highly valid (ranking 4.0 or above) analyses,
again with the exception of @Thoresen2021 already mentioned.
-```{python}
-#| label: fig-validity-distribution
-#| fig-cap: "Distribution of internal validities"
-
-sns.displot(
- data=validities,
- x="External Validity", hue="Internal Validity",
- kind="kde",
- multiple="fill", clip=(0, None),
- palette="ch:rot=-0.5,hue=1.5,light=0.9",
- bw_adjust=.65, cut=0,
- warn_singular = False
-)
-```
-
Looking at the data per region, census-based studies are primarily spread between Latin America and the Caribbean, as well as Europe and Central Asia.
Meanwhile, studies using nationally, subnationally or non-representative data then to have a larger focus on North America, as well as East Asia and the Pacific.
-A slight trend towards studies focusing on evidence-based research in developing countries is visible,
-though with an overall rising output as could be seen in @fig-publications-per-year, and the possibly a reliance on more recent datasets, this would be expected.
+A slight trend towards studies focusing on evidence-based research in developing countries is visible, though with an overall rising output, as seen in @fig-publications-per-year,
+and the possibly a reliance on more recent datasets, this would be expected.
### Inequality types analysed
@@ -1301,8 +1371,8 @@ many studies use income measurements and changes in income or income inequality
```{python}
#| label: inequality-targeting-implicit-explicit
-targeting_majority = df["targeting"].value_counts().index.tolist()[0]
-targeting_minority = df["targeting"].value_counts().index.tolist()[-1]
+targeting_majority = bib_df["targeting"].value_counts().index.tolist()[0]
+targeting_minority = bib_df["targeting"].value_counts().index.tolist()[-1]
```
Often, however, income inequality is not the primary inequality being targeted, but used to measure the effects on other inequalities by seeing how the effects of respective inequality and income intersect, as will be discussed in the following section.
@@ -1314,7 +1384,7 @@ with only a minority of studies looking at policies with an `{python} targeting_
#| fig-cap: Types of inequality analysed
by_inequality = (
- df[["inequality"]]
+ bib_df[["inequality"]]
.assign(
inequality = lambda _df: (_df["inequality"]
.str.replace(r"\(.+\)", "", regex=True)
@@ -1369,6 +1439,7 @@ Similarly, rarely do studies delineate generational outcomes from income, gender
[^education-studies]: For gender inequalities within education paths themselves, see @Stepanenko2021. For possible ways to integrate gender-transformative interventions into professional education, see @Newman2016. For the effects of prior inequalities on taxation preferences, school enrolment and educational choices, see @Gutierrez2009 and @Zamfir2017. For interactions between policies for the knowledge translation of sexual education and their barriers, see @Curran2022.
+
The effects of automation on income inequality are more clearly put into focus by @Eckardt2022 by studying income inequality and under the effects of various kinds of automation and a minimum wage within the economy.
He considers several types of automation, with automation on the extensive margin (automation of more tasks) leading to decreased wage inequality between low-skill and high-skill earners if it results in decreased overall outputs due to wage compression, and vice versa for increased total outputs.
Automation on the intensive margin (increased productivity of automating existing tasks) has ambiguous effects on the employment share of low-skill workers (who are possibly displaced) and a higher minimum wage here decreases the inequality between low-skill wages and higher-skill wages.
@@ -1395,7 +1466,7 @@ findings - channels - policy recc
- supply-side effects, esp maternal (family planning; care work)
- organisational disadvantagement in new economy (networking needs, self-promotion, managerial discretions)
-TODO perhaps add specific section for unionisation effects on gender?
+TODO include unionisation effects on gender
-->
Due to its persistent characteristics, gender inequality is an often analysed horizontal dimension of workplace inequality in the study sample,
@@ -1408,7 +1479,7 @@ with the other regions trailing further behind in output.
#| fig-cap: Regional distribution of studies analysing gender inequalities
by_region_and_inequality = (
- df[["inequality", "region"]]
+ bib_df[["inequality", "region"]]
.assign(
region = lambda _df: (_df["region"]
.str.replace(r" ?; ?", ";", regex=True)
@@ -1730,7 +1801,7 @@ while relying on indicators for measurement which are flexible yet overlapping e
#| label: full-search-query
#| echo: false
#| output: asis
-with open(f"{g.SUPPLEMENTARY_DATA}/query.txt") as f:
+with open(f"{SUPPLEMENTARY_DATA}/query.txt") as f:
query = f.read()
t3 = "`" * 3
@@ -1778,7 +1849,7 @@ Internal validity ranking. Adapted from @Maitrot2017.
```{python}
#| label: apptbl-extraction-matrix
#| tbl-cap: Extraction matrix
-df
+bib_df
```
{{< pagebreak >}}
diff --git a/src/__init__.py b/src/__init__.py
deleted file mode 100644
index b1857ec..0000000
--- a/src/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from src.process.generate_dataframes import bib_sample, bib_sample_db_raw, df_by_intervention, df_main, df_validities
-
-# each observation in a single dataframe
-df = df_main()
-
-# all observations but split per individual intervention
-df_by_intervention = df_by_intervention()
-
-# Calc study validities (internal & external separated)
-validities = df_validities()
-
-bib_sample = bib_sample()
-bib_sample_db_raw = bib_sample_db_raw()
diff --git a/src/globals.py b/src/globals.py
deleted file mode 100644
index d56a9ea..0000000
--- a/src/globals.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import os
-from pathlib import Path
-
-PROJECT_DIR = Path(os.getenv("QUARTO_PROJECT_DIR", "."))
-
-DATA_DIR = PROJECT_DIR.joinpath("data")
-
-EXTRACTED_DATA = DATA_DIR.joinpath("extracted")
-REFERENCE_DATA = DATA_DIR.joinpath("references")
-SUPPLEMENTARY_DATA = DATA_DIR.joinpath("supplementary")
-PROCESSED_DATA = DATA_DIR.joinpath("processed")
diff --git a/src/extract/load_data.py b/src/load_data.py
similarity index 86%
rename from src/extract/load_data.py
rename to src/load_data.py
index bf5a0f4..7cb5d8f 100644
--- a/src/extract/load_data.py
+++ b/src/load_data.py
@@ -5,15 +5,11 @@ from pathlib import Path
from pandas import DataFrame, read_csv
try:
- import src.extract.yml as yaml # for quarto document scripts
+ import src.yml as yaml # for quarto document scripts
except ModuleNotFoundError:
import yml as yaml # for directly running the package
-try:
- import src.globals as g
- DEFAULT_YAML_PATH = g.EXTRACTED_DATA
-except ModuleNotFoundError:
- DEFAULT_YAML_PATH = Path("data")
+DEFAULT_YAML_PATH = Path("02-data/processed")
def to_tsv(studies: list[dict]) -> str:
diff --git a/src/extract/raw_to_extracted_csv.py b/src/matrix.py
similarity index 81%
rename from src/extract/raw_to_extracted_csv.py
rename to src/matrix.py
index d71f1e5..d4072d5 100644
--- a/src/extract/raw_to_extracted_csv.py
+++ b/src/matrix.py
@@ -8,10 +8,6 @@ try:
except ModuleNotFoundError:
from model import validity # for directly running the package
-try:
- import src.process.load_data as load
-except ModuleNotFoundError:
- import load_data as load
def extract(df: DataFrame, file: Path | StringIO) -> None:
(
@@ -25,11 +21,12 @@ if __name__ == "__main__":
import os
import sys
+ import load_data
if len(sys.argv) == 2:
- df = load.from_yml(Path(sys.argv[1]))
+ df = load_data.from_yml(Path(sys.argv[1]))
else:
- df = load.from_yml()
+ df = load_data.from_yml()
output = StringIO()
extract(df, output)
diff --git a/src/model/prisma.py b/src/model/prisma.py
deleted file mode 100644
index 576b14c..0000000
--- a/src/model/prisma.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from src import bib_sample, bib_sample_db_raw
-
-
-class PrismaNumbers:
- raw_db = len(bib_sample_db_raw.entries)
- raw_snowball = 2240
-
- # list of all keywords (semicolon-delimited string) for each entry in sample
- all_kw = [
- entry["keywords"]
- for entry in bib_sample.entries
- if "keywords" in entry.fields_dict.keys()
- ]
-
- # calculate deduplicated and superseded amounts
- dedup_db = len([1 for kw in all_kw if "sample::database" in kw])
- dedup_snowball = len([1 for kw in all_kw if "sample::snowballing" in kw])
- out_superseded = len([1 for kw in all_kw if "out::superseded" in kw])
-
- raw_full = raw_db + raw_snowball
- dedup_full = dedup_db + dedup_snowball + out_superseded
-
- # additional non-captured numbers
- NON_ZOTERO_CAPTURE_TITLE_REMOVAL = 1150
- NON_ZOTERO_CAPTURE_ABSTRACT_REMOVAL = 727
- NON_ZOTERO_CAPTURE_FULLTEXT_REMOVAL = 348
-
- out_duplicates = raw_full - dedup_full
- out_title = (
- len([1 for kw in all_kw if "out::title" in kw])
- + NON_ZOTERO_CAPTURE_TITLE_REMOVAL
- )
- out_abstract = (
- len([1 for kw in all_kw if "out::abstract" in kw])
- + NON_ZOTERO_CAPTURE_ABSTRACT_REMOVAL
- )
- out_fulltext = (
- len([1 for kw in all_kw if "out::full-text" in kw])
- + NON_ZOTERO_CAPTURE_FULLTEXT_REMOVAL
- )
- out_language = len([1 for kw in all_kw if "out::language" in kw])
-
- final_extracted = len([1 for kw in all_kw if "done::extracted" in kw])
-
-
-del bib_sample, bib_sample_db_raw
-
-if __name__ == "__main__":
- prisma = PrismaNumbers()
-
- # FIXME use data/supplementary undeduplciated counts to get database starting and snowballing counts
- outp = f"""
- flowchart TD;
- search_db["Records identified through database searching (n={prisma.raw_db})"] --> starting_sample;
- search_prev["Records identified through other sources (n={prisma.raw_snowball})"] --> starting_sample["Starting sample (n={prisma.raw_full})"];
-
- starting_sample -- "Duplicate removal ({prisma.out_duplicates+prisma.out_superseded} removed) "--> dedup["Records after duplicates removed (n={prisma.dedup_full})"];
-
- dedup -- "Title screening ({prisma.out_title} excluded)" --> title_screened["Records after titles screened (n={prisma.dedup_full - prisma.out_title})"];
-
- title_screened -- "Abstract screening ({prisma.out_abstract} excluded)"--> abstract_screened["Records after abstracts screened (n={prisma.dedup_full-prisma.out_title-prisma.out_abstract})"];
-
- abstract_screened -- " Language screening ({prisma.out_language} excluded) "--> language_screened["Records after language screened (n={prisma.dedup_full-prisma.out_title-prisma.out_abstract-prisma.out_language})"];
-
- language_screened -- " Full-text screening ({prisma.out_fulltext} excluded) "--> full-text_screened["Full-text articles assessed for eligibility (n={prisma.final_extracted})"];
- """
- print(outp)
diff --git a/src/model/validity.py b/src/model/validity.py
index 30a7343..401ed29 100644
--- a/src/model/validity.py
+++ b/src/model/validity.py
@@ -26,21 +26,6 @@ METHOD_RANKINGS = {
5.0: ["RCT", "randomi(?:s|z)ed.control.trial"],
}
-STRENGTH_BINS: dict[float, str] = {
- 0.0: r"\-",
- 5.0: r"\+",
- 10.0: r"\++",
-}
-
-
-def strength_for(val: str):
- """Returns the numeric value for a specific strength bin str representation.
-
- Does a reverse lookup of a strength bin for its representation as a string,
- such as looking for '++' and finding 10.0 as its required validity strength.
- """
- return list(STRENGTH_BINS.keys())[list(STRENGTH_BINS.values()).index(val)]
-
def calculate(
df: DataFrame,
@@ -103,7 +88,7 @@ def calculate(
def add_to_findings(
findings_df: DataFrame,
studies_by_intervention: DataFrame,
- strength_bins: dict[float, str] | None = STRENGTH_BINS,
+ strength_bins: dict[float, str] | None = None,
) -> DataFrame:
"""Returns summary of findings with validities added.
diff --git a/src/process/add_metadata.py b/src/prep_data.py
similarity index 94%
rename from src/process/add_metadata.py
rename to src/prep_data.py
index c328706..c8e1c9e 100644
--- a/src/process/add_metadata.py
+++ b/src/prep_data.py
@@ -31,19 +31,6 @@ def bib_library_from_dir(
return bibtexparser.parse_string(bib_string)
-def bib_library_from_file(
- file: Path, disable_warnings: bool = True
-) -> bibtexparser.Library:
- with open(file) as f:
- bib_string = f.read()
- if disable_warnings:
- cm = all_logging_disabled
- else:
- cm = nullcontext
- with cm():
- return bibtexparser.parse_string(bib_string)
-
-
def bib_metadata_df(sample: bibtexparser.Library) -> pd.DataFrame:
"""Returns dataframe with relevant metadata extracted from a bibtex library.
diff --git a/src/process/generate_dataframes.py b/src/process/generate_dataframes.py
deleted file mode 100644
index 72f6950..0000000
--- a/src/process/generate_dataframes.py
+++ /dev/null
@@ -1,90 +0,0 @@
-import re
-
-import pandas as pd
-from bibtexparser import Library
-
-import src.globals as g
-from src.extract import load_data as load
-from src.model import validity
-
-## Creates 3 important data structures:
-# df: The main dataframe containing all final sample studies
-# df_by_intervention: The same dataframe but split up by individual interventions per study
-# validities: The studies with their validities, containing only quasi-/experimental studies
-
-
-# the complete library of sampled (and working) literature
-def bib_sample() -> Library:
- return meta.bib_library_from_file(g.REFERENCE_DATA.joinpath("zotero-library.bib"))
-
-
-# raw database-search results
-def bib_sample_db_raw() -> Library:
- return meta.bib_library_from_dir(g.REFERENCE_DATA.joinpath("db"))
-
-
-def df_main() -> pd.DataFrame:
- df = meta.observations_with_metadata_df(
- raw_observations=load.from_yml(g.EXTRACTED_DATA),
- study_metadata=meta.bib_metadata_df(bib_sample()),
- country_groups=meta.country_groups_df(
- g.SUPPLEMENTARY_DATA.joinpath("wb-country-groupings.xlsx")
- ),
- )
- return df
-
-
-from src.process import add_metadata as meta
-
-
-def df_by_intervention() -> pd.DataFrame:
- df_by_intervention = (
- df_main()
- .fillna("")
- .groupby(
- [
- "author",
- "year",
- "title",
- "design",
- "method",
- "representativeness",
- "citation",
- ]
- )
- .agg(
- {
- "intervention": lambda _col: "; ".join(_col),
- }
- )
- .reset_index()
- .drop_duplicates()
- .assign(
- intervention=lambda _df: _df["intervention"].apply(
- lambda _cell: set(
- [x.strip() for x in re.sub(r"\(.*\)", "", _cell).split(";")]
- )
- ),
- )
- .explode("intervention")
- )
- return df_by_intervention
-
-
-def df_validities() -> pd.DataFrame:
- validities = validity.calculate(df_by_intervention())
- validities["identifier"] = (
- validities["author"].str.replace(r",.*$", "", regex=True)
- + " ("
- + validities["year"].astype(str)
- + ")"
- )
- validities = validities.loc[
- (validities["design"] == "quasi-experimental")
- | (validities["design"] == "experimental")
- ]
- # validities["external_validity"] = validities["external_validity"].astype('category')
- validities["internal_validity"] = validities["internal_validity"].astype("category")
- validities["External Validity"] = validities["external_validity"]
- validities["Internal Validity"] = validities["internal_validity"]
- return validities
diff --git a/src/extract/yml.py b/src/yml.py
similarity index 100%
rename from src/extract/yml.py
rename to src/yml.py