From a83bfc7e2e920ded01dd85fa34636b47e15de7c5 Mon Sep 17 00:00:00 2001 From: David Anthoff Date: Fri, 28 Aug 2026 18:03:31 -0700 Subject: [PATCH 1/3] Migrate to test item framework Migrate tests and CI to the test item framework, remove PkgButler, bump min Julia to 1.12, and modernize repo infrastructure. Co-Authored-By: Claude Fable 5 --- .github/dependabot.yml | 10 ++++ .../workflows/jlpkgbutler-butler-workflow.yml | 22 --------- .../jlpkgbutler-ci-master-workflow.yml | 49 ------------------- .../workflows/jlpkgbutler-ci-pr-workflow.yml | 45 ----------------- .../jlpkgbutler-codeformat-pr-workflow.yml | 23 --------- .../jlpkgbutler-compathelper-workflow.yml | 20 -------- .../jlpkgbutler-docdeploy-workflow.yml | 23 --------- .../workflows/jlpkgbutler-tagbot-workflow.yml | 17 ------- .github/workflows/juliaci.yml | 17 +++++++ .gitignore | 3 ++ .jlpkgbutler.toml | 2 - LICENSE.md | 2 +- Project.toml | 17 ++++--- README.md | 3 +- docs/Project.toml | 2 +- docs/make.jl | 3 +- test/runtests.jl | 28 ++--------- test/test_queryverse.jl | 18 +++++++ 18 files changed, 65 insertions(+), 239 deletions(-) create mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/jlpkgbutler-butler-workflow.yml delete mode 100644 .github/workflows/jlpkgbutler-ci-master-workflow.yml delete mode 100644 .github/workflows/jlpkgbutler-ci-pr-workflow.yml delete mode 100644 .github/workflows/jlpkgbutler-codeformat-pr-workflow.yml delete mode 100644 .github/workflows/jlpkgbutler-compathelper-workflow.yml delete mode 100644 .github/workflows/jlpkgbutler-docdeploy-workflow.yml delete mode 100644 .github/workflows/jlpkgbutler-tagbot-workflow.yml create mode 100644 .github/workflows/juliaci.yml delete mode 100644 .jlpkgbutler.toml create mode 100644 test/test_queryverse.jl diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..4e00cd8 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "julia" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" \ No newline at end of file diff --git a/.github/workflows/jlpkgbutler-butler-workflow.yml b/.github/workflows/jlpkgbutler-butler-workflow.yml deleted file mode 100644 index 70544cc..0000000 --- a/.github/workflows/jlpkgbutler-butler-workflow.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Run the Julia Package Butler - -on: - push: - branches: - - main - - master - schedule: - - cron: '0 */1 * * *' - workflow_dispatch: - -jobs: - butler: - name: "Run Package Butler" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: davidanthoff/julia-pkgbutler@releases/v1 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - ssh-private-key: ${{ secrets.JLPKGBUTLER_TOKEN }} - channel: stable diff --git a/.github/workflows/jlpkgbutler-ci-master-workflow.yml b/.github/workflows/jlpkgbutler-ci-master-workflow.yml deleted file mode 100644 index 1586e40..0000000 --- a/.github/workflows/jlpkgbutler-ci-master-workflow.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Run CI on main - -on: - push: - branches: - - main - - master - workflow_dispatch: - -jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - matrix: - julia-version: ['1.0', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6', '1.7', '1.8', '1.9', '1.10'] - julia-arch: [x64, x86] - os: [ubuntu-latest, windows-latest, macOS-latest] - exclude: - - os: macOS-latest - julia-arch: x86 - - os: ubuntu-latest - julia-arch: x86 - julia-version: 1.0.5 - - os: ubuntu-latest - julia-arch: x86 - julia-version: 1.1.1 - - os: ubuntu-latest - julia-arch: x86 - julia-version: 1.2.0 - - steps: - - uses: actions/checkout@v3 - - uses: julia-actions/setup-julia@v1 - with: - version: ${{ matrix.julia-version }} - arch: ${{ matrix.julia-arch }} - - uses: julia-actions/julia-buildpkg@v1 - env: - PYTHON: "" - - uses: julia-actions/julia-runtest@v1 - env: - PYTHON: "" - - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v3 - with: - files: ./lcov.info - flags: unittests - token: ${{ secrets.CODECOV_TOKEN }} - \ No newline at end of file diff --git a/.github/workflows/jlpkgbutler-ci-pr-workflow.yml b/.github/workflows/jlpkgbutler-ci-pr-workflow.yml deleted file mode 100644 index 947db4a..0000000 --- a/.github/workflows/jlpkgbutler-ci-pr-workflow.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Run CI on PR - -on: - pull_request: - types: [opened, synchronize, reopened] - -jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - matrix: - julia-version: ['1.0', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6', '1.7', '1.8', '1.9', '1.10'] - julia-arch: [x64, x86] - os: [ubuntu-latest, windows-latest, macOS-latest] - exclude: - - os: macOS-latest - julia-arch: x86 - - os: ubuntu-latest - julia-arch: x86 - julia-version: 1.0.5 - - os: ubuntu-latest - julia-arch: x86 - julia-version: 1.1.1 - - os: ubuntu-latest - julia-arch: x86 - julia-version: 1.2.0 - - steps: - - uses: actions/checkout@v3 - - uses: julia-actions/setup-julia@v1 - with: - version: ${{ matrix.julia-version }} - arch: ${{ matrix.julia-arch }} - - uses: julia-actions/julia-buildpkg@v1 - env: - PYTHON: "" - - uses: julia-actions/julia-runtest@v1 - env: - PYTHON: "" - - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v3 - with: - files: ./lcov.info - flags: unittests - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/jlpkgbutler-codeformat-pr-workflow.yml b/.github/workflows/jlpkgbutler-codeformat-pr-workflow.yml deleted file mode 100644 index 411bed4..0000000 --- a/.github/workflows/jlpkgbutler-codeformat-pr-workflow.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Code Formatting - -on: - push: - branches: - - main - - master - workflow_dispatch: - -jobs: - format: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: julia-actions/julia-codeformat@releases/v1 - - name: Create Pull Request - uses: peter-evans/create-pull-request@v3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: Format files using DocumentFormat - title: '[AUTO] Format files using DocumentFormat' - body: '[DocumentFormat.jl](https://github.com/julia-vscode/DocumentFormat.jl) would suggest these formatting changes' - labels: no changelog diff --git a/.github/workflows/jlpkgbutler-compathelper-workflow.yml b/.github/workflows/jlpkgbutler-compathelper-workflow.yml deleted file mode 100644 index b315831..0000000 --- a/.github/workflows/jlpkgbutler-compathelper-workflow.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Run CompatHelper - -on: - schedule: - - cron: '00 * * * *' - issues: - types: [opened, reopened] - workflow_dispatch: - -jobs: - CompatHelper: - name: "Run CompatHelper.jl" - runs-on: ubuntu-latest - steps: - - name: Pkg.add("CompatHelper") - run: julia -e 'using Pkg; Pkg.add("CompatHelper")' - - name: CompatHelper.main() - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: julia -e 'using CompatHelper; CompatHelper.main()' diff --git a/.github/workflows/jlpkgbutler-docdeploy-workflow.yml b/.github/workflows/jlpkgbutler-docdeploy-workflow.yml deleted file mode 100644 index e517ba1..0000000 --- a/.github/workflows/jlpkgbutler-docdeploy-workflow.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Deploy documentation - -on: - push: - branches: - - main - - master - tags: - - v* - workflow_dispatch: - -jobs: - docdeploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: julia-actions/julia-buildpkg@v1 - env: - PYTHON: "" - - uses: julia-actions/julia-docdeploy@latest - env: - DOCUMENTER_KEY: ${{ secrets.JLPKGBUTLER_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/jlpkgbutler-tagbot-workflow.yml b/.github/workflows/jlpkgbutler-tagbot-workflow.yml deleted file mode 100644 index d3ca956..0000000 --- a/.github/workflows/jlpkgbutler-tagbot-workflow.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: TagBot -on: - issue_comment: - types: - - created - workflow_dispatch: - -jobs: - TagBot: - if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' - runs-on: ubuntu-latest - steps: - - uses: JuliaRegistries/TagBot@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - ssh: ${{ secrets.JLPKGBUTLER_TOKEN }} - branches: true diff --git a/.github/workflows/juliaci.yml b/.github/workflows/juliaci.yml new file mode 100644 index 0000000..6aa24b5 --- /dev/null +++ b/.github/workflows/juliaci.yml @@ -0,0 +1,17 @@ +name: Julia CI + +on: + push: {branches: [main,master]} + pull_request: {types: [opened,synchronize,reopened,ready_for_review,converted_to_draft]} + issue_comment: {types: [created]} + workflow_dispatch: {inputs: {feature: {type: choice, description: What to run, options: [DocDeploy,LintAndTest,TagBot]}}} + +jobs: + julia-ci: + uses: julia-testitems/testitem-workflow/.github/workflows/juliaci.yml@v2 + with: + include-all-compatible-minor-versions: true + include-rc-versions: true + permissions: write-all + secrets: + codecov_token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.gitignore b/.gitignore index 49a815a..d6f25ca 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ *.jl.mem Manifest.toml .vscode +docs/build/ +docs/Manifest.toml +test-output*.* diff --git a/.jlpkgbutler.toml b/.jlpkgbutler.toml deleted file mode 100644 index df02d77..0000000 --- a/.jlpkgbutler.toml +++ /dev/null @@ -1,2 +0,0 @@ -template = "bach" -strategy-matrix-exclude = "os: ubuntu-latest, julia-arch: x86, julia-version: 1.0.5; os: ubuntu-latest, julia-arch: x86, julia-version: 1.1.1; os: ubuntu-latest, julia-arch: x86, julia-version: 1.2.0;" diff --git a/LICENSE.md b/LICENSE.md index 2a44fd4..7e82467 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The Queryverse.jl package is licensed under the MIT "Expat" License: -> Copyright (c) 2017-2019: David Anthoff. +> Copyright (c) 2017-2026: David Anthoff. > > > Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/Project.toml b/Project.toml index 00af030..23e520d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "Queryverse" uuid = "612083be-0b0f-5412-89c1-4e7c75506a58" -version = "0.7.1-DEV" +version = "0.8.0-DEV" [deps] CSVFiles = "5d742f6a-9f54-50ce-8119-2520741973ca" @@ -21,22 +21,23 @@ VegaLite = "112f6efa-9a02-5b7d-90c0-432ed331239a" [compat] CSVFiles = "1" DataFrames = "0.20, 0.21, 0.22, 1.0" -DataTables = "0.1" -DataValues = "0.4.4" +DataTables = "0.1, 0.2" +DataValues = "0.4.4, 0.5" DataVoyager = "0.3, 1" ExcelFiles = "1" -FeatherFiles = "0.8" +FeatherFiles = "0.8, 0.9" FileIO = "1" IterableTables = "1" -ParquetFiles = "0.2" +ParquetFiles = "0.2, 0.3" Query = "0.12, 1.0" Reexport = "0.2, 1" -StatFiles = "0.8" +StatFiles = "0.8, 0.9" VegaLite = "1, 2.0, 3" -julia = "1" +julia = "1.12" [extras] +TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test"] +test = ["Test", "TestItemRunner"] diff --git a/README.md b/README.md index e49de37..b268376 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # Queryverse [![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active) -[![Build Status](https://travis-ci.org/queryverse/Queryverse.jl.svg?branch=master)](https://travis-ci.org/queryverse/Queryverse.jl) -[![Build status](https://ci.appveyor.com/api/projects/status/4bf4b25hr0b68xbm/branch/master?svg=true)](https://ci.appveyor.com/project/queryverse/queryverse-jl/branch/master) +[![Build Status](https://github.com/queryverse/Queryverse.jl/actions/workflows/juliaci.yml/badge.svg?branch=main)](https://github.com/queryverse/Queryverse.jl/actions/workflows/juliaci.yml) [![codecov.io](http://codecov.io/github/queryverse/Queryverse.jl/coverage.svg?branch=master)](http://codecov.io/github/queryverse/Queryverse.jl?branch=master) ## Overview diff --git a/docs/Project.toml b/docs/Project.toml index f2a273e..1814eb3 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -2,4 +2,4 @@ Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" [compat] -Documenter = "~0.24" +Documenter = "1" diff --git a/docs/make.jl b/docs/make.jl index d0cb5f9..8b3b6a6 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -3,7 +3,8 @@ using Documenter, Queryverse makedocs( modules=[Queryverse], sitename="Queryverse.jl", - analytics="UA-132838790-1", + format = Documenter.HTML(analytics = "UA-132838790-1"), + warnonly = [:missing_docs], pages=[ "Introduction" => "index.md" ] diff --git a/test/runtests.jl b/test/runtests.jl index d941619..fc117dc 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,27 +1,5 @@ -using Queryverse -using Test +using TestItemRunner -@testset "Queryverse" begin +include("test_queryverse.jl") - df = load(joinpath(@__DIR__, "testdata.csv")) |> -@query(i, begin - @select {i.Count, i.Year} - end) |> -@tee(save("testoutput.csv")) |> -# @tee(begin -# data_values() |> -# mark_point() |> -# encoding_x_ord(:Year) |> -# encoding_y_quant(:Count) |> -# save("testoutput.pdf") -# end) |> -DataFrame - - @test size(df) == (2, 2) - - io = IOBuffer() - f(x) = print(io, sum(x + x)) - 1:10 |> @tee(f) |> x -> print(io, " ", sum(x)) - @test String(take!(io)) == "110 55" - -end +@run_package_tests diff --git a/test/test_queryverse.jl b/test/test_queryverse.jl new file mode 100644 index 0000000..49ed278 --- /dev/null +++ b/test/test_queryverse.jl @@ -0,0 +1,18 @@ +@testitem "Queryverse" begin + output_file = joinpath(mktempdir(), "testoutput.csv") + + df = load(joinpath(@__DIR__, "testdata.csv")) |> + @query(i, begin + @select {i.Count, i.Year} + end) |> + @tee(save(output_file)) |> + DataFrame + + @test size(df) == (2, 2) + @test isfile(output_file) + + io = IOBuffer() + f(x) = print(io, sum(x + x)) + 1:10 |> @tee(f) |> x -> print(io, " ", sum(x)) + @test String(take!(io)) == "110 55" +end From f09aeb1d86503ee1c7352053d1a6f4ecf5c2a3b1 Mon Sep 17 00:00:00 2001 From: David Anthoff Date: Fri, 28 Aug 2026 18:20:41 -0700 Subject: [PATCH 2/3] Bump version to 1.0.0-DEV Move the package off 0.x to a proper 1.0 major version, and accept 1.0 versions of Queryverse sibling packages in compat. Co-Authored-By: Claude Fable 5 --- Project.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Project.toml b/Project.toml index 23e520d..9720285 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "Queryverse" uuid = "612083be-0b0f-5412-89c1-4e7c75506a58" -version = "0.8.0-DEV" +version = "1.0.0-DEV" [deps] CSVFiles = "5d742f6a-9f54-50ce-8119-2520741973ca" @@ -21,17 +21,17 @@ VegaLite = "112f6efa-9a02-5b7d-90c0-432ed331239a" [compat] CSVFiles = "1" DataFrames = "0.20, 0.21, 0.22, 1.0" -DataTables = "0.1, 0.2" -DataValues = "0.4.4, 0.5" +DataTables = "0.1, 0.2, 1" +DataValues = "0.4.4, 0.5, 1" DataVoyager = "0.3, 1" ExcelFiles = "1" -FeatherFiles = "0.8, 0.9" +FeatherFiles = "0.8, 0.9, 1" FileIO = "1" IterableTables = "1" -ParquetFiles = "0.2, 0.3" +ParquetFiles = "0.2, 0.3, 1" Query = "0.12, 1.0" Reexport = "0.2, 1" -StatFiles = "0.8, 0.9" +StatFiles = "0.8, 0.9, 1" VegaLite = "1, 2.0, 3" julia = "1.12" From f72419b0622caced7b76de7f0171cdcb5dc7782b Mon Sep 17 00:00:00 2001 From: David Anthoff Date: Fri, 28 Aug 2026 21:02:29 -0700 Subject: [PATCH 3/3] Restore original Julia compat range Keep supporting the Julia versions the package supported before the test item migration instead of raising the floor to 1.12. Co-Authored-By: Claude Fable 5 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 9720285..b450ed2 100644 --- a/Project.toml +++ b/Project.toml @@ -33,7 +33,7 @@ Query = "0.12, 1.0" Reexport = "0.2, 1" StatFiles = "0.8, 0.9, 1" VegaLite = "1, 2.0, 3" -julia = "1.12" +julia = "1" [extras] TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a"