SIGN IN SIGN UP
ray-project / ray UNCLAIMED

Ray is an AI compute engine. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.

0 0 1 Python
2016-07-01 18:21:02 -07:00
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
# Allow linkcheck to run without treating warnings as errors; -W will
# fast-fail if enabled; it's better to gather the whole list of bad links at once.
SPHINXOPTS = -a -E -W -j auto
LOCALSPHINXOPTS = -W -j auto
LINKCHECKOPTS = -a -E -j auto
2016-07-01 18:21:02 -07:00
SPHINXBUILD = sphinx-build
SPHINXAUTOBUILD = sphinx-autobuild --port 0 --open-browser --ignore "*.log" --ignore "*data/examples*" --ignore "*train/examples*" --ignore "*serve/examples*"
2016-07-01 18:21:02 -07:00
PAPER =
BUILDDIR = _build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
ALLLOCALSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(LOCALSPHINXOPTS) source
ALLLINKCHECKOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(LINKCHECKOPTS) source
2016-07-01 18:21:02 -07:00
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
2016-07-01 18:21:02 -07:00
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext show
2016-07-01 18:21:02 -07:00
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " linkcheck_all to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
2016-07-01 18:21:02 -07:00
clean:
rm -rf $(BUILDDIR)/*
rm -rf ./source/__pycache__/
rm -rf ./source/_ext/__pycache__/
rm -rf ./source/*/api/doc/*
rm -rf ./source/ray-core/compiled-graph/doc/*
rm -rf ./source/ray-references/api/*/doc/*
rm -rf ./source/cluster/running_applications/doc/*
rm -rf ./source/cluster/running_applications/job-submission/doc/*
rm -rf ./source/ray-observability/api/state/doc*
rm -rf ./source/rllib/package_ref/doc*
rm -rf ./source/ray-more-libs/doc/*
rm -rf ./source/ray-observability/reference/doc/*
rm -f ./source/data/examples.rst
rm -f ./source/serve/examples.rst
rm -f ./source/train/examples.rst
2016-07-01 18:21:02 -07:00
html:
[Serve] Pydantic v2 Migration for Ray Serve (#61061) This PR migrates Ray Serve from Pydantic v1 to v2, removing all compatibility shims. ### Key API Changes - `parse_obj()` → `model_validate()` - `.dict()` → `.model_dump()` - `.copy(update=...)` → `.model_copy(update=...)` - `@validator` → `@field_validator` / `@model_validator` - `class Config` → `model_config = ConfigDict(...)` - Removed all `ray._common.pydantic_compat` imports ### Critical Quirks for Reviewers #### 1. **`model_validate()` Bypasses `__init__`** In Pydantic v2, `model_validate()` bypasses `__init__`, breaking serialization logic in `AutoscalingPolicy` and `RequestRouterConfig`. **Fix**: Added `@model_validator(mode="after")` to ensure `serialize_policy()` and `_serialize_request_router_cls()` are called #### 2. **`PrivateAttr` Breaks Equality** Pydantic v2 includes `PrivateAttr` fields in `__eq__()` comparison. Since `_serialized_policy_def` and `_serialized_request_router_cls` contain cloudpickle'd bytecode (with timestamps), identical configs compare as unequal, causing **infinite redeployment loops**. **Fix**: Override `__eq__()` and `__hash__()` to only compare public fields: Related to https://github.com/ray-project/ray/issues/60680 and https://github.com/ray-project/ray/issues/58876 The pydantic v2 migration for Ray Serve changed how config/schema models are documented. The doc cache (built on master) contains autosummary stubs generated with the default `class.rst` template, which creates per-member stub files via nested `.. autosummary:: :toctree:`. Since autosummary never overwrites existing stubs, these stale cached stubs caused hundreds of "document isn't included in any toctree" and "duplicate object description" warnings. **Changes across 5 files:** 1. **`doc/Makefile`** -- Delete all cached serve API stubs (`ray.serve.*.rst`) before the Sphinx build in both `html` and `local` targets. This forces autosummary to regenerate them with the correct templates. Needed while the remote doc cache predates the pydantic v2 migration. 2. **`doc/source/_templates/autosummary/autopydantic.rst`** -- Added `:members:` to properly document pydantic v2 model fields inline. Removed `:undoc-members:` (redundant with `:members:`). 3. **`doc/source/conf.py`**: - Added `autodoc_pydantic_model_show_json = False` to prevent empty raw directives from models with non-serializable fields. - Extended `nitpick_ignore_regex` to suppress `py:obj` warnings generated by autodoc_pydantic for pydantic v2 validators ("all fields", `_validate_*`). - Minor cleanup of `DuplicateObjectFilter` formatting. 4. **`doc/source/serve/api/index.md`** -- Split autosummary blocks to use appropriate templates: - Pydantic models (config classes, schemas) use `autopydantic.rst` -- documents fields inline, no per-member stubs. - Enums and non-pydantic classes (`ProxyLocation`, `APIType`, `ApplicationStatus`, etc.) use `class_without_autosummary.rst` -- no nested autosummary stubs. - Removed `schema.TaskProcessorAdapter` (no longer needed). 5. **`doc/source/serve/advanced-guides/advanced-autoscaling.md`** -- Updated 27 links from per-field `.rst` files (e.g., `AutoscalingConfig.target_ongoing_requests.rst`) to the main class page (`AutoscalingConfig.rst`), since per-field stubs are no longer generated. --------- Signed-off-by: abrar <abrar@anyscale.com>
2026-03-05 21:35:27 -08:00
@# Remove cached serve API stubs so autosummary regenerates them with correct templates
find source/serve/api/doc/ -name "ray.serve.*.rst" -delete 2>/dev/null || true
$(SPHINXBUILD) -W --keep-going -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
2016-07-01 18:21:02 -07:00
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
@echo "View the documentation by opening a browser and going to $(BUILDDIR)/html/index.html."
develop: html
RAY_DIR := $(shell pwd | rev | cut -d'/' -f2- | rev)
local:
python load_doc_cache.py --ray-dir=$(RAY_DIR)
[Serve] Pydantic v2 Migration for Ray Serve (#61061) This PR migrates Ray Serve from Pydantic v1 to v2, removing all compatibility shims. ### Key API Changes - `parse_obj()` → `model_validate()` - `.dict()` → `.model_dump()` - `.copy(update=...)` → `.model_copy(update=...)` - `@validator` → `@field_validator` / `@model_validator` - `class Config` → `model_config = ConfigDict(...)` - Removed all `ray._common.pydantic_compat` imports ### Critical Quirks for Reviewers #### 1. **`model_validate()` Bypasses `__init__`** In Pydantic v2, `model_validate()` bypasses `__init__`, breaking serialization logic in `AutoscalingPolicy` and `RequestRouterConfig`. **Fix**: Added `@model_validator(mode="after")` to ensure `serialize_policy()` and `_serialize_request_router_cls()` are called #### 2. **`PrivateAttr` Breaks Equality** Pydantic v2 includes `PrivateAttr` fields in `__eq__()` comparison. Since `_serialized_policy_def` and `_serialized_request_router_cls` contain cloudpickle'd bytecode (with timestamps), identical configs compare as unequal, causing **infinite redeployment loops**. **Fix**: Override `__eq__()` and `__hash__()` to only compare public fields: Related to https://github.com/ray-project/ray/issues/60680 and https://github.com/ray-project/ray/issues/58876 The pydantic v2 migration for Ray Serve changed how config/schema models are documented. The doc cache (built on master) contains autosummary stubs generated with the default `class.rst` template, which creates per-member stub files via nested `.. autosummary:: :toctree:`. Since autosummary never overwrites existing stubs, these stale cached stubs caused hundreds of "document isn't included in any toctree" and "duplicate object description" warnings. **Changes across 5 files:** 1. **`doc/Makefile`** -- Delete all cached serve API stubs (`ray.serve.*.rst`) before the Sphinx build in both `html` and `local` targets. This forces autosummary to regenerate them with the correct templates. Needed while the remote doc cache predates the pydantic v2 migration. 2. **`doc/source/_templates/autosummary/autopydantic.rst`** -- Added `:members:` to properly document pydantic v2 model fields inline. Removed `:undoc-members:` (redundant with `:members:`). 3. **`doc/source/conf.py`**: - Added `autodoc_pydantic_model_show_json = False` to prevent empty raw directives from models with non-serializable fields. - Extended `nitpick_ignore_regex` to suppress `py:obj` warnings generated by autodoc_pydantic for pydantic v2 validators ("all fields", `_validate_*`). - Minor cleanup of `DuplicateObjectFilter` formatting. 4. **`doc/source/serve/api/index.md`** -- Split autosummary blocks to use appropriate templates: - Pydantic models (config classes, schemas) use `autopydantic.rst` -- documents fields inline, no per-member stubs. - Enums and non-pydantic classes (`ProxyLocation`, `APIType`, `ApplicationStatus`, etc.) use `class_without_autosummary.rst` -- no nested autosummary stubs. - Removed `schema.TaskProcessorAdapter` (no longer needed). 5. **`doc/source/serve/advanced-guides/advanced-autoscaling.md`** -- Updated 27 links from per-field `.rst` files (e.g., `AutoscalingConfig.target_ongoing_requests.rst`) to the main class page (`AutoscalingConfig.rst`), since per-field stubs are no longer generated. --------- Signed-off-by: abrar <abrar@anyscale.com>
2026-03-05 21:35:27 -08:00
@# Remove cached serve API stubs so autosummary regenerates them with correct templates
@# (pydantic v2 migration changed templates; cached stubs use old template with nested
@# autosummary :toctree: that generates unwanted per-member stub files)
find source/serve/api/doc/ -name "ray.serve.*.rst" -delete 2>/dev/null || true
python update_cache_env.py --ray-dir=$(RAY_DIR)
$(SPHINXAUTOBUILD) -W --keep-going -b html $(ALLLOCALSPHINXOPTS) $(BUILDDIR)/html
2016-07-01 18:21:02 -07:00
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Ray.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Ray.qhc"
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/Ray"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Ray"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLLINKCHECKOPTS) $(BUILDDIR)/linkcheck
2016-07-01 18:21:02 -07:00
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
linkcheck_all:
LINKCHECK_ALL=1 $(SPHINXBUILD) -b linkcheck $(ALLLINKCHECKOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
2016-07-01 18:21:02 -07:00
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
show:
python -m http.server -d _build/html/