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.
- pseudopeople-0.1.0/CHANGELOG.rst +5 -0
- pseudopeople-0.1.0/CODE_OF_CONDUCT.rst +81 -0
- pseudopeople-0.1.0/CONTRIBUTING.rst +19 -0
- pseudopeople-0.1.0/LICENSE +28 -0
- pseudopeople-0.1.0/MANIFEST.in +12 -0
- pseudopeople-0.1.0/PKG-INFO +57 -0
- pseudopeople-0.1.0/README.rst +26 -0
- pseudopeople-0.1.0/docs/Makefile +22 -0
- pseudopeople-0.1.0/docs/nitpick-exceptions +8 -0
- pseudopeople-0.1.0/docs/source/_static/style.css +3 -0
- pseudopeople-0.1.0/docs/source/_templates/layout.html +4 -0
- pseudopeople-0.1.0/docs/source/api_reference/index.rst +10 -0
- pseudopeople-0.1.0/docs/source/api_reference/interface.rst +1 -0
- pseudopeople-0.1.0/docs/source/concepts/configuration.rst +16 -0
- pseudopeople-0.1.0/docs/source/concepts/forms.rst +33 -0
- pseudopeople-0.1.0/docs/source/concepts/index.rst +13 -0
- pseudopeople-0.1.0/docs/source/concepts/noise_functions.rst +42 -0
- pseudopeople-0.1.0/docs/source/conf.py +254 -0
- pseudopeople-0.1.0/docs/source/glossary.rst +22 -0
- pseudopeople-0.1.0/docs/source/index.rst +16 -0
- pseudopeople-0.1.0/docs/source/installation.rst +64 -0
- pseudopeople-0.1.0/docs/source/tutorials/getting_started.rst +48 -0
- pseudopeople-0.1.0/docs/source/tutorials/index.rst +17 -0
- pseudopeople-0.1.0/pyproject.toml +5 -0
- pseudopeople-0.1.0/setup.cfg +4 -0
- pseudopeople-0.1.0/setup.py +102 -0
- pseudopeople-0.1.0/src/pseudopeople/__about__.py +22 -0
- pseudopeople-0.1.0/src/pseudopeople/__init__.py +11 -0
- pseudopeople-0.1.0/src/pseudopeople/default_configuration.yaml +54 -0
- pseudopeople-0.1.0/src/pseudopeople/entities.py +97 -0
- pseudopeople-0.1.0/src/pseudopeople/entity_types.py +59 -0
- pseudopeople-0.1.0/src/pseudopeople/interface.py +43 -0
- pseudopeople-0.1.0/src/pseudopeople/noise.py +74 -0
- pseudopeople-0.1.0/src/pseudopeople/noise_functions.py +268 -0
- pseudopeople-0.1.0/src/pseudopeople/utilities.py +34 -0
- pseudopeople-0.1.0/src/pseudopeople.egg-info/PKG-INFO +57 -0
- pseudopeople-0.1.0/src/pseudopeople.egg-info/SOURCES.txt +48 -0
- pseudopeople-0.1.0/src/pseudopeople.egg-info/dependency_links.txt +1 -0
- pseudopeople-0.1.0/src/pseudopeople.egg-info/not-zip-safe +1 -0
- pseudopeople-0.1.0/src/pseudopeople.egg-info/requires.txt +30 -0
- pseudopeople-0.1.0/src/pseudopeople.egg-info/top_level.txt +1 -0
- pseudopeople-0.1.0/tests/__init__.py +0 -0
- pseudopeople-0.1.0/tests/conftest.py +19 -0
- pseudopeople-0.1.0/tests/integration/__init__.py +0 -0
- pseudopeople-0.1.0/tests/integration/test_interface.py +38 -0
- pseudopeople-0.1.0/tests/unit/__init__.py +0 -0
- pseudopeople-0.1.0/tests/unit/test_column_noise.py +115 -0
- pseudopeople-0.1.0/tests/unit/test_configuration.py +49 -0
- pseudopeople-0.1.0/tests/unit/test_noise_form.py +162 -0
- pseudopeople-0.1.0/tests/unit/test_row_noise.py +13 -0
|
@@ -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 @@
|
|
|
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,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.
|