From 2797e7378b1386127d1b25a497ddff45714fc64a Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 17:33:17 -0400 Subject: [PATCH 01/10] `usethis::use_github_action('check-standard')` --- .github/workflows/R-CMD-check.yaml | 50 +++++++++++++++++++++ .github/workflows/check-standard.yaml | 64 --------------------------- README.Rmd | 6 ++- 3 files changed, 55 insertions(+), 65 deletions(-) create mode 100644 .github/workflows/R-CMD-check.yaml delete mode 100644 .github/workflows/check-standard.yaml diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 00000000..14159b77 --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,50 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + +name: R-CMD-check + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: macos-latest, r: 'release'} + - {os: windows-latest, r: 'release'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'oldrel-1'} + + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes + + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + upload-snapshots: true + build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")' diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml deleted file mode 100644 index 4f9f8cbf..00000000 --- a/.github/workflows/check-standard.yaml +++ /dev/null @@ -1,64 +0,0 @@ -on: - push: - branches: [main, master] - pull_request: - branches: [main, master] - -name: R-CMD-check - -jobs: - R-CMD-check: - runs-on: ${{ matrix.config.os }} - - name: ${{ matrix.config.os }} (${{ matrix.config.r }}) - - strategy: - fail-fast: false - matrix: - config: - - {os: macOS-latest, r: 'release'} - - - {os: windows-latest, r: 'release'} - # Use 3.6 to trigger usage of RTools35 - # - {os: windows-latest, r: '3.6'} - - # Use older ubuntu to maximise backward compatibility - - {os: ubuntu-20.04, r: 'devel', http-user-agent: 'release'} - - {os: ubuntu-20.04, r: 'release'} - - {os: ubuntu-20.04, r: 'oldrel-1'} - - {os: ubuntu-20.04, r: 'oldrel-2'} - - {os: ubuntu-20.04, r: 'oldrel-3'} - # - {os: ubuntu-20.04, r: 'oldrel-4'} - - env: - GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - R_KEEP_PKG_SOURCE: yes - - steps: - - uses: actions/checkout@v2 - - - uses: r-lib/actions/setup-pandoc@v1 - - - uses: r-lib/actions/setup-r@v1 - with: - r-version: ${{ matrix.config.r }} - http-user-agent: ${{ matrix.config.http-user-agent }} - use-public-rspm: true - - - uses: r-lib/actions/setup-r-dependencies@v1 - with: - extra-packages: rcmdcheck - - - uses: r-lib/actions/check-r-package@v1 - - - name: Show testthat output - if: always() - run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true - shell: bash - - - name: Upload check results - if: failure() - uses: actions/upload-artifact@main - with: - name: ${{ runner.os }}-r${{ matrix.config.r }}-results - path: check diff --git a/README.Rmd b/README.Rmd index c1f9cc16..31321bff 100644 --- a/README.Rmd +++ b/README.Rmd @@ -8,8 +8,12 @@ output: # tsibble -[![R build status](https://github.com/tidyverts/tsibble/workflows/R-CMD-check/badge.svg)](https://github.com/tidyverts/tsibble/actions?workflow=R-CMD-check) + + +[![R-CMD-check](https://github.com/tidyverts/tsibble/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/tidyverts/tsibble/actions/workflows/R-CMD-check.yaml) [![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/tsibble)](https://cran.r-project.org/package=tsibble) + + ```{r, echo = FALSE} knitr::opts_chunk$set( From 6393b3c38947840679792a93101a7d6ab76353ba Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 17:34:58 -0400 Subject: [PATCH 02/10] Other action updates with `usethis::use_github_action()` --- .github/workflows/pkgdown.yaml | 35 +++++++++++++++++-------- .github/workflows/pr-commands.yaml | 38 ++++++++++++++++------------ .github/workflows/test-coverage.yaml | 32 ++++++++++++++++++----- 3 files changed, 73 insertions(+), 32 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 7b436c6e..a7276e85 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -1,23 +1,32 @@ -# Workflow derived from https://github.com/r-lib/actions/tree/master/examples +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: branches: [main, master] - tags: ['*'] + pull_request: + branches: [main, master] + release: + types: [published] + workflow_dispatch: name: pkgdown jobs: pkgdown: runs-on: ubuntu-latest + # Only restrict concurrency for non-PR jobs + concurrency: + group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + permissions: + contents: write steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: r-lib/actions/setup-pandoc@v1 + - uses: r-lib/actions/setup-pandoc@v2 - - uses: r-lib/actions/setup-r@v1 + - uses: r-lib/actions/setup-r@v2 with: use-public-rspm: true @@ -26,8 +35,14 @@ jobs: extra-packages: any::pkgdown, local::. needs: website - - name: Deploy package - run: | - git config --local user.name "$GITHUB_ACTOR" - git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" - Rscript -e 'pkgdown::deploy_to_branch(new_process = FALSE)' + - name: Build site + run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) + shell: Rscript {0} + + - name: Deploy to GitHub pages 🚀 + if: github.event_name != 'pull_request' + uses: JamesIves/github-pages-deploy-action@v4.5.0 + with: + clean: false + branch: gh-pages + folder: docs diff --git a/.github/workflows/pr-commands.yaml b/.github/workflows/pr-commands.yaml index 51040eae..eea58c5c 100644 --- a/.github/workflows/pr-commands.yaml +++ b/.github/workflows/pr-commands.yaml @@ -1,4 +1,4 @@ -# Workflow derived from https://github.com/r-lib/actions/tree/master/examples +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: issue_comment: @@ -8,28 +8,30 @@ name: Commands jobs: document: - if: startsWith(github.event.comment.body, '/document') + if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER') && startsWith(github.event.comment.body, '/document') }} name: document runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: r-lib/actions/pr-fetch@v1 + - uses: r-lib/actions/pr-fetch@v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - - uses: r-lib/actions/setup-r@v1 + - uses: r-lib/actions/setup-r@v2 with: use-public-rspm: true - - uses: r-lib/actions/setup-r-dependencies@v1 + - uses: r-lib/actions/setup-r-dependencies@v2 with: - extra-packages: roxygen2 + extra-packages: any::roxygen2 + needs: pr-document - name: Document - run: Rscript -e 'roxygen2::roxygenise()' + run: roxygen2::roxygenise() + shell: Rscript {0} - name: commit run: | @@ -37,30 +39,33 @@ jobs: git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" git add man/\* NAMESPACE git commit -m 'Document' - - uses: r-lib/actions/pr-push@v1 + + - uses: r-lib/actions/pr-push@v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} style: - if: startsWith(github.event.comment.body, '/style') + if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER') && startsWith(github.event.comment.body, '/style') }} name: style runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: r-lib/actions/pr-fetch@v1 + - uses: r-lib/actions/pr-fetch@v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - - uses: r-lib/actions/setup-r@v1 + - uses: r-lib/actions/setup-r@v2 - name: Install dependencies - run: Rscript -e 'install.packages("styler")' + run: install.packages("styler") + shell: Rscript {0} - name: Style - run: Rscript -e 'styler::style_pkg()' + run: styler::style_pkg() + shell: Rscript {0} - name: commit run: | @@ -68,6 +73,7 @@ jobs: git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" git add \*.R git commit -m 'Style' - - uses: r-lib/actions/pr-push@v1 + + - uses: r-lib/actions/pr-push@v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index 3c0da1c9..21b8a933 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -1,4 +1,4 @@ -# Workflow derived from https://github.com/r-lib/actions/tree/master/examples +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: @@ -15,16 +15,36 @@ jobs: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: r-lib/actions/setup-r@v1 + - uses: r-lib/actions/setup-r@v2 with: use-public-rspm: true - - uses: r-lib/actions/setup-r-dependencies@v1 + - uses: r-lib/actions/setup-r-dependencies@v2 with: - extra-packages: covr + extra-packages: any::covr + needs: coverage - name: Test coverage - run: covr::codecov() + run: | + covr::codecov( + quiet = FALSE, + clean = FALSE, + install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package") + ) shell: Rscript {0} + + - name: Show testthat output + if: always() + run: | + ## -------------------------------------------------------------------- + find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true + shell: bash + + - name: Upload test results + if: failure() + uses: actions/upload-artifact@v4 + with: + name: coverage-test-failures + path: ${{ runner.temp }}/package From 5055dfc6707b8ce92d9daf288a52badc4f8e30fc Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 17:36:23 -0400 Subject: [PATCH 03/10] devtools::build_readme() --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5422528e..6959e051 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,11 @@ # tsibble -[![R build -status](https://github.com/tidyverts/tsibble/workflows/R-CMD-check/badge.svg)](https://github.com/tidyverts/tsibble/actions?workflow=R-CMD-check) + + +[![R-CMD-check](https://github.com/tidyverts/tsibble/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/tidyverts/tsibble/actions/workflows/R-CMD-check.yaml) [![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/tsibble)](https://cran.r-project.org/package=tsibble) + The **tsibble** package provides a data infrastructure for tidy temporal data with wrangling tools. Adapting the [tidy data From dae7120d9dd528f564f87ac09d413aa577821b93 Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 17:48:20 -0400 Subject: [PATCH 04/10] Redocument with roxygen2 7.3.1 and address warnings --- DESCRIPTION | 2 +- NAMESPACE | 27 +++++++++++++++++++++++++++ R/as-tsibble.R | 3 ++- R/filter-index.R | 18 ++++++++++++++++++ R/tsibble2ts.R | 6 ++++++ R/yearquarter.R | 1 + 6 files changed, 55 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index b74cf5e4..b18b78c6 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -71,4 +71,4 @@ Encoding: UTF-8 Language: en-GB LazyData: true Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.1 diff --git a/NAMESPACE b/NAMESPACE index 590404aa..73e68d91 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -15,6 +15,8 @@ S3method(arrange,grouped_ts) S3method(arrange,tbl_ts) S3method(as.data.frame,tbl_ts) S3method(as.ts,tbl_ts) +S3method(as_tibble,grouped_df) +S3method(as_tibble,grouped_ts) S3method(as_tibble,tbl_ts) S3method(as_tsibble,"NULL") S3method(as_tsibble,data.frame) @@ -35,6 +37,15 @@ S3method(dplyr_reconstruct,grouped_ts) S3method(dplyr_reconstruct,tbl_ts) S3method(dplyr_row_slice,grouped_ts) S3method(dplyr_row_slice,tbl_ts) +S3method(end_window,Date) +S3method(end_window,POSIXct) +S3method(end_window,difftime) +S3method(end_window,numeric) +S3method(end_window,yearmon) +S3method(end_window,yearmonth) +S3method(end_window,yearqtr) +S3method(end_window,yearquarter) +S3method(end_window,yearweek) S3method(fill_gaps,data.frame) S3method(fill_gaps,tbl_ts) S3method(format,interval) @@ -104,16 +115,32 @@ S3method(rbind,tbl_ts) S3method(scan_gaps,tbl_ts) S3method(select,grouped_ts) S3method(select,tbl_ts) +S3method(seq,ordered) S3method(seq,yearmonth) S3method(seq,yearquarter) S3method(seq,yearweek) S3method(setdiff,yearmonth) S3method(setdiff,yearquarter) S3method(setdiff,yearweek) +S3method(start_window,Date) +S3method(start_window,POSIXct) +S3method(start_window,difftime) +S3method(start_window,numeric) +S3method(start_window,yearmon) +S3method(start_window,yearmonth) +S3method(start_window,yearqtr) +S3method(start_window,yearquarter) +S3method(start_window,yearweek) S3method(summarise,grouped_ts) S3method(summarise,tbl_ts) S3method(tbl_sum,grouped_ts) S3method(tbl_sum,tbl_ts) +S3method(time_ts,Date) +S3method(time_ts,POSIXt) +S3method(time_ts,numeric) +S3method(time_ts,yearmonth) +S3method(time_ts,yearquarter) +S3method(time_ts,yearweek) S3method(transmute,grouped_ts) S3method(transmute,tbl_ts) S3method(type_sum,tbl_ts) diff --git a/R/as-tsibble.R b/R/as-tsibble.R index 5128c709..78259a74 100644 --- a/R/as-tsibble.R +++ b/R/as-tsibble.R @@ -500,15 +500,16 @@ as_tibble.tbl_ts <- function(x, ...) { new_tibble(vec_data(x), nrow = nrow(x)) } +#' @export as_tibble.grouped_ts <- function(x, ...) { new_grouped_df(x, groups = group_data(x)) } +#' @export as_tibble.grouped_df <- function(x, ...) { x } -#' @keywords internal #' @export as.data.frame.tbl_ts <- function(x, row.names = NULL, optional = FALSE, ...) { new_data_frame(vec_data(x)) diff --git a/R/filter-index.R b/R/filter-index.R index d1d62997..ac411957 100644 --- a/R/filter-index.R +++ b/R/filter-index.R @@ -117,6 +117,7 @@ end_window <- function(x, y = NULL, ...) { UseMethod("end_window") } +#' @export start_window.numeric <- function(x, y = NULL, ...) { if (is_null(y)) { min(x) @@ -125,6 +126,7 @@ start_window.numeric <- function(x, y = NULL, ...) { } } +#' @export end_window.numeric <- function(x, y = NULL, ...) { if (is_null(y)) { max(x) + 1 @@ -133,6 +135,7 @@ end_window.numeric <- function(x, y = NULL, ...) { } } +#' @export start_window.difftime <- function(x, y = NULL, ...) { if (!requireNamespace("hms", quietly = TRUE)) { abort("Package `hms` required.\nPlease install and try again.") @@ -145,6 +148,7 @@ start_window.difftime <- function(x, y = NULL, ...) { } } +#' @export end_window.difftime <- function(x, y = NULL, ...) { if (is_null(y)) { hms::as_hms(max(x) + 1) @@ -155,6 +159,7 @@ end_window.difftime <- function(x, y = NULL, ...) { } } +#' @export start_window.Date <- function(x, y = NULL, ...) { if (is_null(y)) { min(x) @@ -167,6 +172,7 @@ start_window.Date <- function(x, y = NULL, ...) { } } +#' @export end_window.Date <- function(x, y = NULL, ...) { if (is_null(y)) { max(x) + period(1, "day") @@ -193,6 +199,7 @@ end_window.Date <- function(x, y = NULL, ...) { } } +#' @export start_window.POSIXct <- function(x, y = NULL, ...) { if (is_null(y)) { min(x) @@ -204,6 +211,7 @@ start_window.POSIXct <- function(x, y = NULL, ...) { } } +#' @export end_window.POSIXct <- function(x, y = NULL, ...) { if (is_null(y)) { max(x) + period(1, "second") @@ -234,6 +242,7 @@ end_window.POSIXct <- function(x, y = NULL, ...) { } } +#' @export start_window.yearweek <- function(x, y = NULL, ...) { wk_start <- week_start(x) x <- as_date(x) @@ -244,6 +253,7 @@ start_window.yearweek <- function(x, y = NULL, ...) { yearweek(start_window(x = x, y = y), week_start = wk_start) } +#' @export end_window.yearweek <- function(x, y = NULL, ...) { wk_start <- week_start(x) x <- as_date(x) @@ -254,6 +264,7 @@ end_window.yearweek <- function(x, y = NULL, ...) { yearweek(end_window(x = x, y = y), week_start = wk_start) + 1 } +#' @export start_window.yearmonth <- function(x, y = NULL, ...) { x <- as_date(x) if (!is_null(y)) { @@ -263,6 +274,7 @@ start_window.yearmonth <- function(x, y = NULL, ...) { yearmonth(start_window(x = x, y = y)) } +#' @export end_window.yearmonth <- function(x, y = NULL, ...) { x <- as_date(x) if (!is_null(y)) { @@ -272,6 +284,7 @@ end_window.yearmonth <- function(x, y = NULL, ...) { yearmonth(end_window(x = x, y = y)) + 1 } +#' @export start_window.yearquarter <- function(x, y = NULL, ...) { x <- as_date(x) if (!is_null(y)) { @@ -281,6 +294,7 @@ start_window.yearquarter <- function(x, y = NULL, ...) { yearquarter(start_window(x = x, y = y)) } +#' @export end_window.yearquarter <- function(x, y = NULL, ...) { x <- as_date(x) if (!is_null(y)) { @@ -290,21 +304,25 @@ end_window.yearquarter <- function(x, y = NULL, ...) { yearquarter(end_window(x = x, y = y)) + 1 } +#' @export start_window.yearmon <- function(x, y = NULL, ...) { x <- yearmonth(x) start_window(x, y = y) } +#' @export end_window.yearmon <- function(x, y = NULL, ...) { x <- yearmonth(x) end_window(x, y = y) } +#' @export start_window.yearqtr <- function(x, y = NULL, ...) { x <- yearquarter(x) start_window(x, y = y) } +#' @export end_window.yearqtr <- function(x, y = NULL, ...) { x <- yearquarter(x) end_window(x, y = y) diff --git a/R/tsibble2ts.R b/R/tsibble2ts.R index 14fdcf17..587bf4ae 100644 --- a/R/tsibble2ts.R +++ b/R/tsibble2ts.R @@ -73,28 +73,33 @@ time_ts <- function(x, ...) { UseMethod("time_ts") } +#' @export time_ts.yearweek <- function(x, ...) { freq <- guess_frequency(x) y <- decimal_date(x) ts(y, start = min0(y), frequency = freq) } +#' @export time_ts.yearmonth <- function(x, ...) { freq <- guess_frequency(x) y <- year(x) + (month(x) - 1) / freq ts(y, start = min0(y), frequency = freq) } +#' @export time_ts.yearquarter <- function(x, ...) { freq <- guess_frequency(x) y <- year(x) + (quarter(x) - 1) / freq ts(y, start = min0(y), frequency = freq) } +#' @export time_ts.numeric <- function(x, ...) { ts(x, start = min0(x), frequency = 1) } +#' @export time_ts.Date <- function(x, frequency = NULL, ...) { if (is.null(frequency)) { frequency <- guess_frequency(x) @@ -103,6 +108,7 @@ time_ts.Date <- function(x, frequency = NULL, ...) { ts(x, start = min0(y), frequency = frequency) } +#' @export time_ts.POSIXt <- function(x, frequency = NULL, ...) { if (is.null(frequency)) { frequency <- guess_frequency(x) diff --git a/R/yearquarter.R b/R/yearquarter.R index 4f96754b..879db1dc 100644 --- a/R/yearquarter.R +++ b/R/yearquarter.R @@ -363,6 +363,7 @@ seq.yearquarter <- function(from, to, by, length.out = NULL, along.with = NULL, } } +#' @export seq.ordered <- function(from, to, by, ...) { bad_by(by) lvls <- levels(from) From 5b2bcdfb5d4eb6b589c28d241ba79f236257e872 Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 17:50:06 -0400 Subject: [PATCH 05/10] `usethis::use_lifecycle()` --- R/tsibble-package.R | 39 +++++++++++++---------- man/figures/lifecycle-archived.svg | 22 ++++++++++++- man/figures/lifecycle-defunct.svg | 22 ++++++++++++- man/figures/lifecycle-deprecated.svg | 22 ++++++++++++- man/figures/lifecycle-experimental.svg | 22 ++++++++++++- man/figures/lifecycle-maturing.svg | 22 ++++++++++++- man/figures/lifecycle-questioning.svg | 22 ++++++++++++- man/figures/lifecycle-soft-deprecated.svg | 22 ++++++++++++- man/figures/lifecycle-stable.svg | 30 ++++++++++++++++- man/figures/lifecycle-superseded.svg | 21 ++++++++++++ 10 files changed, 219 insertions(+), 25 deletions(-) create mode 100644 man/figures/lifecycle-superseded.svg diff --git a/R/tsibble-package.R b/R/tsibble-package.R index 0051d12f..469a9935 100644 --- a/R/tsibble-package.R +++ b/R/tsibble-package.R @@ -72,23 +72,6 @@ #' refer to [tibble::tibble-package] to change display options. #' #' @aliases NULL tsibble-package -#' @importFrom utils head tail -#' @importFrom stats frequency start end time ts as.ts tsp<- -#' @importFrom anytime assertTime assertDate utcdate utctime anydate -#' @importFrom anytime addFormats removeFormats -#' @importFrom lubridate make_date wday floor_date year month period as.period -#' @importFrom lubridate as.duration -#' @importFrom lubridate quarter is.POSIXct rollback force_tz tz is.POSIXt is.Date -#' @importFrom lubridate decimal_date date_decimal round_date -#' @importFrom lubridate seconds_to_period month<- weeks days as_date -#' @importFrom dplyr arrange filter select mutate transmute summarise rename -#' @importFrom dplyr group_by ungroup group_data grouped_df group_vars -#' @importFrom dplyr group_rows groups new_grouped_df is_grouped_df -#' @importFrom dplyr left_join right_join full_join inner_join anti_join -#' @importFrom dplyr bind_rows bind_cols combine with_order pull first reframe -#' @importFrom dplyr dplyr_row_slice dplyr_col_modify dplyr_reconstruct -#' @importFrom tibble new_tibble trunc_mat -#' @import rlang tidyselect vctrs ellipsis #' @examples #' # create a tsibble w/o a key ---- #' tsibble( @@ -114,3 +97,25 @@ stub <- function() { ## I have to import it if I want to state a minimum version. if (FALSE) lifecycle::deprecate_soft() } + +## usethis namespace: start +#' @importFrom lifecycle deprecated +#' @importFrom utils head tail +#' @importFrom stats frequency start end time ts as.ts tsp<- +#' @importFrom anytime assertTime assertDate utcdate utctime anydate +#' @importFrom anytime addFormats removeFormats +#' @importFrom lubridate make_date wday floor_date year month period as.period +#' @importFrom lubridate as.duration +#' @importFrom lubridate quarter is.POSIXct rollback force_tz tz is.POSIXt is.Date +#' @importFrom lubridate decimal_date date_decimal round_date +#' @importFrom lubridate seconds_to_period month<- weeks days as_date +#' @importFrom dplyr arrange filter select mutate transmute summarise rename +#' @importFrom dplyr group_by ungroup group_data grouped_df group_vars +#' @importFrom dplyr group_rows groups new_grouped_df is_grouped_df +#' @importFrom dplyr left_join right_join full_join inner_join anti_join +#' @importFrom dplyr bind_rows bind_cols combine with_order pull first reframe +#' @importFrom dplyr dplyr_row_slice dplyr_col_modify dplyr_reconstruct +#' @importFrom tibble new_tibble trunc_mat +#' @import rlang tidyselect vctrs ellipsis +## usethis namespace: end +NULL diff --git a/man/figures/lifecycle-archived.svg b/man/figures/lifecycle-archived.svg index 48f72a6f..745ab0c7 100644 --- a/man/figures/lifecycle-archived.svg +++ b/man/figures/lifecycle-archived.svg @@ -1 +1,21 @@ - lifecyclelifecyclearchivedarchived \ No newline at end of file + + lifecycle: archived + + + + + + + + + + + + + + + lifecycle + + archived + + diff --git a/man/figures/lifecycle-defunct.svg b/man/figures/lifecycle-defunct.svg index 01452e5f..d5c9559e 100644 --- a/man/figures/lifecycle-defunct.svg +++ b/man/figures/lifecycle-defunct.svg @@ -1 +1,21 @@ -lifecyclelifecycledefunctdefunct \ No newline at end of file + + lifecycle: defunct + + + + + + + + + + + + + + + lifecycle + + defunct + + diff --git a/man/figures/lifecycle-deprecated.svg b/man/figures/lifecycle-deprecated.svg index 4baaee01..b61c57c3 100644 --- a/man/figures/lifecycle-deprecated.svg +++ b/man/figures/lifecycle-deprecated.svg @@ -1 +1,21 @@ -lifecyclelifecycledeprecateddeprecated \ No newline at end of file + + lifecycle: deprecated + + + + + + + + + + + + + + + lifecycle + + deprecated + + diff --git a/man/figures/lifecycle-experimental.svg b/man/figures/lifecycle-experimental.svg index d1d060e9..5d88fc2c 100644 --- a/man/figures/lifecycle-experimental.svg +++ b/man/figures/lifecycle-experimental.svg @@ -1 +1,21 @@ -lifecyclelifecycleexperimentalexperimental \ No newline at end of file + + lifecycle: experimental + + + + + + + + + + + + + + + lifecycle + + experimental + + diff --git a/man/figures/lifecycle-maturing.svg b/man/figures/lifecycle-maturing.svg index df713101..897370ec 100644 --- a/man/figures/lifecycle-maturing.svg +++ b/man/figures/lifecycle-maturing.svg @@ -1 +1,21 @@ -lifecyclelifecyclematuringmaturing \ No newline at end of file + + lifecycle: maturing + + + + + + + + + + + + + + + lifecycle + + maturing + + diff --git a/man/figures/lifecycle-questioning.svg b/man/figures/lifecycle-questioning.svg index 08ee0c90..7c1721d0 100644 --- a/man/figures/lifecycle-questioning.svg +++ b/man/figures/lifecycle-questioning.svg @@ -1 +1,21 @@ -lifecyclelifecyclequestioningquestioning \ No newline at end of file + + lifecycle: questioning + + + + + + + + + + + + + + + lifecycle + + questioning + + diff --git a/man/figures/lifecycle-soft-deprecated.svg b/man/figures/lifecycle-soft-deprecated.svg index 9f014fd1..9c166ff3 100644 --- a/man/figures/lifecycle-soft-deprecated.svg +++ b/man/figures/lifecycle-soft-deprecated.svg @@ -1 +1,21 @@ -lifecyclelifecyclesoft-deprecatedsoft-deprecated \ No newline at end of file + + lifecycle: soft-deprecated + + + + + + + + + + + + + + + lifecycle + + soft-deprecated + + diff --git a/man/figures/lifecycle-stable.svg b/man/figures/lifecycle-stable.svg index e015dc81..9bf21e76 100644 --- a/man/figures/lifecycle-stable.svg +++ b/man/figures/lifecycle-stable.svg @@ -1 +1,29 @@ -lifecyclelifecyclestablestable \ No newline at end of file + + lifecycle: stable + + + + + + + + + + + + + + + + lifecycle + + + + stable + + + diff --git a/man/figures/lifecycle-superseded.svg b/man/figures/lifecycle-superseded.svg new file mode 100644 index 00000000..db8d757f --- /dev/null +++ b/man/figures/lifecycle-superseded.svg @@ -0,0 +1,21 @@ + + lifecycle: superseded + + + + + + + + + + + + + + + lifecycle + + superseded + + From 573979d89f0ace4c8c443ec06ebe57c1b2d60e9c Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 17:55:43 -0400 Subject: [PATCH 06/10] Use `lifecycle::badge()` pattern! --- DESCRIPTION | 2 -- NAMESPACE | 1 + R/as-tsibble.R | 8 ++++---- R/dplyr-verbs.R | 2 +- R/gaps.R | 2 +- R/index-by.R | 2 +- R/index-valid.R | 2 +- R/interval.R | 6 +++--- R/new-data.R | 2 +- R/rolling.R | 6 +++--- R/tidyr-verbs.R | 2 +- R/time-wise.R | 2 +- R/tsibble-meta.R | 2 +- R/tsibble2ts.R | 4 ++-- R/yearmonth.R | 2 +- R/yearquarter.R | 2 +- R/yearweek.R | 2 +- man/as-tsibble.Rd | 2 +- man/as.ts.tbl_ts.Rd | 2 +- man/build_tsibble_meta.Rd | 2 +- man/default_time_units.Rd | 2 +- man/difference.Rd | 2 +- man/duplicates.Rd | 2 +- man/fill_gaps.Rd | 2 +- man/group_by_key.Rd | 2 +- man/guess_frequency.Rd | 2 +- man/index-by.Rd | 2 +- man/index_valid.Rd | 2 +- man/interval-pull.Rd | 2 +- man/is-tsibble.Rd | 2 +- man/new-data.Rd | 2 +- man/new-interval.Rd | 2 +- man/slide_tsibble.Rd | 2 +- man/stretch_tsibble.Rd | 2 +- man/tile_tsibble.Rd | 2 +- man/tsibble.Rd | 2 +- man/unnest_tsibble.Rd | 2 +- man/year-month.Rd | 2 +- man/year-quarter.Rd | 2 +- man/year-week.Rd | 2 +- 40 files changed, 47 insertions(+), 48 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index b18b78c6..0ced9e34 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -63,8 +63,6 @@ Suggests: timeDate VignetteBuilder: knitr -RdMacros: - lifecycle ByteCompile: true Config/testthat/edition: 3 Encoding: UTF-8 diff --git a/NAMESPACE b/NAMESPACE index 73e68d91..3955a5b4 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -398,6 +398,7 @@ importFrom(dplyr,with_order) importFrom(generics,intersect) importFrom(generics,setdiff) importFrom(generics,union) +importFrom(lifecycle,deprecated) importFrom(lubridate,"month<-") importFrom(lubridate,as.duration) importFrom(lubridate,as.period) diff --git a/R/as-tsibble.R b/R/as-tsibble.R index 78259a74..83babbe9 100644 --- a/R/as-tsibble.R +++ b/R/as-tsibble.R @@ -4,7 +4,7 @@ setOldClass(c("tbl_ts", "tbl_df", "tbl", "data.frame")) #' Create a tsibble object #' -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' @param ... A set of name-value pairs. #' @param key Variable(s) that uniquely determine time indices. `NULL` for @@ -71,7 +71,7 @@ tsibble <- function(..., key = NULL, index, regular = TRUE, .drop = TRUE) { #' Coerce to a tsibble object #' -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' @param x Other objects to be coerced to a tsibble (`tbl_ts`). #' @inheritParams tsibble @@ -317,7 +317,7 @@ build_tsibble <- function(x, key = NULL, key_data = NULL, index, index2 = index, #' Low-level & high-performance constructor for a tsibble object #' #' @description -#' \lifecycle{experimental} +#' `r lifecycle::badge('experimental')` #' #' `build_tsibble_meta()` does much less checks than `build_tsibble()` for #' high performance. @@ -518,7 +518,7 @@ as.data.frame.tbl_ts <- function(x, row.names = NULL, optional = FALSE, ...) { #' Test duplicated observations determined by key and index variables #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' * `is_duplicated()`: a logical scalar if the data exist duplicated observations. #' * `are_duplicated()`: a logical vector, the same length as the row number of `data`. diff --git a/R/dplyr-verbs.R b/R/dplyr-verbs.R index b567006e..8aedf77b 100644 --- a/R/dplyr-verbs.R +++ b/R/dplyr-verbs.R @@ -166,7 +166,7 @@ group_by.tbl_ts <- function(.data, ..., .add = FALSE, #' Group by key variables #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' @param .data A `tbl_ts` object. #' @param ... Ignored. diff --git a/R/gaps.R b/R/gaps.R index 220e2b9f..c2007db9 100644 --- a/R/gaps.R +++ b/R/gaps.R @@ -2,7 +2,7 @@ globalVariables(c(".", ".gaps")) #' Turn implicit missing values into explicit missing values #' -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' @param .data A tsibble. #' @param ... A set of name-value pairs. The values provided will only replace diff --git a/R/index-by.R b/R/index-by.R index 7c22e913..47a1f451 100644 --- a/R/index-by.R +++ b/R/index-by.R @@ -1,7 +1,7 @@ #' Group by time index and collapse with `summarise()` #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' `index_by()` is the counterpart of `group_by()` in temporal context, but it #' only groups the time index. The following operation is applied to each partition diff --git a/R/index-valid.R b/R/index-valid.R index 52ec4a7b..418bb097 100644 --- a/R/index-valid.R +++ b/R/index-valid.R @@ -1,7 +1,7 @@ #' Add custom index support for a tsibble #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' S3 method to add an index type support for a tsibble. #' diff --git a/R/interval.R b/R/interval.R index 9750cd4f..43591565 100644 --- a/R/interval.R +++ b/R/interval.R @@ -1,7 +1,7 @@ #' Pull time interval from a vector #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' Assuming regularly spaced time, the `interval_pull()` returns a list of time #' components as the "interval" class. @@ -149,7 +149,7 @@ interval_pull.ordered <- function(x) { #' Interval constructor for a tsibble #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' * `new_interval()` creates an interval object. #' * `gcd_interval()` computes the greatest common divisor for the difference #' of numerics. @@ -248,7 +248,7 @@ format.interval <- function(x, ...) { #' Time units from tsibble's "interval" class used for `seq(by = )` #' -#' \lifecycle{experimental} +#' `r lifecycle::badge('experimental')` #' #' @param x An interval. #' @export diff --git a/R/new-data.R b/R/new-data.R index 981a56e4..424e86f6 100644 --- a/R/new-data.R +++ b/R/new-data.R @@ -1,6 +1,6 @@ #' New tsibble data and append new observations to a tsibble #' -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' @param .data A `tbl_ts`. #' @param n An integer indicates the number of key-index pair to append. If diff --git a/R/rolling.R b/R/rolling.R index f3bfd123..8ab21852 100644 --- a/R/rolling.R +++ b/R/rolling.R @@ -23,7 +23,7 @@ check_slider_input <- function(.x, .size = 1, .step = 1) { #' Perform sliding windows on a tsibble by row #' -#' \lifecycle{questioning} +#' `r lifecycle::badge('questioning')` #' #' @param .x A tsibble. #' @param .size A positive integer for window size. @@ -94,7 +94,7 @@ roll_tsibble <- function(.x, indices, .id = ".id") { #' Perform tiling windows on a tsibble by row #' -#' \lifecycle{questioning} +#' `r lifecycle::badge('questioning')` #' #' @param .x A tsibble. #' @param .size A positive integer for window size. @@ -129,7 +129,7 @@ tiler2 <- function(.x, .size = 1) { #' Perform stretching windows on a tsibble by row #' -#' \lifecycle{questioning} +#' `r lifecycle::badge('questioning')` #' #' @param .x A tsibble. #' @param .step A positive integer for incremental step. diff --git a/R/tidyr-verbs.R b/R/tidyr-verbs.R index fbe9ae49..10fd7e09 100644 --- a/R/tidyr-verbs.R +++ b/R/tidyr-verbs.R @@ -128,7 +128,7 @@ unnest.tbl_ts <- function(data, ...) { #' Unnest a data frame consisting of tsibbles to a tsibble #' #' @description -#' \lifecycle{deprecated} +#' `r lifecycle::badge('deprecated')` #' #' @param data A data frame contains homogenous tsibbles in the list-columns. #' @param cols Names of columns to unnest. diff --git a/R/time-wise.R b/R/time-wise.R index 737d4271..397b96cf 100644 --- a/R/time-wise.R +++ b/R/time-wise.R @@ -1,7 +1,7 @@ #' Lagged differences #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' @inheritParams dplyr::lag #' @param lag A positive integer indicating which lag to use. diff --git a/R/tsibble-meta.R b/R/tsibble-meta.R index 4c015f29..b29cfae3 100644 --- a/R/tsibble-meta.R +++ b/R/tsibble-meta.R @@ -214,7 +214,7 @@ is_ordered <- function(x) { #' If the object is a tsibble #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' @param x An object. #' diff --git a/R/tsibble2ts.R b/R/tsibble2ts.R index 587bf4ae..84fd5ccf 100644 --- a/R/tsibble2ts.R +++ b/R/tsibble2ts.R @@ -1,6 +1,6 @@ #' Coerce a tsibble to a time series #' -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' @param x A `tbl_ts` object. #' @param value A measured variable of interest to be spread over columns, if @@ -120,7 +120,7 @@ time_ts.POSIXt <- function(x, frequency = NULL, ...) { #' Guess a time frequency from other index objects #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' A possible frequency passed to the `ts()` function #' diff --git a/R/yearmonth.R b/R/yearmonth.R index ae10947f..dacee361 100644 --- a/R/yearmonth.R +++ b/R/yearmonth.R @@ -1,7 +1,7 @@ #' Represent year-month #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' Create or coerce using `yearmonth()`. #' diff --git a/R/yearquarter.R b/R/yearquarter.R index 879db1dc..698a4573 100644 --- a/R/yearquarter.R +++ b/R/yearquarter.R @@ -1,7 +1,7 @@ #' Represent year-quarter #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' Create or coerce using `yearquarter()`. #' diff --git a/R/yearweek.R b/R/yearweek.R index 02f3c28e..7b063b11 100644 --- a/R/yearweek.R +++ b/R/yearweek.R @@ -1,7 +1,7 @@ #' Represent year-week based on the ISO 8601 standard (with flexible start day) #' #' @description -#' \lifecycle{stable} +#' `r lifecycle::badge('stable')` #' #' Create or coerce using `yearweek()`. #' diff --git a/man/as-tsibble.Rd b/man/as-tsibble.Rd index 725d63e3..7bcbdf57 100644 --- a/man/as-tsibble.Rd +++ b/man/as-tsibble.Rd @@ -49,7 +49,7 @@ daily.} A tsibble object. } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} } \details{ A tsibble is sorted by its key first and index. diff --git a/man/as.ts.tbl_ts.Rd b/man/as.ts.tbl_ts.Rd index 3b16da3a..249a45eb 100644 --- a/man/as.ts.tbl_ts.Rd +++ b/man/as.ts.tbl_ts.Rd @@ -23,7 +23,7 @@ preferred frequency is passed to \code{ts()}.} A \code{ts} object. } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} } \examples{ # a monthly series diff --git a/man/build_tsibble_meta.Rd b/man/build_tsibble_meta.Rd index c871bcf7..4e444337 100644 --- a/man/build_tsibble_meta.Rd +++ b/man/build_tsibble_meta.Rd @@ -28,7 +28,7 @@ the correct order. \code{FALSE} checks the ordering and may give a warning.} irregular interval. Use the specified interval via \code{\link[=new_interval]{new_interval()}} as is.} } \description{ -\lifecycle{experimental} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} \code{build_tsibble_meta()} does much less checks than \code{build_tsibble()} for high performance. diff --git a/man/default_time_units.Rd b/man/default_time_units.Rd index 5008cab9..d64a0c61 100644 --- a/man/default_time_units.Rd +++ b/man/default_time_units.Rd @@ -10,6 +10,6 @@ default_time_units(x) \item{x}{An interval.} } \description{ -\lifecycle{experimental} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} } \keyword{internal} diff --git a/man/difference.Rd b/man/difference.Rd index 5f1516a2..314ffdca 100644 --- a/man/difference.Rd +++ b/man/difference.Rd @@ -26,7 +26,7 @@ size as \code{x}.} A numeric vector of the same length as \code{x}. } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} } \examples{ # examples from base diff --git a/man/duplicates.Rd b/man/duplicates.Rd index e08839f5..8831c58f 100644 --- a/man/duplicates.Rd +++ b/man/duplicates.Rd @@ -25,7 +25,7 @@ empty key, and \code{c()} for multiple variables. It works with tidy selector elements.} } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} \itemize{ \item \code{is_duplicated()}: a logical scalar if the data exist duplicated observations. \item \code{are_duplicated()}: a logical vector, the same length as the row number of \code{data}. diff --git a/man/fill_gaps.Rd b/man/fill_gaps.Rd index 324f8f4a..3ec64ebd 100644 --- a/man/fill_gaps.Rd +++ b/man/fill_gaps.Rd @@ -28,7 +28,7 @@ existing \code{NA} untouched. existing time spans.} } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} } \examples{ harvest <- tsibble( diff --git a/man/group_by_key.Rd b/man/group_by_key.Rd index f09d7230..61c2d425 100644 --- a/man/group_by_key.Rd +++ b/man/group_by_key.Rd @@ -16,7 +16,7 @@ data? The default is \code{TRUE} except when \code{.data} has been previously grouped with \code{.drop = FALSE}. See \code{\link[dplyr:group_by_drop_default]{group_by_drop_default()}} for details.} } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} } \examples{ tourism \%>\% diff --git a/man/guess_frequency.Rd b/man/guess_frequency.Rd index 039d3f92..670a7718 100644 --- a/man/guess_frequency.Rd +++ b/man/guess_frequency.Rd @@ -10,7 +10,7 @@ guess_frequency(x) \item{x}{An index object including "yearmonth", "yearquarter", "Date" and others.} } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} A possible frequency passed to the \code{ts()} function } diff --git a/man/index-by.Rd b/man/index-by.Rd index c4f593a1..9a7fb250 100644 --- a/man/index-by.Rd +++ b/man/index-by.Rd @@ -27,7 +27,7 @@ fine-resolution aggregation }} } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} \code{index_by()} is the counterpart of \code{group_by()} in temporal context, but it only groups the time index. The following operation is applied to each partition diff --git a/man/index_valid.Rd b/man/index_valid.Rd index b9c8604e..98778d5c 100644 --- a/man/index_valid.Rd +++ b/man/index_valid.Rd @@ -13,7 +13,7 @@ index_valid(x) \code{TRUE}/\code{FALSE} or \code{NA} (unsure) } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} S3 method to add an index type support for a tsibble. } diff --git a/man/interval-pull.Rd b/man/interval-pull.Rd index b331a634..c3d89abc 100644 --- a/man/interval-pull.Rd +++ b/man/interval-pull.Rd @@ -15,7 +15,7 @@ An "interval" class (a list) includes "year", "microsecond", "nanosecond", "unit". } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} Assuming regularly spaced time, the \code{interval_pull()} returns a list of time components as the "interval" class. diff --git a/man/is-tsibble.Rd b/man/is-tsibble.Rd index cdc53166..a9ab475f 100644 --- a/man/is-tsibble.Rd +++ b/man/is-tsibble.Rd @@ -16,7 +16,7 @@ is_grouped_ts(x) TRUE if the object inherits from the tbl_ts class. } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} } \examples{ # A tibble is not a tsibble ---- diff --git a/man/new-data.Rd b/man/new-data.Rd index d1a7167c..764334d5 100644 --- a/man/new-data.Rd +++ b/man/new-data.Rd @@ -28,7 +28,7 @@ append_row(.data, n = 1L, ...) and key, otherwise only index and key.} } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} \code{append_row()}: add new rows to the start/end of a tsibble by filling a key-index pair and \code{NA} for measured variables. diff --git a/man/new-interval.Rd b/man/new-interval.Rd index acfa59d9..b383cda1 100644 --- a/man/new-interval.Rd +++ b/man/new-interval.Rd @@ -29,7 +29,7 @@ to allow custom interval.} an "interval" class } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} \itemize{ \item \code{new_interval()} creates an interval object. \item \code{gcd_interval()} computes the greatest common divisor for the difference diff --git a/man/slide_tsibble.Rd b/man/slide_tsibble.Rd index a36bc535..cfb9079f 100644 --- a/man/slide_tsibble.Rd +++ b/man/slide_tsibble.Rd @@ -17,7 +17,7 @@ instead of every single step.} \item{.id}{A character naming the new column \code{.id} containing the partition.} } \description{ -\lifecycle{questioning} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#questioning}{\figure{lifecycle-questioning.svg}{options: alt='[Questioning]'}}}{\strong{[Questioning]}} } \section{Rolling tsibble}{ diff --git a/man/stretch_tsibble.Rd b/man/stretch_tsibble.Rd index b6edf78a..42d65b28 100644 --- a/man/stretch_tsibble.Rd +++ b/man/stretch_tsibble.Rd @@ -16,7 +16,7 @@ stretch_tsibble(.x, .step = 1, .init = 1, .id = ".id") \item{.id}{A character naming the new column \code{.id} containing the partition.} } \description{ -\lifecycle{questioning} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#questioning}{\figure{lifecycle-questioning.svg}{options: alt='[Questioning]'}}}{\strong{[Questioning]}} } \section{Rolling tsibble}{ diff --git a/man/tile_tsibble.Rd b/man/tile_tsibble.Rd index b9963ab1..f7f660b5 100644 --- a/man/tile_tsibble.Rd +++ b/man/tile_tsibble.Rd @@ -14,7 +14,7 @@ tile_tsibble(.x, .size = 1, .id = ".id") \item{.id}{A character naming the new column \code{.id} containing the partition.} } \description{ -\lifecycle{questioning} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#questioning}{\figure{lifecycle-questioning.svg}{options: alt='[Questioning]'}}}{\strong{[Questioning]}} } \section{Rolling tsibble}{ diff --git a/man/tsibble.Rd b/man/tsibble.Rd index 08c12d6a..0a57a381 100644 --- a/man/tsibble.Rd +++ b/man/tsibble.Rd @@ -24,7 +24,7 @@ interval is determined by the greatest common divisor of index column, if \code{ A tsibble object. } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} } \details{ A tsibble is sorted by its key first and index. diff --git a/man/unnest_tsibble.Rd b/man/unnest_tsibble.Rd index 414e916f..19053426 100644 --- a/man/unnest_tsibble.Rd +++ b/man/unnest_tsibble.Rd @@ -20,6 +20,6 @@ of key variables leads to unique time indices (i.e. a valid tsibble). If you are sure that it's a valid input, specify \code{FALSE} to skip the checks.} } \description{ -\lifecycle{deprecated} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} } \keyword{internal} diff --git a/man/year-month.Rd b/man/year-month.Rd index c62e46f7..1201775d 100644 --- a/man/year-month.Rd +++ b/man/year-month.Rd @@ -29,7 +29,7 @@ if a warning or an error occurs.} year-month (\code{yearmonth}) objects. } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} Create or coerce using \code{yearmonth()}. } diff --git a/man/year-quarter.Rd b/man/year-quarter.Rd index d6463796..f6dc82e4 100644 --- a/man/year-quarter.Rd +++ b/man/year-quarter.Rd @@ -26,7 +26,7 @@ fiscal_year(x) year-quarter (\code{yearquarter}) objects. } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} Create or coerce using \code{yearquarter()}. } diff --git a/man/year-week.Rd b/man/year-week.Rd index bd08a047..5de257c6 100644 --- a/man/year-week.Rd +++ b/man/year-week.Rd @@ -34,7 +34,7 @@ year-week (\code{yearweek}) objects. \code{TRUE}/\code{FALSE} if the year has 53 ISO weeks. } \description{ -\lifecycle{stable} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} Create or coerce using \code{yearweek()}. } From ff0aff46900427a1ca77982e7f768c8ff3cb37ba Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 18:26:51 -0400 Subject: [PATCH 07/10] Update WORDLIST --- inst/WORDLIST | 1 + 1 file changed, 1 insertion(+) diff --git a/inst/WORDLIST b/inst/WORDLIST index a93444a6..f8be54ea 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -5,6 +5,7 @@ binded Birrarung Bourke center +CMD df dplyr ed From 80655cdf750b5982f272c16d3f19e70037ed4832 Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 18:27:47 -0400 Subject: [PATCH 08/10] Add favicons + tweak pkgdown config to use bootstrap 5 (adds a search bar) --- .Rbuildignore | 1 + _pkgdown.yml | 25 ++++++++----------- pkgdown/favicon/apple-touch-icon-120x120.png | Bin 0 -> 10859 bytes pkgdown/favicon/apple-touch-icon-60x60.png | Bin 0 -> 4611 bytes pkgdown/favicon/apple-touch-icon-76x76.png | Bin 0 -> 6177 bytes pkgdown/favicon/apple-touch-icon.png | Bin 0 -> 10859 bytes pkgdown/favicon/favicon-16x16.png | Bin 0 -> 1340 bytes pkgdown/favicon/favicon-32x32.png | Bin 0 -> 2307 bytes pkgdown/favicon/favicon.ico | Bin 0 -> 15086 bytes 9 files changed, 11 insertions(+), 15 deletions(-) create mode 100644 pkgdown/favicon/apple-touch-icon-120x120.png create mode 100644 pkgdown/favicon/apple-touch-icon-60x60.png create mode 100644 pkgdown/favicon/apple-touch-icon-76x76.png create mode 100644 pkgdown/favicon/apple-touch-icon.png create mode 100644 pkgdown/favicon/favicon-16x16.png create mode 100644 pkgdown/favicon/favicon-32x32.png create mode 100644 pkgdown/favicon/favicon.ico diff --git a/.Rbuildignore b/.Rbuildignore index 06980339..a330f6f6 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -8,6 +8,7 @@ ^codecov\.yml$ ^docs$ ^_pkgdown\.yml$ +^pkgdown$ ^cran-comments\.md$ ^\.github$ ^revdep$ diff --git a/_pkgdown.yml b/_pkgdown.yml index 8bb0565e..4b40bcf8 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,12 +1,10 @@ url: https://tsibble.tidyverts.org template: + bootstrap: 5 + bootswatch: cosmo params: - bootswatch: cosmo ganalytics: UA-83007123-4 - docsearch: - api_key: b7cf533da009fba6bd7a07d530e0824e - index_name: tsibble development: mode: auto @@ -15,16 +13,16 @@ authors: Earo Wang: href: https://earo.me Di Cook: - href: http://dicook.org + href: https://www.dicook.org/ Rob Hyndman: - href: http://robjhyndman.com + href: https://robjhyndman.com/ Mitchell O'Hara-Wild: - href: http://mitchelloharawild.com + href: https://blog.mitchelloharawild.com/ reference: - title: Overview desc: > - Describes the key components underlying a **tsibble**, or `tbl_ts`: index, + Describes the key components underlying a **tsibble**, or `tbl_ts`: index, key, interval. contents: - tsibble-package @@ -43,9 +41,9 @@ reference: - title: Tsibble verbs desc: > Verbs that manipulate data in time-based context. Inspect implicit time - gaps with `has_gaps()`, `scan_gaps()`, `count_gaps()` and `fill_gaps()`. - `filter_index()` is a shorthand for filtering time index. `index_by()` and - `group_by_key()` create a grouped tsibble, or `grouped_ts`, but how the data + gaps with `has_gaps()`, `scan_gaps()`, `count_gaps()` and `fill_gaps()`. + `filter_index()` is a shorthand for filtering time index. `index_by()` and + `group_by_key()` create a grouped tsibble, or `grouped_ts`, but how the data looks remains unchanged. Both requires to work with other `tidyverse` verbs. contents: - has_gaps @@ -93,7 +91,7 @@ reference: desc: > Add **tsibble** support for custom index classes with `index_valid()` & `interval_pull()`. `build_tsibble()` provides low-level construction for - tsibble. Create a subclass of the tsibble with `new_tsibble()`. + tsibble. Create a subclass of the tsibble with `new_tsibble()`. contents: - index_valid - interval_pull @@ -126,6 +124,3 @@ navbar: href: articles/faq.html - text: News href: news/index.html - right: - - icon: fa-github fa-lg - href: https://github.com/tidyverts/tsibble diff --git a/pkgdown/favicon/apple-touch-icon-120x120.png b/pkgdown/favicon/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..49b80aff8a02791d8934b94126148cfa97cda846 GIT binary patch literal 10859 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 eLKRDtIRJl%alLM2__N?e0F>m_{VJYM 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 literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-76x76.png b/pkgdown/favicon/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..ae341620f15d80d7090546abf2427bbf28df4ebe GIT binary patch literal 6177 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 literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon.png b/pkgdown/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..00a07eddda6c42cbfb5ef05438fd37ba8df2cfbd GIT binary patch literal 10859 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 I|JZYX1HD&`p#T5? literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon-32x32.png b/pkgdown/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..b28cb27ad9ca10f18a02d914defcdc46982ed193 GIT binary patch literal 2307 zcmZ`)c{tOLAOEn)G09C-=8Rn1C?n_095YwQ3g6j=q!@-=8DWkj;magPDfD&CRi+%F z6kn{IDOVJ73#H_{{`~#%d)~+Ed0y}5^}OEC`=57;gPrAJ0T}@R01jJQp`ADg{Zo90 zI6WjX@*4-hzGgTx0AOZ7etGfy8Ir7=Z~zdg0syoG0NCSDv;_bNg#o}40RRm006>aT zz;ZO?3=R>omT2JMPZU2d%i=J+RBN0C?*f=#Qb5&@W$}c=lv<ORP5^eeiqr-bk00y>872p!M+2h$Pm}#ny_x> zxwAGRWg|@_%a83%7qHvQh5FECl$Ts-GcgXlL8uwX8Lt6xW8cBx9VW8rg7&2 zmI8WPAGB;C+&+I|I@eTgU0pm1j^xpvOvVW7k=+%7^3rDbU;Nlz%nyYl%zMPv!VrjW zGIw%u**ZkwYN?(CAo2`1zTNU@zT6$LXy@~j`YtumqDC>wmt-Sm<;r93rX$1G!MC;) zQb*ZJnPMQ3QQa$m88|n}F*r-@Zfsi1a!|#W50E(3OQUBsBuZJgw_{Pqqq`+P;(iW( z4p*H7VQP3#?!!;p>Ag17YFXj$WWqNT_4h_BVay7Gu5<`PWzmRbe_!ZXg5gf2jo{8Q zrj{oyQg_eBv(_p~TzIZYoEqbcBk`M*$pZZFUn2_Q(o$@9dSjr@ z=1|lM8PlXVehTAvx&zy(pe3`DE%6{iy6E5}i#Sa6?H(A+`N!;3CF_ewig{t#p#*z^ z1fQ*BL1}B3dU(e!dw41#)6BVZqMSA5&p>V-t^R44dQbY0@Cjk|);X@XWt5d|XyHh= z-qey-mCNcgUU-S2c2||$%oI}yJ{Bs{)CLZgf_%u9kC84I$_oWWj$E#jolGzlR|FG_ z4{vV>Rhm!KD~vzm?Wl=+4lFUcX<=KpH#7S0SW5YfJcn-gHBR?#ER1N46iyY}#R8(v z;=i^a)}xgrMwBC+Gu=I+a?Q=w-w2Wq%t{Rgl|$IdAO#JF8AK%|+gB7T`+`94*1XY>y{y!s%p*+uRZB>B zcO?AU@Yci9#_9;{CEVJgrxQ*es$m0BO82EB{Op%)>t6zgC%8DYZ#?3fZ5D}6 z0dDXo-gX!p!I6#g{PS+xs&bPImG^P@Q&j`fRw~vxp$lBbCcn) zp8!OA=YT(JS*V5{t%bv4;_?3m!au-oR(P&2?VHYc z$y9JO4zRkj5V~$ja?83ubbM8bO(MrZ(5|*ziJAwMW*dH6N3dFWIhRcN zGEbZkx>^-OZP@)ZCiL!+)Zp6>*t+oKzH(edgmIZ{OEQ|fizI*HVwNpK^rQ^La|0#A zYszO;R)5UsZ9Lq;K>y7|%dJ|1m%e(yKlc}hBBHNbe5%m8^W6McRiIf*QqrdtYM3CU zvXw`T$GpNZtTiH;FgQT}d3S7m9r3GU;cbSEiJRk;mo^5ISB2znB5`_x;{> z;xU*yRW*ETu*%o9zt9)`<(gLNmUi&bQTyDSeaQ7f9``^6XD6_#bC!64i7+#o$fkgx zm2SX@>&ZzosZr>C@40!pK6PEgr5;;et})xWUsl05mz2%@D)h&CBPwA1jxqA?Q@Ucwiam18~h#|dn9_7v6PYWi`9`m`Q(Z!bK1N(;#zqbjW&qB`k z3jZzFfbqW}>}i=pN?&;K1j4w!At*X?lW_Vs#DB_1GyljjW&c344auaT#LSpq4ol{@ zO9afTQpB$hFm?%XTaB*<6Nf$7_S6=BevG0RePd-R-e67SR>UHAQO+^^ZMX_t(Sj`Se? zK%Oy_%^IxitUJ@Jr-`4_m{7VmJ_W?CDyOAbopdaE7PmHy#gDVsl(&8 z4}t=zMhDt-H9fBNmnznr7p_dTaHEpFsNM#oU~dip2pB?F6UIq>X9U6k4l~e&sl#9f zFj(=JtLXm-t_G6*d?Nn8fStHn%@LfBbataUd4)qM!GS)0SG=Lr2#Pn5mOYyW{HEuplF(ICmEzz?+oo78|vxm>pIrO+e@=5 aw$TEXq(rEjsM9$d3&7gK4qc5R#Qz84wH`(Q literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon.ico b/pkgdown/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..63a7895a33e3b686843bbdf5c3ce5c5c03bc2d51 GIT binary patch literal 15086 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 bHLdne`hWTL4rh%il;~0Gek+%N_K=*u5 literal 0 HcmV?d00001 From 17fa66ad9a800668f44aba31a345f140146342cb Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 18:28:04 -0400 Subject: [PATCH 09/10] Removes a hack no longer required for roxygen 7.3.1 --- R/tsibble-package.R | 1 - 1 file changed, 1 deletion(-) diff --git a/R/tsibble-package.R b/R/tsibble-package.R index 469a9935..b3ee6fed 100644 --- a/R/tsibble-package.R +++ b/R/tsibble-package.R @@ -71,7 +71,6 @@ #' The tsibble package fully utilises the `print` method from the tibble. Please #' refer to [tibble::tibble-package] to change display options. #' -#' @aliases NULL tsibble-package #' @examples #' # create a tsibble w/o a key ---- #' tsibble( From df19e0432602580fab66d663b2394d86e983311e Mon Sep 17 00:00:00 2001 From: olivroy Date: Tue, 9 Apr 2024 18:40:23 -0400 Subject: [PATCH 10/10] Add codecov badge + `usethis::use_cran_badge()` [ci skip] --- README.Rmd | 3 ++- README.md | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.Rmd b/README.Rmd index 31321bff..68a47a4f 100644 --- a/README.Rmd +++ b/README.Rmd @@ -11,7 +11,8 @@ output: [![R-CMD-check](https://github.com/tidyverts/tsibble/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/tidyverts/tsibble/actions/workflows/R-CMD-check.yaml) -[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/tsibble)](https://cran.r-project.org/package=tsibble) +[![CRAN status](https://www.r-pkg.org/badges/version/tsibble)](https://CRAN.R-project.org/package=tsibble) +[![Codecov test coverage](https://codecov.io/gh/tidyverts/tsibble/branch/main/graph/badge.svg)](https://app.codecov.io/gh/tidyverts/tsibble?branch=main) diff --git a/README.md b/README.md index 6959e051..aa2288d1 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,10 @@ [![R-CMD-check](https://github.com/tidyverts/tsibble/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/tidyverts/tsibble/actions/workflows/R-CMD-check.yaml) -[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/tsibble)](https://cran.r-project.org/package=tsibble) +[![CRAN +status](https://www.r-pkg.org/badges/version/tsibble)](https://CRAN.R-project.org/package=tsibble) +[![Codecov test +coverage](https://codecov.io/gh/tidyverts/tsibble/branch/main/graph/badge.svg)](https://app.codecov.io/gh/tidyverts/tsibble?branch=main) The **tsibble** package provides a data infrastructure for tidy temporal