pseudopeople 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. pseudopeople-0.1.0/CHANGELOG.rst +5 -0
  2. pseudopeople-0.1.0/CODE_OF_CONDUCT.rst +81 -0
  3. pseudopeople-0.1.0/CONTRIBUTING.rst +19 -0
  4. pseudopeople-0.1.0/LICENSE +28 -0
  5. pseudopeople-0.1.0/MANIFEST.in +12 -0
  6. pseudopeople-0.1.0/PKG-INFO +57 -0
  7. pseudopeople-0.1.0/README.rst +26 -0
  8. pseudopeople-0.1.0/docs/Makefile +22 -0
  9. pseudopeople-0.1.0/docs/nitpick-exceptions +8 -0
  10. pseudopeople-0.1.0/docs/source/_static/style.css +3 -0
  11. pseudopeople-0.1.0/docs/source/_templates/layout.html +4 -0
  12. pseudopeople-0.1.0/docs/source/api_reference/index.rst +10 -0
  13. pseudopeople-0.1.0/docs/source/api_reference/interface.rst +1 -0
  14. pseudopeople-0.1.0/docs/source/concepts/configuration.rst +16 -0
  15. pseudopeople-0.1.0/docs/source/concepts/forms.rst +33 -0
  16. pseudopeople-0.1.0/docs/source/concepts/index.rst +13 -0
  17. pseudopeople-0.1.0/docs/source/concepts/noise_functions.rst +42 -0
  18. pseudopeople-0.1.0/docs/source/conf.py +254 -0
  19. pseudopeople-0.1.0/docs/source/glossary.rst +22 -0
  20. pseudopeople-0.1.0/docs/source/index.rst +16 -0
  21. pseudopeople-0.1.0/docs/source/installation.rst +64 -0
  22. pseudopeople-0.1.0/docs/source/tutorials/getting_started.rst +48 -0
  23. pseudopeople-0.1.0/docs/source/tutorials/index.rst +17 -0
  24. pseudopeople-0.1.0/pyproject.toml +5 -0
  25. pseudopeople-0.1.0/setup.cfg +4 -0
  26. pseudopeople-0.1.0/setup.py +102 -0
  27. pseudopeople-0.1.0/src/pseudopeople/__about__.py +22 -0
  28. pseudopeople-0.1.0/src/pseudopeople/__init__.py +11 -0
  29. pseudopeople-0.1.0/src/pseudopeople/default_configuration.yaml +54 -0
  30. pseudopeople-0.1.0/src/pseudopeople/entities.py +97 -0
  31. pseudopeople-0.1.0/src/pseudopeople/entity_types.py +59 -0
  32. pseudopeople-0.1.0/src/pseudopeople/interface.py +43 -0
  33. pseudopeople-0.1.0/src/pseudopeople/noise.py +74 -0
  34. pseudopeople-0.1.0/src/pseudopeople/noise_functions.py +268 -0
  35. pseudopeople-0.1.0/src/pseudopeople/utilities.py +34 -0
  36. pseudopeople-0.1.0/src/pseudopeople.egg-info/PKG-INFO +57 -0
  37. pseudopeople-0.1.0/src/pseudopeople.egg-info/SOURCES.txt +48 -0
  38. pseudopeople-0.1.0/src/pseudopeople.egg-info/dependency_links.txt +1 -0
  39. pseudopeople-0.1.0/src/pseudopeople.egg-info/not-zip-safe +1 -0
  40. pseudopeople-0.1.0/src/pseudopeople.egg-info/requires.txt +30 -0
  41. pseudopeople-0.1.0/src/pseudopeople.egg-info/top_level.txt +1 -0
  42. pseudopeople-0.1.0/tests/__init__.py +0 -0
  43. pseudopeople-0.1.0/tests/conftest.py +19 -0
  44. pseudopeople-0.1.0/tests/integration/__init__.py +0 -0
  45. pseudopeople-0.1.0/tests/integration/test_interface.py +38 -0
  46. pseudopeople-0.1.0/tests/unit/__init__.py +0 -0
  47. pseudopeople-0.1.0/tests/unit/test_column_noise.py +115 -0
  48. pseudopeople-0.1.0/tests/unit/test_configuration.py +49 -0
  49. pseudopeople-0.1.0/tests/unit/test_noise_form.py +162 -0
  50. pseudopeople-0.1.0/tests/unit/test_row_noise.py +13 -0
@@ -0,0 +1,5 @@
1
+ **0.1.0 - 03/23/23**
2
+
3
+ - Initial release
4
+ - Implemented generate_decennial_census with missing data noise function
5
+ - Implemented custom user configuration override
@@ -0,0 +1,81 @@
1
+ Code of Conduct
2
+ ===============
3
+
4
+ Our Pledge
5
+ ----------
6
+
7
+ In the interest of fostering an open and welcoming environment, we as
8
+ contributors and maintainers pledge to making participation in our project and
9
+ our community a harassment-free experience for everyone, regardless of age, body
10
+ size, disability, ethnicity, gender identity and expression, level of experience,
11
+ nationality, personal appearance, race, religion, or sexual identity and
12
+ orientation.
13
+
14
+ Our Standards
15
+ -------------
16
+
17
+ Examples of behavior that contributes to creating a positive environment
18
+ include:
19
+
20
+ - Using welcoming and inclusive language
21
+ - Being respectful of differing viewpoints and experiences
22
+ - Gracefully accepting constructive criticism
23
+ - Focusing on what is best for the community
24
+ - Showing empathy towards other community members
25
+
26
+ Examples of unacceptable behavior by participants include:
27
+
28
+ - The use of sexualized language or imagery and unwelcome sexual attention or
29
+ advances
30
+ - Trolling, insulting/derogatory comments, and personal or political attacks
31
+ - Public or private harassment
32
+ - Publishing others' private information, such as a physical or electronic
33
+ address, without explicit permission
34
+ - Other conduct which could reasonably be considered inappropriate in a
35
+ professional setting
36
+
37
+ Our Responsibilities
38
+ --------------------
39
+
40
+ Project maintainers are responsible for clarifying the standards of acceptable
41
+ behavior and are expected to take appropriate and fair corrective action in
42
+ response to any instances of unacceptable behavior.
43
+
44
+ Project maintainers have the right and responsibility to remove, edit, or
45
+ reject comments, commits, code, wiki edits, issues, and other contributions
46
+ that are not aligned to this Code of Conduct, or to ban temporarily or
47
+ permanently any contributor for other behaviors that they deem inappropriate,
48
+ threatening, offensive, or harmful.
49
+
50
+ Scope
51
+ -----
52
+
53
+ This Code of Conduct applies both within project spaces and in public spaces
54
+ when an individual is representing the project or its community. Examples of
55
+ representing a project or community include using an official project e-mail
56
+ address, posting via an official social media account, or acting as an appointed
57
+ representative at an online or offline event. Representation of a project may be
58
+ further defined and clarified by project maintainers.
59
+
60
+ Enforcement
61
+ -----------
62
+
63
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
64
+ reported by contacting the current maintainer (found in this repositories AUTHORS.md). All
65
+ complaints will be reviewed and investigated and will result in a response that
66
+ is deemed necessary and appropriate to the circumstances. The project team is
67
+ obligated to maintain confidentiality with regard to the reporter of an incident.
68
+ Further details of specific enforcement policies may be posted separately.
69
+
70
+ Project maintainers who do not follow or enforce the Code of Conduct in good
71
+ faith may face temporary or permanent repercussions as determined by other
72
+ members of the project's leadership.
73
+
74
+ Attribution
75
+ -----------
76
+
77
+ This Code of Conduct is adapted from the `Contributor Covenant`_, version 1.4,
78
+ available at `version`_.
79
+
80
+ .. _Contributor Covenant: http://contributor-covenant.org
81
+ .. _version: http://contributor-covenant.org/version/1/4/
@@ -0,0 +1,19 @@
1
+ Contributing
2
+ ============
3
+
4
+ When contributing to this repository, please first discuss the change you wish to make via issue,
5
+ email, or any other method with the owners of this repository before making a change.
6
+
7
+ Please note we have a code of conduct, please follow it in all your interactions with the project.
8
+
9
+ Submitting Changes
10
+ ------------------
11
+
12
+ - Always make a new branch for your work.
13
+ - Patches should be small to facilitate easier review. Sometimes this will result in many small
14
+ PRs to land a single large feature.
15
+ - Larger changes should be discussed in the project's GitHub issues page.
16
+ - New features and significant bug fixes should be documented in the changelog.
17
+ - You must have legal permission to distribute any code you contribute to ``pseudopeople``, and it
18
+ must be available under the BSD-3 license.
19
+
@@ -0,0 +1,28 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2023, Institute for Health Metrics and Evaluation
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ 3. Neither the name of the copyright holder nor the names of its
16
+ contributors may be used to endorse or promote products derived from
17
+ this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,12 @@
1
+ include AUTHORS.rst
2
+ include CHANGELOG.rst
3
+ include CODE_OF_CONDUCT.rst
4
+ include CONTRIBUTING.rst
5
+ include LICENSE.txt
6
+ include README.rst
7
+
8
+ recursive-include docs *
9
+ prune docs/_build
10
+
11
+ recursive-include src/pseudopeople *.py *.yaml
12
+ recursive-include tests *.py *txt *.yaml
@@ -0,0 +1,57 @@
1
+ Metadata-Version: 2.1
2
+ Name: pseudopeople
3
+ Version: 0.1.0
4
+ Summary: pseudopeople is package which adds noise to simulated census-scale data using standard scientific Python tools.
5
+ Home-page: https://github.com/ihmeuw/pseudopeople
6
+ Author: The pseudopeople developers
7
+ Author-email: vivarium.dev@gmail.com
8
+ License: BSD-3-Clause
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Intended Audience :: Education
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
13
+ Classifier: Natural Language :: English
14
+ Classifier: Operating System :: MacOS :: MacOS X
15
+ Classifier: Operating System :: POSIX
16
+ Classifier: Operating System :: POSIX :: BSD
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Operating System :: Microsoft :: Windows
19
+ Classifier: Programming Language :: Python
20
+ Classifier: Programming Language :: Python :: Implementation :: CPython
21
+ Classifier: Topic :: Education
22
+ Classifier: Topic :: Scientific/Engineering
23
+ Classifier: Topic :: Scientific/Engineering :: Artificial Life
24
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
25
+ Classifier: Topic :: Software Development :: Libraries
26
+ Provides-Extra: docs
27
+ Provides-Extra: test
28
+ Provides-Extra: interactive
29
+ Provides-Extra: dev
30
+ License-File: LICENSE
31
+
32
+ ============
33
+ Pseudopeople
34
+ ============
35
+
36
+ Pseudopeople is a package intended to add configurable noise to a simulated
37
+ census-scale data-set written using standard scientific Python tools.
38
+
39
+ **Pseudopeople requires Python 3.7-3.10 to run**
40
+
41
+ You can install ``pseudopeople`` from PyPI with pip:
42
+
43
+ ``> pip install pseudopeople``
44
+
45
+ or build it from source with
46
+
47
+ ``> git clone https://github.com/ihmeuw/pseudopeople.git``
48
+
49
+ ``> cd pseudopeople``
50
+
51
+ ``> python setup.py install``
52
+
53
+ This will make the ``pseudopeople`` library available to python and install a
54
+ command-line executable called ``...`` that you can use to verify your
55
+ installation with
56
+
57
+ ``> ... test``
@@ -0,0 +1,26 @@
1
+ ============
2
+ Pseudopeople
3
+ ============
4
+
5
+ Pseudopeople is a package intended to add configurable noise to a simulated
6
+ census-scale data-set written using standard scientific Python tools.
7
+
8
+ **Pseudopeople requires Python 3.7-3.10 to run**
9
+
10
+ You can install ``pseudopeople`` from PyPI with pip:
11
+
12
+ ``> pip install pseudopeople``
13
+
14
+ or build it from source with
15
+
16
+ ``> git clone https://github.com/ihmeuw/pseudopeople.git``
17
+
18
+ ``> cd pseudopeople``
19
+
20
+ ``> python setup.py install``
21
+
22
+ This will make the ``pseudopeople`` library available to python and install a
23
+ command-line executable called ``...`` that you can use to verify your
24
+ installation with
25
+
26
+ ``> ... test``
@@ -0,0 +1,22 @@
1
+ # Minimal makefile for Sphinx documentation
2
+
3
+ # You can set these variables from the command line.
4
+ SPHINXOPTS =
5
+ SPHINXBUILD = sphinx-build
6
+ SPHINXPROJ = pseudopeople
7
+ SOURCEDIR = source
8
+ BUILDDIR = build
9
+
10
+ # Put it first so that "make" without argument is like "make help".
11
+ help:
12
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
13
+
14
+ .PHONY: help Makefile
15
+
16
+ # Catch-all target: route all unknown targets to Sphinx using the new
17
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
18
+ %: Makefile
19
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
20
+
21
+ clean:
22
+ rm -rf build/*
@@ -0,0 +1,8 @@
1
+ # pandas
2
+ py:class pandas.core.indexes.base.Index
3
+ py:class pandas.core.indexes.multi.MultiIndex
4
+ py:class pandas._libs.tslibs.timestamps.Timestamp
5
+ py:class pandas._libs.tslibs.timedeltas.Timedelta
6
+ py:class pandas.core.frame.DataFrame
7
+ py:class pandas.core.series.Series
8
+ py:class pandas.core.generic.PandasObject
@@ -0,0 +1,3 @@
1
+ .wy-nav-content {
2
+ max-width: 1000px !important;
3
+ }
@@ -0,0 +1,4 @@
1
+ {% extends "!layout.html" %}
2
+ {% block extrahead %}
3
+ <link href="{{ pathto("_static/style.css", True) }}" rel="stylesheet" type="text/css">
4
+ {% endblock %}
@@ -0,0 +1,10 @@
1
+ API Reference
2
+ =============
3
+
4
+ .. automodule:: pseudopeople
5
+
6
+ .. toctree::
7
+ :maxdepth: 2
8
+ :glob:
9
+
10
+ *
@@ -0,0 +1 @@
1
+ .. automodule:: pseudopeople.interface
@@ -0,0 +1,16 @@
1
+ .. _configuration_concept:
2
+
3
+ ========================
4
+ The Configuration System
5
+ ========================
6
+
7
+ .. contents::
8
+ :depth: 2
9
+ :local:
10
+ :backlinks: none
11
+
12
+ Outline
13
+ -------
14
+ - Configuration is hierarchical
15
+ - Configuration sources and priorities
16
+ - Specifying defaults.
@@ -0,0 +1,33 @@
1
+ .. _forms_concept:
2
+
3
+ ===============
4
+ Forms
5
+ ===============
6
+
7
+ .. contents::
8
+ :depth: 2
9
+ :local:
10
+ :backlinks: none
11
+
12
+
13
+
14
+
15
+ What is a form?
16
+ ---------------
17
+
18
+ A form in the Pseudopeople framework is analogous to a dataset representing
19
+ a census survey or tax document. The types of forms that are compatible with
20
+ the Pseudopeople framework include:
21
+
22
+ .. list-table:: **Types of Forms**
23
+ :header-rows: 1
24
+ :widths: 20
25
+
26
+ * - Name
27
+ * - | Decennial census
28
+ * - | American communities survey
29
+ * - | Current population survey
30
+ * - | Women, infrants, and children survey
31
+ * - | Social security
32
+ * - | Tax W2 and 1099 forms
33
+ * - | Tax 1040 form
@@ -0,0 +1,13 @@
1
+ .. _concepts_main:
2
+
3
+ ========
4
+ Concepts
5
+ ========
6
+ Here we cover several core conceptual topics related to working with
7
+ the Pseudopeople framework.
8
+
9
+ .. toctree::
10
+ :glob:
11
+ :maxdepth: 1
12
+
13
+ *
@@ -0,0 +1,42 @@
1
+ .. _noise_functions_concept:
2
+
3
+ =================
4
+ Noise Functions
5
+ =================
6
+
7
+ .. contents::
8
+ :depth: 2
9
+ :local:
10
+ :backlinks: none
11
+
12
+
13
+
14
+
15
+ What is a noise function?
16
+ -------------------------
17
+
18
+ A noise function is ultimately where the configuration (add link) provided is
19
+ applied to the raw data which is then noised or altered and returned to the user
20
+ in a state where real world data error have been added to each form (add link).
21
+ Noise functions will be applied to datasets by column or by row. There are
22
+ several noise functions that are applied to the raw data which include:
23
+
24
+ .. list-table:: **Noise Functions**
25
+ :header-rows: 1
26
+ :widths: 20
27
+
28
+ * - Name
29
+ * - | Omission
30
+ * - | Duplications
31
+ * - | Missing data
32
+ * - | Incorrect selection
33
+ * - | Copy from within household
34
+ * - | Month and day swaps (applies to dates only)
35
+ * - | Zip Code Miswriting (applies to Zip Code only)
36
+ * - | Age Miswriting (applies to age only)
37
+ * - | Numeric miswriting
38
+ * - | Nicknames
39
+ * - | Fake names
40
+ * - | Phonetic errors
41
+ * - | OCR (optical character recognition)
42
+ * - | Typographic
@@ -0,0 +1,254 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ #
4
+ # This file is execfile()d with the current directory set to its
5
+ # containing dir.
6
+ #
7
+ # Note that not all possible configuration values are present in this
8
+ # autogenerated file.
9
+ #
10
+ # All configuration values have a default; values that are commented out
11
+ # serve to show the default.
12
+
13
+ import sys
14
+
15
+ # If extensions (or modules to document with autodoc) are in another directory,
16
+ # add these directories to sys.path here. If the directory is relative to the
17
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
18
+ from pathlib import Path
19
+
20
+ from docutils.nodes import Text
21
+ from sphinx.ext.intersphinx import missing_reference
22
+
23
+ import pseudopeople
24
+
25
+ base_dir = Path(pseudopeople.__file__).parent
26
+
27
+ about = {}
28
+ with (base_dir / "__about__.py").open() as f:
29
+ exec(f.read(), about)
30
+
31
+ sys.path.insert(0, str(Path("..").resolve()))
32
+
33
+ # -- Project information -----------------------------------------------------
34
+
35
+ project = about["__title__"]
36
+ copyright = f'2023, {about["__author__"]}'
37
+ author = about["__author__"]
38
+
39
+ # The short X.Y version.
40
+ version = about["__version__"]
41
+ # The full version, including alpha/beta/rc tags.
42
+ release = about["__version__"]
43
+
44
+
45
+ # -- General configuration ------------------------------------------------
46
+
47
+ # If your documentation needs a minimal Sphinx version, state it here.
48
+
49
+ needs_sphinx = "4.0"
50
+
51
+ # Add any Sphinx extension module names here, as strings. They can be
52
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
53
+ # ones.
54
+ extensions = [
55
+ "sphinx.ext.autodoc",
56
+ "sphinx.ext.intersphinx",
57
+ "sphinx.ext.doctest",
58
+ "sphinx.ext.todo",
59
+ "sphinx.ext.coverage",
60
+ "sphinx.ext.mathjax",
61
+ "sphinx.ext.napoleon",
62
+ "sphinx.ext.viewcode",
63
+ "sphinx_click.ext",
64
+ "matplotlib.sphinxext.plot_directive",
65
+ ]
66
+
67
+ # Add any paths that contain templates here, relative to this directory.
68
+ templates_path = ["_templates"]
69
+
70
+ # The suffix(es) of source filenames.
71
+ # You can specify multiple suffix as a list of string:
72
+ #
73
+ # source_suffix = ['.rst', '.md']
74
+ source_suffix = ".rst"
75
+
76
+ # The master toctree document.
77
+ master_doc = "index"
78
+
79
+ # General information about the project.
80
+
81
+
82
+ # The language for content autogenerated by Sphinx. Refer to documentation
83
+ # for a list of supported languages.
84
+ #
85
+ # This is also used if you do content translation via gettext catalogs.
86
+ # Usually you set "language" from the command line for these cases.
87
+ language = "en"
88
+
89
+ # List of patterns, relative to source directory, that match files and
90
+ # directories to ignore when looking for source files.
91
+ # This patterns also effect to html_static_path and html_extra_path
92
+ exclude_patterns = []
93
+
94
+ # The name of the Pygments (syntax highlighting) style to use.
95
+ pygments_style = "sphinx"
96
+
97
+ # If true, `todo` and `todoList` produce output, else they produce nothing.
98
+ todo_include_todos = True
99
+
100
+
101
+ # -- Options for HTML output ----------------------------------------------
102
+
103
+ # The theme to use for HTML and HTML Help pages. See the documentation for
104
+ # a list of builtin themes.
105
+
106
+ html_theme_path = ["_theme"]
107
+ html_theme = "sphinx_rtd_theme"
108
+
109
+ # Theme options are theme-specific and customize the look and feel of a theme
110
+ # further. For a list of options available for each theme, see the
111
+ # documentation.
112
+ #
113
+ # html_theme_options = {}
114
+
115
+ # Add any paths that contain custom static files (such as style sheets) here,
116
+ # relative to this directory. They are copied after the builtin static files,
117
+ # so a file named "default.css" will overwrite the builtin "default.css".
118
+ html_static_path = ["_static"]
119
+
120
+ # Custom sidebar templates, must be a dictionary that maps document names
121
+ # to template names.
122
+ #
123
+ # This is required for the alabaster theme
124
+ # refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
125
+ html_sidebars = {
126
+ "**": [
127
+ "globaltoc.html", # needs 'show_related': True theme option to display
128
+ "searchbox.html",
129
+ ]
130
+ }
131
+
132
+
133
+ # -- Options for HTMLHelp output ------------------------------------------
134
+
135
+ # Output file base name for HTML help builder.
136
+ htmlhelp_basename = f'{about["__title__"]}doc'
137
+
138
+
139
+ # -- Options for LaTeX output ---------------------------------------------
140
+
141
+ latex_elements = {
142
+ # The paper size ('letterpaper' or 'a4paper').
143
+ #
144
+ # 'papersize': 'letterpaper',
145
+ # The font size ('10pt', '11pt' or '12pt').
146
+ #
147
+ # 'pointsize': '10pt',
148
+ # Additional stuff for the LaTeX preamble.
149
+ #
150
+ # 'preamble': '',
151
+ # Latex figure (float) alignment
152
+ #
153
+ # 'figure_align': 'htbp',
154
+ }
155
+
156
+ # Grouping the document tree into LaTeX files. List of tuples
157
+ # (source start file, target name, title,
158
+ # author, documentclass [howto, manual, or own class]).
159
+ latex_documents = [
160
+ (
161
+ master_doc,
162
+ f'{about["__title__"]}.tex',
163
+ f'{about["__title__"]} Documentation',
164
+ about["__author__"],
165
+ "manual",
166
+ ),
167
+ ]
168
+
169
+
170
+ # -- Options for manual page output ---------------------------------------
171
+
172
+ # One entry per manual page. List of tuples
173
+ # (source start file, name, description, authors, manual section).
174
+ man_pages = [
175
+ (master_doc, f'{about["__title__"]}', f'{about["__title__"]} Documentation', [author], 1)
176
+ ]
177
+
178
+
179
+ # -- Options for Texinfo output -------------------------------------------
180
+
181
+ # Grouping the document tree into Texinfo files. List of tuples
182
+ # (source start file, target name, title, author,
183
+ # dir menu entry, description, category)
184
+ texinfo_documents = [
185
+ (
186
+ master_doc,
187
+ f'{about["__title__"]}',
188
+ f'{about["__title__"]} Documentation',
189
+ author,
190
+ f'{about["__title__"]}',
191
+ about["__summary__"],
192
+ "Miscellaneous",
193
+ ),
194
+ ]
195
+
196
+ # Other docs we can link to
197
+ intersphinx_mapping = {
198
+ "python": ("https://docs.python.org/3.8", None),
199
+ "pandas": ("https://pandas.pydata.org/pandas-docs/stable/", None),
200
+ "tables": ("https://www.pytables.org/", None),
201
+ "numpy": ("https://numpy.org/doc/stable/", None),
202
+ "networkx": ("https://networkx.org/documentation/stable/", None),
203
+ }
204
+
205
+
206
+ # -- Autodoc configuration ------------------------------------------------
207
+
208
+ autodoc_default_options = {
209
+ # Automatically document members (e.g. classes in a module,
210
+ # methods in a class, etc.)
211
+ "members": True,
212
+ # Order of items documented is determined by the order
213
+ # of appearance in the source code
214
+ "member-order": "bysource",
215
+ # Generate docs even if an item has no docstring.
216
+ "undoc-members": True,
217
+ # Don't document things with a leading underscore.
218
+ "private-members": False,
219
+ }
220
+ # Display type hints in the description instead of the signature.
221
+ autodoc_typehints = "description"
222
+
223
+
224
+ # -- nitpicky mode --------------------------------------------------------
225
+ # Ensures that all references in the docs resolve.
226
+
227
+ nitpicky = True
228
+
229
+ nitpick_ignore = []
230
+ for line in open("../nitpick-exceptions"):
231
+ if line.strip() == "" or line.startswith("#"):
232
+ continue
233
+ dtype, target = line.split(None, 1)
234
+ target = target.strip()
235
+ nitpick_ignore.append((dtype, target))
236
+
237
+
238
+ # Fix sphinx warnings when for literal Ellipses in type hints.
239
+ def setup(app):
240
+ app.connect("missing-reference", __sphinx_issue_8127)
241
+
242
+
243
+ def __sphinx_issue_8127(app, env, node, contnode):
244
+ reftarget = node.get("reftarget", None)
245
+ if reftarget == "..":
246
+ node["reftype"] = "data"
247
+ node["reftarget"] = "Ellipsis"
248
+ text_node = next(iter(contnode.traverse(lambda n: n.tagname == "#text")))
249
+ replacement_node = Text("...", "")
250
+ if text_node.parent is not None:
251
+ text_node.parent.replace(text_node, replacement_node)
252
+ else: # e.g. happens in rtype fields
253
+ contnode = replacement_node
254
+ return missing_reference(app, env, node, contnode)
@@ -0,0 +1,22 @@
1
+ .. _glossary:
2
+
3
+ ========
4
+ Glossary
5
+ ========
6
+
7
+ .. glossary::
8
+
9
+ Configuration
10
+ The configuration is a set of parameters that will define the level for each
11
+ noise type in a ConfigTree object.
12
+
13
+ Forms
14
+ Forms are analogous to a dataset that will be noised and returned to the
15
+ user with errors in the data at a level provided by the configuration.
16
+ The noised datasets will be output in the format of different census and
17
+ tax forms.
18
+
19
+ Noise functions
20
+ Functions that will be applied to forms at a row or column level to apply
21
+ errors or mistakes in the data to replicate realistic challenges in personal
22
+ record linkage.