Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
python-version: "3.13"
- name: Install dependencies
run: |
python --version
Expand Down
2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sphinx:
build:
os: ubuntu-22.04
tools:
python: "3.11"
python: "3.13"
python:
install:
# This runs pip install .[docs] from the project root.
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
**1.3.0 - TBD/TBD/TBD**

- Add support for python 3.13

**1.2.7 - 01/21/26**

- Add support for python 3.12 and numpy 2.x
Expand Down
3 changes: 1 addition & 2 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ reusable_pipeline(
// Note: Newly added branches will require a manual trigger of the first build
// for subsequent scheduled builds to run.
"main",
"epic/full_scale_testing",
"release-candidate/v.orange.rebased",
"release-candidate-spring26",
],
stagger_scheduled_builds: true,
upstream_repos: ["layered_config_tree"],
Expand Down
87 changes: 83 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,14 +1,93 @@
# Check if we're running in Jenkins
ifdef JENKINS_URL
# Files are already in workspace from shared library
# Files are already in workspace from shared library
MAKE_INCLUDES := .
else
# For local dev, use the installed vivarium_build_utils package
MAKE_INCLUDES := $(shell python -c "from vivarium_build_utils.resources import get_makefiles_path; print(get_makefiles_path())")
# For local dev, use the installed vivarium_build_utils package if it exists
# First, check if we can import vivarium_build_utils and assign 'yes' or 'no'.
# We do this by importing the package in python and redirecting stderr to the null device.
# If the import is successful (&&), it will print 'yes', otherwise (||) it will print 'no'.
VIVARIUM_BUILD_UTILS_AVAILABLE := $(shell python -c "import vivarium_build_utils" 2>/dev/null && echo "yes" || echo "no")
# If vivarium_build_utils is available, get the makefiles path or else set it to empty
ifeq ($(VIVARIUM_BUILD_UTILS_AVAILABLE),yes)
MAKE_INCLUDES := $(shell python -c "from vivarium_build_utils.resources import get_makefiles_path; print(get_makefiles_path())")
else
MAKE_INCLUDES :=
endif
endif

PACKAGE_NAME = pseudopeople
# Set the package name as the last part of this file's parent directory path
PACKAGE_NAME = $(notdir $(CURDIR))

ifneq ($(MAKE_INCLUDES),) # not empty
# Include makefiles from vivarium_build_utils
include $(MAKE_INCLUDES)/base.mk
include $(MAKE_INCLUDES)/test.mk
else # empty
# Use this help message (since the vivarium_build_utils version is not available)
help:
@echo
@echo "For Make's standard help, run 'make --help'."
@echo
@echo "Most of our Makefile targets are provided by the vivarium_build_utils"
@echo "package. To access them, you need to create a development environment first."
@echo
@echo "make build-env"
@echo
@echo "USAGE:"
@echo " make build-env [name=<environment name>] [py=<python version>]"
@echo
@echo "ARGUMENTS:"
@echo " name [optional]"
@echo " Name of the conda environment to create (defaults to <PACKAGE_NAME>)"
@echo " py [optional]"
@echo " Python version (defaults to latest supported)"
@echo
@echo "After creating the environment:"
@echo " 1. Activate it: 'conda activate <environment_name>'"
@echo " 2. Run 'make help' again to see all newly available targets"
@echo
endif

build-env: # Create a new environment with installed packages
# Validate arguments - exit if unsupported arguments are passed
@allowed="name py"; \
for arg in $(filter-out build-env,$(MAKECMDGOALS)) $(MAKEFLAGS); do \
case $$arg in \
*=*) \
arg_name=$${arg%%=*}; \
if ! echo " $$allowed " | grep -q " $$arg_name "; then \
allowed_list=$$(echo $$allowed | sed 's/ /, /g'); \
echo "Error: Invalid argument '$$arg_name'. Allowed arguments are: $$allowed_list" >&2; \
exit 1; \
fi \
;; \
esac; \
done

# Handle arguments and set defaults
# name
@$(eval name ?= $(PACKAGE_NAME))
# python version - validate if specified, else get default from json file
@supported_versions=$$(python -c "import json; print(' '.join(json.load(open('python_versions.json'))))" 2>/dev/null || echo ""); \
if [ -n "$(py)" ] && ! echo "$$supported_versions" | grep -q "$(py)"; then \
echo "Error: Python version '$(py)' is not supported. Available: $$(echo $$supported_versions | sed 's/ /, /g')" >&2; \
exit 1; \
fi
@$(eval py ?= $(shell python -c "import json; print(max(json.load(open('python_versions.json')), key=lambda x: tuple(map(int, x.split('.')))))"))


conda create -n $(name) python=$(py) --yes
# Bootstrap vivarium_build_utils into the new environment
conda run -n $(name) pip install vivarium_build_utils
conda run -n $(name) make install

@echo
@echo "Finished building environment"
@echo " name: $(name)"
@echo " python version: $(py)"
@echo
@echo "Don't forget to activate it with:"
@echo "conda activate $(name)"
@echo

2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ pseudopeople is a Python package that generates realistic simulated data about a
fictional United States population, designed for use in testing entity resolution
(record linkage) methods or other data science algorithms at scale.

**pseudopeople requires Python 3.10-3.12 to run**
**pseudopeople requires Python 3.10-3.13 to run**

You can install pseudopeople from PyPI with pip:

Expand Down
2 changes: 1 addition & 1 deletion docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ out more about the principles and processes underlying this work.
Quickstart
----------

pseudopeople requires a version of `Python <https://www.python.org/>`_ between 3.10 and 3.12 (inclusive) to be installed.
pseudopeople requires a version of `Python <https://www.python.org/>`_ between 3.10 and 3.13 (inclusive) to be installed.
Once Python is installed, you can install pseudopeople with `pip <https://pip.pypa.io/en/stable/>`_ by running the command:

.. highlight:: console
Expand Down
2 changes: 1 addition & 1 deletion python_versions.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
["3.10", "3.11", "3.12"]
["3.10", "3.11", "3.12", "3.13"]
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@

install_requirements = [
"vivarium_dependencies[numpy,pandas,pyyaml,pyarrow]",
"vivarium_build_utils>=1.1.0,<2.0.0",
"vivarium>=1.2.0",
"vivarium_build_utils>=2.1.0,<3.0.0",
"vivarium>=3.0.0,<4.0.0",
"tqdm",
"layered_config_tree>=1.0.1",
]
Expand Down
1 change: 0 additions & 1 deletion src/pseudopeople/noise_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
COPY_HOUSEHOLD_MEMBER_COLS,
GUARDIAN_DUPLICATION_ADDRESS_COLUMNS,
HOUSING_TYPE_GUARDIAN_DUPLICATION_RELATONSHIP_MAP,
INT_TO_STRING_COLUMNS,
)
from pseudopeople.data.fake_names import fake_first_names, fake_last_names
from pseudopeople.noise_scaling import (
Expand Down