diff --git a/.github/workflows/bump_libraries.yaml b/.github/workflows/bump_libraries.yaml
index 79c256159..76dcab07c 100644
--- a/.github/workflows/bump_libraries.yaml
+++ b/.github/workflows/bump_libraries.yaml
@@ -9,7 +9,7 @@ on:
- 'requirements/**'
env:
- PYTHON_VERSION: "3.8"
+ PYTHON_VERSION: "3.12"
jobs:
bump-changelog:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 1aed35359..35979f282 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -7,7 +7,7 @@ on:
branches: [ main ]
env:
- PYTHON_VERSION: "3.10"
+ PYTHON_VERSION: "3.12"
PIPELINE_FAMILY: "general"
jobs:
diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml
index 5a39d6bad..6d54bbecc 100644
--- a/.github/workflows/docker-publish.yml
+++ b/.github/workflows/docker-publish.yml
@@ -11,7 +11,7 @@ env:
PACKAGE: "unstructured-api"
PIPELINE_FAMILY: "general"
PIP_VERSION: "25.1.1"
- PYTHON_VERSION: "3.10"
+ PYTHON_VERSION: "3.12"
jobs:
setup:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cd37b437c..ec9dff316 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,10 @@
+## 0.0.87
+* Bump Python to 3.12
+
## 0.0.86
* Patch various CVEs
-## 0.0.86
+## 0.0.85
* Patch various CVEs
* Bump Python version to 3.12, some packages no longer support 3.9
diff --git a/Dockerfile b/Dockerfile
index 31cd453dc..7f5df05e4 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,27 +1,30 @@
# syntax=docker/dockerfile:experimental
-FROM quay.io/unstructured-io/base-images:wolfi-base-latest as base
+FROM cgr.dev/chainguard/python as base
# NOTE(crag): NB_USER ARG for mybinder.org compat:
# https://mybinder.readthedocs.io/en/latest/tutorials/dockerfile.html
ARG NB_USER=notebook-user
ARG NB_UID=1000
-ARG PIP_VERSION
+
+# Create the user
+USER root
+RUN adduser -D -u ${NB_UID} ${NB_USER}
+ENV HOME=/home/${NB_USER}
+
ARG PIPELINE_PACKAGE
-ARG PYTHON_VERSION="3.11"
+ARG PYTHON_VERSION="3.12"
# Set up environment
ENV PYTHON python${PYTHON_VERSION}
ENV PIP ${PYTHON} -m pip
WORKDIR ${HOME}
-USER ${NB_USER}
ENV PYTHONPATH="${PYTHONPATH}:${HOME}"
ENV PATH="/home/${NB_USER}/.local/bin:${PATH}"
FROM base as python-deps
COPY --chown=${NB_USER}:${NB_USER} requirements/base.txt requirements-base.txt
-RUN ${PIP} install pip==${PIP_VERSION}
RUN ${PIP} install --no-cache -r requirements-base.txt
FROM python-deps as model-deps
diff --git a/README.md b/README.md
index 3bee3ae48..285b5a3ff 100644
--- a/README.md
+++ b/README.md
@@ -289,12 +289,12 @@ curl -X 'POST'
* Using `pyenv` to manage virtualenv's is recommended
* Mac install instructions. See [here](https://github.com/Unstructured-IO/community#mac--homebrew) for more detailed instructions.
* `brew install pyenv-virtualenv`
- * `pyenv install 3.10.12`
+ * `pyenv install 3.12`
* Linux instructions are available [here](https://github.com/Unstructured-IO/community#linux).
* Create a virtualenv to work in and activate it, e.g. for one named `document-processing`:
- `pyenv virtualenv 3.10.12 unstructured-api`
+ `pyenv virtualenv 3.12 unstructured-api`
`pyenv activate unstructured-api`
See the [Unstructured Quick Start](https://github.com/Unstructured-IO/unstructured#eight_pointed_black_star-quick-start) for the many OS dependencies that are required, if the ability to process all file types is desired.
diff --git a/prepline_general/api/app.py b/prepline_general/api/app.py
index 26380bfba..5868797dd 100644
--- a/prepline_general/api/app.py
+++ b/prepline_general/api/app.py
@@ -13,7 +13,7 @@
app = FastAPI(
title="Unstructured Pipeline API",
summary="Partition documents with the Unstructured library",
- version="0.0.86",
+ version="0.0.87",
docs_url="/general/docs",
openapi_url="/general/openapi.json",
servers=[
diff --git a/prepline_general/api/general.py b/prepline_general/api/general.py
index 176197026..736c7c917 100644
--- a/prepline_general/api/general.py
+++ b/prepline_general/api/general.py
@@ -600,7 +600,7 @@ def return_content_type(filename: str):
@router.get("/general/v0/general", include_in_schema=False)
-@router.get("/general/v0.0.86/general", include_in_schema=False)
+@router.get("/general/v0.0.87/general", include_in_schema=False)
async def handle_invalid_get_request():
raise HTTPException(
status_code=status.HTTP_405_METHOD_NOT_ALLOWED, detail="Only POST requests are supported."
@@ -615,7 +615,7 @@ async def handle_invalid_get_request():
description="Description",
operation_id="partition_parameters",
)
-@router.post("/general/v0.0.86/general", include_in_schema=False)
+@router.post("/general/v0.0.87/general", include_in_schema=False)
def general_partition(
request: Request,
# cannot use annotated type here because of a bug described here:
diff --git a/preprocessing-pipeline-family.yaml b/preprocessing-pipeline-family.yaml
index 039aef554..a7c2dac93 100644
--- a/preprocessing-pipeline-family.yaml
+++ b/preprocessing-pipeline-family.yaml
@@ -1,2 +1,2 @@
name: general
-version: 0.0.86
+version: 0.0.87