diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 894db38..f8d86d5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,83 +45,3 @@ jobs: - uses: codecov/codecov-action@v7 with: file: lcov.info - docs: - name: Documentation - runs-on: ubuntu-latest - env: - JULIA_PKG_SERVER: "" - steps: - - uses: actions/checkout@v7 - - uses: julia-actions/setup-julia@v3 - with: - version: '1' - - name: Check build conditions - run: | - julia -e ' - function set_environment_variable(name::AbstractString, value::AbstractString) - github_env = ENV["GITHUB_ENV"] - touch(github_env) - open(github_env, "a") do io - println(io, "$(name)=$(value)") - end - end - event_name = "${{ github.event_name }}" - if event_name == "pull_request" - base_ref = "${{ github.base_ref }}" - head_ref = "${{ github.head_ref }}" - base_repository = "${{ github.repository }}" - head_repository = "${{ github.event.pull_request.head.repo.full_name }}" - build_docs = (base_ref == "master") && (head_ref == "dev") && (base_repository == head_repository) - elseif event_name == "push" - ref = "${{ github.ref }}" - build_docs = (ref == "refs/heads/master") || (startswith(ref, "refs/tags/")) - elseif event_name == "schedule" - build_docs = ref == "refs/heads/master" - elseif event_name == "workflow_dispatch" - build_docs = ref == "refs/heads/master" - else - build_docs = false - end - if build_docs - @info("We will build the docs") - set_environment_variable("BUILD_DOCS", "true") - if event_name == "pull_request" - set_environment_variable("GITHUB_EVENT_NAME", "pull_request") - else - set_environment_variable("GITHUB_EVENT_NAME", "push") - end - else - @info("We will NOT build the docs") - set_environment_variable("BUILD_DOCS", "false") - end' - - name: Install dependencies - run: | - julia --project=docs -e ' - if ENV["BUILD_DOCS"] == "true" - using Pkg - Pkg.develop(PackageSpec(path=pwd())) - Pkg.instantiate() - end' - - name: Doctest - run: | - julia --project=docs -e ' - if ENV["BUILD_DOCS"] == "true" - using Documenter: doctest - using NearestNeighborModels, MLJBase - @info "attempting to run the doctests" - doctest(NearestNeighborModels) - else - @info "skipping the doctests" - end' - - name: Build and deploy - run: julia --project=docs -e ' - if ENV["BUILD_DOCS"] == "true" - @info "attempting to build and deploy docs" - run(`julia --project=docs --color=yes docs/make.jl`) - @info "successfully built and deployed docs" - else - @info "skipping doc build and deploy" - end' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..a004cfa --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,35 @@ +name: Generate and Deploy Documentation +on: + push: + branches: + - dev + tags: [v*] + pull_request: + +jobs: + build: + permissions: + contents: write + actions: write + pull-requests: write + statuses: write + runs-on: ubuntu-latest + steps: + - uses: julia-actions/cache@v3 + - uses: actions/checkout@v7 + - uses: julia-actions/setup-julia@v3 + with: + version: '1' + show-versioninfo: true + - uses: julia-actions/julia-buildpkg@v1 + - uses: julia-actions/julia-docdeploy@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} + - name: Run doctests + shell: julia --color=yes --project=docs {0} + run: | + using Documenter: DocMeta, doctest + using NearestNeighborModels + DocMeta.setdocmeta!(NearestNeighborModels, :DocTestSetup, :(using NearestNeighborModels); recursive=true) + doctest(NearestNeighborModels) diff --git a/docs/src/index.md b/docs/src/index.md index a00b5ef..735e9de 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -53,26 +53,26 @@ end ```jldoctest ex1 julia> predict(knnc_mach, rows=test_inds) 60-element CategoricalDistributions.UnivariateFiniteVector{ScientificTypesBase.Multiclass{2}, String, UInt32, Float64}: - UnivariateFinite{Multiclass{2}}(B=>0.315, O=>0.685) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>0.315, O=>0.685) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) ⋮ - UnivariateFinite{Multiclass{2}}(B=>0.613, O=>0.387) - UnivariateFinite{Multiclass{2}}(B=>0.83, O=>0.17) - UnivariateFinite{Multiclass{2}}(B=>0.361, O=>0.639) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>0.824, O=>0.176) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) - UnivariateFinite{Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>0.613, O=>0.387) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>0.83, O=>0.17) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>0.361, O=>0.639) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>0.824, O=>0.176) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) + UnivariateFinite{ScientificTypesBase.Multiclass{2}}(B=>1.0, O=>0.0) ``` Alternatively categorical predictions may be obtained using `predict_mode` as shown below. ```jldoctest ex1