# estout
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
## Install
``` sh
pip install estout
```
## How to use
Set up an example dataset and run a few regressions to showcase the
functions in this module.
``` python
import numpy as np
import pandas as pd
import statsmodels.api as sm
from linearmodels import PanelOLS
import estout
```
``` python
np.random.seed(123)
df = pd.DataFrame(np.random.rand(9,3),
columns=['y','x','z'],
index = pd.MultiIndex.from_product([[1,2,3],[1,2,3]], names=['firmid','time'])
).assign(cons = 1)
sm1 = sm.OLS(df['y'], df[['cons','x']]).fit()
sm2 = sm.OLS(df['y'], df[['cons','x','z']]).fit().get_robustcov_results(cov_type='HAC', maxlags=2)
lmres = PanelOLS(df['y'], df[['cons','x','z']], entity_effects=True
).fit(cov_type='clustered', cluster_entity=True)
```
### Extracting statistics after fitting a model
Below, we collect just the default set of statistics from the `sm1`
object. These are given by the functions implemented in the
`statsmodels_results` module (since `sm1` was generated by the
`statsmodels` package).
``` python
estout.collect_stats(sm1)
```
{'package': 'statsmodels',
'ynames': ['y'],
'xnames': ['cons', 'x'],
'params': cons 0.507852
x 0.345003
dtype: float64,
'tstats': cons 3.905440
x 1.292246
dtype: float64,
'pvalues': cons 0.005858
x 0.237293
dtype: float64,
'covmat': cons x
cons 0.016910 -0.030531
x -0.030531 0.071278,
'se': cons 0.130037
x 0.266979
dtype: float64,
'nobs': 9,
'r2': 0.19260886185799475}
Collect statistics by specifying the name of their attribute in the
results object (using the `add_stats` parameter):
``` python
estout.collect_stats(sm1, get_default_stats=False, add_stats={'xnames': 'model.exog_names',
'Adj. R2': 'rsquared_adj'})
```
{'package': 'statsmodels',
'xnames': ['cons', 'x'],
'Adj. R2': 0.07726727069485118}
Add scalar statistics not available as attributes of the results object
(using the `add_literals` paramter):
``` python
estout.collect_stats(sm1, get_default_stats=False, add_literals={'Fixed Effects': 'No',
'Nr observations': 123})
```
{'package': 'statsmodels', 'Fixed Effects': 'No', 'Nr observations': 123}
### Combining model results into a DataFrame
Start by collecting stats from each model and combining them in a list.
``` python
allmodels = []
for res in [sm1, sm2, lmres]:
allmodels.append(estout.collect_stats(res))
```
Then export them to a DataFrame.
``` python
estout.to_df(allmodels)
```
<div>
| | | 0 | 1 | 2 |
|------|--------|------------|------------|------------|
| cons | params | 0.51\*\*\* | 0.70\*\*\* | 0.73\*\*\* |
| | tstats | (3.91) | (21.48) | (167.36) |
| x | params | 0.35 | 0.57\*\* | 0.64\* |
| | tstats | (1.29) | (2.85) | (2.26) |
| z | params | | -0.64\*\* | -0.77\*\* |
| | tstats | | (-3.55) | (-2.91) |
| r2 | | 0.193 | 0.487 | 0.352 |
| nobs | | 9 | 9 | 9 |
</div>
We can choose to report only a subset of the regressors.
``` python
estout.to_df(allmodels, which_xvars=['x','z'])
```
<div>
| | | 0 | 1 | 2 |
|------|--------|--------|-----------|-----------|
| x | params | 0.35 | 0.57\*\* | 0.64\* |
| | tstats | (1.29) | (2.85) | (2.26) |
| z | params | | -0.64\*\* | -0.77\*\* |
| | tstats | | (-3.55) | (-2.91) |
| r2 | | 0.193 | 0.487 | 0.352 |
| nobs | | 9 | 9 | 9 |
</div>
Report other statistics under the parameter values.
``` python
estout.to_df(allmodels, stats_body=['params','se','pvalues'], which_xvars=['x'])
```
<div>
| | | 0 | 1 | 2 |
|------|---------|---------|----------|---------|
| x | params | 0.35 | 0.57\*\* | 0.64\* |
| | se | (0.27) | (0.20) | (0.28) |
| | pvalues | (0.237) | (0.029) | (0.086) |
| r2 | | 0.193 | 0.487 | 0.352 |
| nobs | | 9 | 9 | 9 |
</div>
Change the statistics reported at the bottom of the table
``` python
estout.to_df(allmodels, stats_bottom=['r2'], which_xvars=['x'])
```
<div>
| | | 0 | 1 | 2 |
|-----|--------|--------|----------|--------|
| x | params | 0.35 | 0.57\*\* | 0.64\* |
| | tstats | (1.29) | (2.85) | (2.26) |
| r2 | | 0.193 | 0.487 | 0.352 |
</div>
Change the formatting for any of the statistics reported.
``` python
estout.to_df(allmodels, add_formats={'params':'{:.3}','r2':'{:.2f}'}, which_xvars=['x'])
```
<div>
| | | 0 | 1 | 2 |
|------|--------|--------|-----------|---------|
| x | params | 0.345 | 0.571\*\* | 0.643\* |
| | tstats | (1.29) | (2.85) | (2.26) |
| r2 | | 0.19 | 0.49 | 0.35 |
| nobs | | 9 | 9 | 9 |
</div>
Replace names of regressor (or bottom stats) with labels.
``` python
estout.to_df(allmodels, labels={'cons':'Intercept', 'nobs':'Observations'}, which_xvars=['cons'])
```
<div>
| | | 0 | 1 | 2 |
|--------------|--------|------------|------------|------------|
| Intercept | params | 0.51\*\*\* | 0.70\*\*\* | 0.73\*\*\* |
| | tstats | (3.91) | (21.48) | (167.36) |
| r2 | | 0.193 | 0.487 | 0.352 |
| Observations | | 9 | 9 | 9 |
</div>
Since the output of
[`to_df`](https://ionmihai.github.io/estout/core.html#to_df) is a
pd.DataFrame, it is easy to add more information at the bottom of the
table without having to re-run
[`collect_stats`](https://ionmihai.github.io/estout/core.html#collect_stats).
``` python
df = estout.to_df(allmodels)
df.loc['Fixed effects',:] = ['No','No','Entity']
df
```
<div>
| | | 0 | 1 | 2 |
|---------------|--------|------------|------------|------------|
| cons | params | 0.51\*\*\* | 0.70\*\*\* | 0.73\*\*\* |
| | tstats | (3.91) | (21.48) | (167.36) |
| x | params | 0.35 | 0.57\*\* | 0.64\* |
| | tstats | (1.29) | (2.85) | (2.26) |
| z | params | | -0.64\*\* | -0.77\*\* |
| | tstats | | (-3.55) | (-2.91) |
| r2 | | 0.193 | 0.487 | 0.352 |
| nobs | | 9 | 9 | 9 |
| Fixed effects | | No | No | Entity |
</div>
### Exporting to LaTex
With the `estout.to_tex` function, we can combine one or more DataFrames
into a single LaTex table (each DataFrame will be a separate panel in
the LaTex table).
In the example below, we just return the tex code as a string, but the
function also takes an `outfile` parameter that allows us to store the
output in a `.tex` file. Either the file path or the string can be used
in the `estout.to_pdf` function to create a PDF out of this tex code.
``` python
tbl = estout.to_tex([df,df], panel_title=['Panel A: Some title', 'Panel B: Some title'],
col_groups=[{'Group1':[1,2]}]*2,
col_names=[['Model 1', 'Model 2', 'Model 3']]*2,
hlines=[[0,1,4,13], [1,4,13]] )
print(tbl)
```
\newpage
\clearpage
\begin{table}[!h] \footnotesize
\addtocounter{table}{0}
\caption{\textbf{Table title}}
\par {Table description}
\vspace{2mm}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}l*{3}{c}}
\hline \noalign{\smallskip}
\multicolumn{4}{@{} l}{Panel A: Some title} \\
\hline \noalign{\smallskip}
& \multicolumn{2}{c}{Group1} \\
\cline{2-3}
& Model 1 & Model 2 & Model 3 \\
\hline \noalign{\smallskip}
cons & 0.51*** & 0.70*** & 0.73*** \\
& (3.91) & (21.48) & (167.36) \\
x & 0.35 & 0.57** & 0.64* \\
& (1.29) & (2.85) & (2.26) \\
z & & -0.64** & -0.77** \\
& & (-3.55) & (-2.91) \\
r2 & 0.193 & 0.487 & 0.352 \\
nobs & 9 & 9 & 9 \\
Fixed effects & No & No & Entity \\
\hline \noalign{\smallskip}
\end{tabular*}
\smallskip
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}l*{3}{c}}
\multicolumn{4}{@{} l}{Panel B: Some title} \\
\hline \noalign{\smallskip}
& \multicolumn{2}{c}{Group1} \\
\cline{2-3}
& Model 1 & Model 2 & Model 3 \\
\hline \noalign{\smallskip}
cons & 0.51*** & 0.70*** & 0.73*** \\
& (3.91) & (21.48) & (167.36) \\
x & 0.35 & 0.57** & 0.64* \\
& (1.29) & (2.85) & (2.26) \\
z & & -0.64** & -0.77** \\
& & (-3.55) & (-2.91) \\
r2 & 0.193 & 0.487 & 0.352 \\
nobs & 9 & 9 & 9 \\
Fixed effects & No & No & Entity \\
\hline \noalign{\smallskip}
\end{tabular*}
\label{}
\end{table}
### Exporting to PDF
With the `estout.to_pdf` function, we can combine the LaTex code for
multiple tables (like the ones produced by `estout.to_tex`) into a
single .tex document.
By default, the resulting .tex file is run through TexLive’s `pdflatex`
utility to produce a PDF document with the tables (set `make_pdf`=False
if you do not want the PDF to be automatically produced).
You can also set `open_pdf` to True if you want the resulting pdf to be
opened after it is produced.
For the code below to work, you need to have `TexLive` installed (and
change the path below to a valid path on your system).
``` python
estout.to_pdf(outfile='../_outputs/paper.tex',
table_tex_code=[tbl, tbl],
make_pdf=True,
open_pdf=False)
```
PDF creation successful!
This produced a PDF with two tables (given by the `tbl` tex string),
each with two panels (given by the `df` DataFrame above).
Note that the `table_tex_code` parameter also accepts paths to tex
files. Those tex files must have the complete table environment for that
table (i.e. from
).
Raw data
{
"_id": null,
"home_page": "https://github.com/ionmihai/estout",
"name": "estout",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "nbdev jupyter notebook python",
"author": "Mihai Ion",
"author_email": "mihaiion@email.arizona.edu",
"download_url": "https://files.pythonhosted.org/packages/bc/c0/8d329d33390bc0c028c0cddf39a246a0a506c73c400569b980c4ac1088a9/estout-0.0.2.tar.gz",
"platform": null,
"description": "# estout\n\n<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->\n\n## Install\n\n``` sh\npip install estout\n```\n\n## How to use\n\nSet up an example dataset and run a few regressions to showcase the\nfunctions in this module.\n\n``` python\nimport numpy as np\nimport pandas as pd\nimport statsmodels.api as sm\nfrom linearmodels import PanelOLS\nimport estout\n```\n\n``` python\nnp.random.seed(123)\ndf = pd.DataFrame(np.random.rand(9,3), \n columns=['y','x','z'],\n index = pd.MultiIndex.from_product([[1,2,3],[1,2,3]], names=['firmid','time'])\n ).assign(cons = 1)\nsm1 = sm.OLS(df['y'], df[['cons','x']]).fit()\nsm2 = sm.OLS(df['y'], df[['cons','x','z']]).fit().get_robustcov_results(cov_type='HAC', maxlags=2)\nlmres = PanelOLS(df['y'], df[['cons','x','z']], entity_effects=True\n ).fit(cov_type='clustered', cluster_entity=True)\n```\n\n### Extracting statistics after fitting a model\n\nBelow, we collect just the default set of statistics from the `sm1`\nobject. These are given by the functions implemented in the\n`statsmodels_results` module (since `sm1` was generated by the\n`statsmodels` package).\n\n``` python\nestout.collect_stats(sm1)\n```\n\n {'package': 'statsmodels',\n 'ynames': ['y'],\n 'xnames': ['cons', 'x'],\n 'params': cons 0.507852\n x 0.345003\n dtype: float64,\n 'tstats': cons 3.905440\n x 1.292246\n dtype: float64,\n 'pvalues': cons 0.005858\n x 0.237293\n dtype: float64,\n 'covmat': cons x\n cons 0.016910 -0.030531\n x -0.030531 0.071278,\n 'se': cons 0.130037\n x 0.266979\n dtype: float64,\n 'nobs': 9,\n 'r2': 0.19260886185799475}\n\nCollect statistics by specifying the name of their attribute in the\nresults object (using the `add_stats` parameter):\n\n``` python\nestout.collect_stats(sm1, get_default_stats=False, add_stats={'xnames': 'model.exog_names',\n 'Adj. R2': 'rsquared_adj'})\n```\n\n {'package': 'statsmodels',\n 'xnames': ['cons', 'x'],\n 'Adj. R2': 0.07726727069485118}\n\nAdd scalar statistics not available as attributes of the results object\n(using the `add_literals` paramter):\n\n``` python\nestout.collect_stats(sm1, get_default_stats=False, add_literals={'Fixed Effects': 'No', \n 'Nr observations': 123})\n```\n\n {'package': 'statsmodels', 'Fixed Effects': 'No', 'Nr observations': 123}\n\n### Combining model results into a DataFrame\n\nStart by collecting stats from each model and combining them in a list.\n\n``` python\nallmodels = []\nfor res in [sm1, sm2, lmres]:\n allmodels.append(estout.collect_stats(res))\n```\n\nThen export them to a DataFrame.\n\n``` python\nestout.to_df(allmodels)\n```\n\n<div>\n\n| | | 0 | 1 | 2 |\n|------|--------|------------|------------|------------|\n| cons | params | 0.51\\*\\*\\* | 0.70\\*\\*\\* | 0.73\\*\\*\\* |\n| | tstats | (3.91) | (21.48) | (167.36) |\n| x | params | 0.35 | 0.57\\*\\* | 0.64\\* |\n| | tstats | (1.29) | (2.85) | (2.26) |\n| z | params | | -0.64\\*\\* | -0.77\\*\\* |\n| | tstats | | (-3.55) | (-2.91) |\n| r2 | | 0.193 | 0.487 | 0.352 |\n| nobs | | 9 | 9 | 9 |\n\n</div>\n\nWe can choose to report only a subset of the regressors.\n\n``` python\nestout.to_df(allmodels, which_xvars=['x','z'])\n```\n\n<div>\n\n| | | 0 | 1 | 2 |\n|------|--------|--------|-----------|-----------|\n| x | params | 0.35 | 0.57\\*\\* | 0.64\\* |\n| | tstats | (1.29) | (2.85) | (2.26) |\n| z | params | | -0.64\\*\\* | -0.77\\*\\* |\n| | tstats | | (-3.55) | (-2.91) |\n| r2 | | 0.193 | 0.487 | 0.352 |\n| nobs | | 9 | 9 | 9 |\n\n</div>\n\nReport other statistics under the parameter values.\n\n``` python\nestout.to_df(allmodels, stats_body=['params','se','pvalues'], which_xvars=['x'])\n```\n\n<div>\n\n| | | 0 | 1 | 2 |\n|------|---------|---------|----------|---------|\n| x | params | 0.35 | 0.57\\*\\* | 0.64\\* |\n| | se | (0.27) | (0.20) | (0.28) |\n| | pvalues | (0.237) | (0.029) | (0.086) |\n| r2 | | 0.193 | 0.487 | 0.352 |\n| nobs | | 9 | 9 | 9 |\n\n</div>\n\nChange the statistics reported at the bottom of the table\n\n``` python\nestout.to_df(allmodels, stats_bottom=['r2'], which_xvars=['x'])\n```\n\n<div>\n\n| | | 0 | 1 | 2 |\n|-----|--------|--------|----------|--------|\n| x | params | 0.35 | 0.57\\*\\* | 0.64\\* |\n| | tstats | (1.29) | (2.85) | (2.26) |\n| r2 | | 0.193 | 0.487 | 0.352 |\n\n</div>\n\nChange the formatting for any of the statistics reported.\n\n``` python\nestout.to_df(allmodels, add_formats={'params':'{:.3}','r2':'{:.2f}'}, which_xvars=['x'])\n```\n\n<div>\n\n| | | 0 | 1 | 2 |\n|------|--------|--------|-----------|---------|\n| x | params | 0.345 | 0.571\\*\\* | 0.643\\* |\n| | tstats | (1.29) | (2.85) | (2.26) |\n| r2 | | 0.19 | 0.49 | 0.35 |\n| nobs | | 9 | 9 | 9 |\n\n</div>\n\nReplace names of regressor (or bottom stats) with labels.\n\n``` python\nestout.to_df(allmodels, labels={'cons':'Intercept', 'nobs':'Observations'}, which_xvars=['cons'])\n```\n\n<div>\n\n| | | 0 | 1 | 2 |\n|--------------|--------|------------|------------|------------|\n| Intercept | params | 0.51\\*\\*\\* | 0.70\\*\\*\\* | 0.73\\*\\*\\* |\n| | tstats | (3.91) | (21.48) | (167.36) |\n| r2 | | 0.193 | 0.487 | 0.352 |\n| Observations | | 9 | 9 | 9 |\n\n</div>\n\nSince the output of\n[`to_df`](https://ionmihai.github.io/estout/core.html#to_df) is a\npd.DataFrame, it is easy to add more information at the bottom of the\ntable without having to re-run\n[`collect_stats`](https://ionmihai.github.io/estout/core.html#collect_stats).\n\n``` python\ndf = estout.to_df(allmodels)\ndf.loc['Fixed effects',:] = ['No','No','Entity']\ndf\n```\n\n<div>\n\n| | | 0 | 1 | 2 |\n|---------------|--------|------------|------------|------------|\n| cons | params | 0.51\\*\\*\\* | 0.70\\*\\*\\* | 0.73\\*\\*\\* |\n| | tstats | (3.91) | (21.48) | (167.36) |\n| x | params | 0.35 | 0.57\\*\\* | 0.64\\* |\n| | tstats | (1.29) | (2.85) | (2.26) |\n| z | params | | -0.64\\*\\* | -0.77\\*\\* |\n| | tstats | | (-3.55) | (-2.91) |\n| r2 | | 0.193 | 0.487 | 0.352 |\n| nobs | | 9 | 9 | 9 |\n| Fixed effects | | No | No | Entity |\n\n</div>\n\n### Exporting to LaTex\n\nWith the `estout.to_tex` function, we can combine one or more DataFrames\ninto a single LaTex table (each DataFrame will be a separate panel in\nthe LaTex table).\n\nIn the example below, we just return the tex code as a string, but the\nfunction also takes an `outfile` parameter that allows us to store the\noutput in a `.tex` file. Either the file path or the string can be used\nin the `estout.to_pdf` function to create a PDF out of this tex code.\n\n``` python\ntbl = estout.to_tex([df,df], panel_title=['Panel A: Some title', 'Panel B: Some title'], \n col_groups=[{'Group1':[1,2]}]*2,\n col_names=[['Model 1', 'Model 2', 'Model 3']]*2,\n hlines=[[0,1,4,13], [1,4,13]] )\nprint(tbl)\n```\n\n \\newpage \n \\clearpage \n \\begin{table}[!h] \\footnotesize \n \\addtocounter{table}{0} \n \\caption{\\textbf{Table title}} \n \\par {Table description} \n\n \\vspace{2mm} \n\n \\begin{tabular*}{\\textwidth}{@{\\extracolsep{\\fill}}l*{3}{c}} \n \\hline \\noalign{\\smallskip} \n \\multicolumn{4}{@{} l}{Panel A: Some title} \\\\ \n \\hline \\noalign{\\smallskip} \n & \\multicolumn{2}{c}{Group1} \\\\ \n \\cline{2-3} \n & Model 1 & Model 2 & Model 3 \\\\ \n \\hline \\noalign{\\smallskip} \n cons & 0.51*** & 0.70*** & 0.73*** \\\\ \n & (3.91) & (21.48) & (167.36) \\\\ \n x & 0.35 & 0.57** & 0.64* \\\\ \n & (1.29) & (2.85) & (2.26) \\\\ \n z & & -0.64** & -0.77** \\\\ \n & & (-3.55) & (-2.91) \\\\ \n r2 & 0.193 & 0.487 & 0.352 \\\\ \n nobs & 9 & 9 & 9 \\\\ \n Fixed effects & No & No & Entity \\\\ \n \\hline \\noalign{\\smallskip} \n \\end{tabular*}\n \\smallskip \n \\begin{tabular*}{\\textwidth}{@{\\extracolsep{\\fill}}l*{3}{c}} \n \\multicolumn{4}{@{} l}{Panel B: Some title} \\\\ \n \\hline \\noalign{\\smallskip} \n & \\multicolumn{2}{c}{Group1} \\\\ \n \\cline{2-3} \n & Model 1 & Model 2 & Model 3 \\\\ \n \\hline \\noalign{\\smallskip} \n cons & 0.51*** & 0.70*** & 0.73*** \\\\ \n & (3.91) & (21.48) & (167.36) \\\\ \n x & 0.35 & 0.57** & 0.64* \\\\ \n & (1.29) & (2.85) & (2.26) \\\\ \n z & & -0.64** & -0.77** \\\\ \n & & (-3.55) & (-2.91) \\\\ \n r2 & 0.193 & 0.487 & 0.352 \\\\ \n nobs & 9 & 9 & 9 \\\\ \n Fixed effects & No & No & Entity \\\\ \n \\hline \\noalign{\\smallskip} \n \\end{tabular*} \n \\label{} \n \\end{table} \n\n### Exporting to PDF\n\nWith the `estout.to_pdf` function, we can combine the LaTex code for\nmultiple tables (like the ones produced by `estout.to_tex`) into a\nsingle .tex document.\n\nBy default, the resulting .tex file is run through TexLive\u2019s `pdflatex`\nutility to produce a PDF document with the tables (set `make_pdf`=False\nif you do not want the PDF to be automatically produced).\n\nYou can also set `open_pdf` to True if you want the resulting pdf to be\nopened after it is produced.\n\nFor the code below to work, you need to have `TexLive` installed (and\nchange the path below to a valid path on your system).\n\n``` python\nestout.to_pdf(outfile='../_outputs/paper.tex', \n table_tex_code=[tbl, tbl],\n make_pdf=True,\n open_pdf=False)\n```\n\n PDF creation successful!\n\nThis produced a PDF with two tables (given by the `tbl` tex string),\neach with two panels (given by the `df` DataFrame above).\n\nNote that the `table_tex_code` parameter also accepts paths to tex\nfiles. Those tex files must have the complete table environment for that\ntable (i.e.\u00a0from\n).\n",
"bugtrack_url": null,
"license": "Apache Software License 2.0",
"summary": "Collect regression results and export them to LaTex and pdf",
"version": "0.0.2",
"project_urls": {
"Homepage": "https://github.com/ionmihai/estout"
},
"split_keywords": [
"nbdev",
"jupyter",
"notebook",
"python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4a8891149a0c5f8f65a6cd042cb4cac38cc79d9c16cf6f62c8002c6aee552c5f",
"md5": "722de32b6c69a752a99662d284c3ac3b",
"sha256": "fd6955890d9f255906a87433f18231f3bdce949c3175e14fd84663439ffb83d4"
},
"downloads": -1,
"filename": "estout-0.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "722de32b6c69a752a99662d284c3ac3b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 16866,
"upload_time": "2023-06-23T16:38:45",
"upload_time_iso_8601": "2023-06-23T16:38:45.960939Z",
"url": "https://files.pythonhosted.org/packages/4a/88/91149a0c5f8f65a6cd042cb4cac38cc79d9c16cf6f62c8002c6aee552c5f/estout-0.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bcc08d329d33390bc0c028c0cddf39a246a0a506c73c400569b980c4ac1088a9",
"md5": "cd6dff4a8f20201c361bba2a6261556e",
"sha256": "faafb4b3ee0dca4d1283b12a7eea3f6e09ef1596ae553f7f43b9a893b66f853c"
},
"downloads": -1,
"filename": "estout-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "cd6dff4a8f20201c361bba2a6261556e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 32742,
"upload_time": "2023-06-23T16:38:48",
"upload_time_iso_8601": "2023-06-23T16:38:48.169560Z",
"url": "https://files.pythonhosted.org/packages/bc/c0/8d329d33390bc0c028c0cddf39a246a0a506c73c400569b980c4ac1088a9/estout-0.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-23 16:38:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ionmihai",
"github_project": "estout",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "estout"
}