Skip to content

dsROCrate

0.2.4Package record

'DataSHIELD' RO-Crate Governance Functions

0packages depend
2.5Kdownloads / year
74.9%test coverage
12/13flavors OK

Overview

About

Tools for wrapping 'DataSHIELD' analyses into RO-Crate (Research Object Crate) objects. Provides functions to create structured metadata for federated data analysis projects, enabling governance tracking of data access, project membership, analysis execution and output validation across distributed data sources.

Changes in 0.2.4

Bug fixes

  • Fixed safe_output() reading Opal log timestamps in the local time zone instead of UTC. Opal returns UTC timestamps in ISO 8601 format (e.g., 2026-10-13T04:26:14.076Z); they are now parsed as UTC, including fractional seconds and Z/+hh:mm offsets. Previously, on machines whose time zone was not UTC, the logs_from/logs_to window could drop recent log entries (or include old ones).
  • Fixed safe_project() overwriting the user attribute stored in the returned RO-Crate: a loop variable shadowed the user argument.
  • Fixed table lineage links (isBasedOn) between tables and resources being written to rocrate$graph instead of ` rocrate$@graph `, so they are now recorded in the RO-Crate graph.
Show all changes in 0.2.4Hide the rest of the changes in 0.2.4
  • Fixed the symbol registry lookup so it always returns a single row when several symbols share the same created_at timestamp (dplyr::slice_max() now uses with_ties = FALSE).
  • report() (path method) now forwards max_line_length and ... to the RO-Crate method; previously max_line_length was silently ignored.
  • The error shown when the report directory does not exist now suggests mkdir -p (was mkdir -r).
  • audit() and extract_safe_project() (opal method) now read project names with $name, so they work whether backend_projects() returns a data frame or a tibble.

Changes

  • Timestamps written by safe_output() (the audit log tibble, the _mappings.csv file, and as.data.frame() of safe_call objects) are now ISO 8601 in UTC with a trailing Z (e.g., 2026-07-01T10:00:00Z). Code that compares these values as strings will need to be updated.
  • safe_output(): logs_from and logs_to accept POSIXct values or date-time strings, with or without a Z/UTC offset. Strings without an offset are interpreted as UTC, and Inf/-Inf still mean "no limit".
  • report() for a list of RO-Crates no longer has the unused study_name argument.

Documentation

  • Split the getting-started vignette into three. getting-started now covers connecting, check_permissions(), audit() and report(); the new building-crates vignette shows the step-by-step workflow with init() and the safe_*() functions (including saving the RO-Crate); and the new auditing-studies vignette shows how to audit several servers as one study.
  • audit-permissions vignette: explains how the permission check works, lists the common error messages with their likely causes, and gives the minimum Opal version (5.7.2).
  • deploy-local-datashield-server-with-opal vignette: corrected the clone directory, added the demo accounts, the Opal version requirement, an audit example and instructions to stop the server, and removed unused code.
  • Vignettes now only run their examples when the public Opal demo server can be reached; otherwise the code is shown but not evaluated.
  • README: added the supported-backend and requirements table, a guide on which function to use, check_permissions() in the quick start, and a list of all vignettes.
  • Reference documentation: the description of ... is now defined once (shared_params) and inherited by the functions, the documented default of user_id_suffix was corrected ("#person:"), the Opal-specific wording was removed from the profile argument, and stray formatting in the audit() documentation was fixed.
  • Updated spell-check WORDLIST.

Internal Changes

  • Added parse_utc(), parse_utc_limit(), format_utc() and fmt_limit() (utils-date.R) so that all timestamps are parsed and formatted the same way. They replace is_valid_posixct().
  • backend_logs() (opal method) now returns @timestamp as POSIXct (UTC) and suppresses the progress messages printed by opalr. Other backends are expected to return POSIXct timestamps.
  • Added tests for parse_utc(), run under a non-UTC time zone.
  • safe_output() tests covering RESOLVE/ASSIGN operations now set logs_from and logs_to explicitly, so they no longer depend on the time they are run.
  • Test mocks now use type = "group" for group permissions, matching the values returned by Opal, and the report() tests no longer pass study_name.
  • Rebuilt the vignettes against the current Opal demo server (6.0.1).

From NEWS.md in the release

Install

Health

CRAN checks
1ERROR12OK
Check messages
ERRORtestsr-patched-linux-x86_64
Running ‘testthat.R’ [8s/10s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > # This file is part of the standard setup for testthat.
  > # It is recommended that you do not modify it.
  > #
  > # Where should you do additional test configuration?
  > # Learn more about the roles of various files in:
  > # * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
  > # * https://testthat.r-lib.org/articles/special-files.html
  > 
  > library(testthat)
  > library(dsROCrate)
  > 
  > test_check("dsROCrate")
  Saving _problems/test-safe_output-252.R
  Saving _problems/test-safe_output-263.R
  Saving _problems/test-safe_output-324.R
  2 asset entities were found!
  1 asset entity was found!
  2 'File' entities were found!
  2 'File' entities were found!
  1 'File' entity was found!
  1 'File' entity was found!
  1 'File' entity was found!
  [1] "alice"
  2 'Author' entities were found!
  1 'Author' entity was found!
  1 'Author' entity was found!
  2 'Project'
...[truncated]...
", "ASSIGN")`.
  Differences:
  `actual` is NULL
  `expected` is a character vector ('OPEN', 'RESOLVE', 'ASSIGN')
  
  ── Error ('test-safe_output.R:254:3'): safe_output captures RESOLVE and ASSIGN operations independently ──
  Error in `UseMethod("filter")`: no applicable method for 'filter' applied to an object of class "NULL"
  Backtrace:
      ▆
   1. ├─testthat::expect_equal(...) at test-safe_output.R:254:3
   2. │ └─testthat::quasi_label(enquo(object), label)
   3. │   └─rlang::eval_bare(expr, quo_get_env(quo))
   4. ├─dplyr::select(...)
   5. └─dplyr::filter(mappings, action == "RESOLVE")
  ── Error ('test-safe_output.R:323:3'): safe_output retains RESOLVE operations without ASSIGN ──
  Error in `UseMethod("filter")`: no applicable method for 'filter' applied to an object of class "NULL"
  Backtrace:
      ▆
   1. └─dplyr::filter(mappings, action == "RESOLVE") at test-safe_output.R:323:3
  
  [ FAIL 3 | WARN 0 | SKIP 36 | PASS 251 ]
  Error:
  ! Test failures.
  Execution halted

CRAN check page ↗

Slowest check: 4.8 min · r-release-macos-x86_64
Status changes
  • ERROR12 OK, 1 ERRORNow
  • ERROR11 OK, 2 ERROR2026-09-26
  • OK13 OK2026-09-18
  • ERROR10 OK, 3 ERROR2026-09-12
  • OK13 OK2026-08-26
  • ERROR10 OK, 3 ERROR2026-08-21
Show 9 earlier changesHide 9 earlier changes
  • OK13 OK2026-08-05
  • NOTE12 OK, 1 NOTE2026-08-01
  • OK13 OK2026-06-06
  • ERROR12 OK, 1 ERROR2026-06-05
  • OK13 OK2026-05-12
  • ERROR12 OK, 1 ERROR2026-05-09
  • OK13 OK2026-04-29
  • ERROR10 OK, 2 ERROR2026-04-27
  • OK8 OK2026-04-22
Advisories

none known

Documentation

In release 0.2.4
READMEYes · 567 wordsVignettesYes · 5 · evaluation depends on the environmentNEWSYes · 100% structured · mentions 0.2.4Citation fileYes · computed when R runs it
Help pages
12 (2 internal)includes a package overview page
Examples that run
0%1 never run
Exported functions with examples
10%
Documented parameters
95%
Return-value docs
100%
Help pages citing references
8%

Downloads

2.5K
CRAN downloads in the past year
Rank #9,114 · ~7/day · ~205/mo
Daily download trend is not available in this view yet.
50230 days
1K90 days
2.5K1 year
Compare downloads with other packages →
Also on74 r2u

Repository

0Stars
0Forks
7Open issues
0Open PRs
8Releases
691Commits
2Commit identities
691 commits · Last activity 2026-10-19 · The default branch showed an older version (0.2.3) than CRAN on 2026-10-18
Responsiveness
How these are sampled
PRs merged (all time)
100%
Median days to close, 50 most recently updated closed issues
2
Median days to close, 50 most recently updated closed PRs
0

Releases over time

2026-04-16 · 12026-10-19 · 8
PracticesBeta

7 development-tooling and community-health practices detected across 3 families in the upstream repository

Checks run against github.com/federatedmethods/dsrocrate on 2026-10-18.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel

Docs source (4)
README.Rmdpkgdown

GitHub Pages site last deployed 2026-09-24 · The repository has a site deploy workflow

Coverage (1)
Coverage reporting
How this is detected·Detection ruleset v3 (2026-09-26)

Dependencies

Declared dependencies
22 external dependencies (excludes base and recommended)

Installing dsROCrate adds 95 packages (49 with compiled code, 69 MB of source tarballs). Heaviest: stringi 11 MB, bslib 5.6 MB, igraph 4.8 MB.

Depends (1)
R >= 4.1.0
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

People & History

People (5)
Author, Maintainer since 0.0.1 (2026)
Copyright holder
Releases (8)

Pick two releases to compare their code metrics.

  • 0.2.4Latest
    record
    2026-10-16 · current release · diff ↗ ·
    19 hours in CRAN's queue
    Listed in CRAN's incoming queue from 2026-10-15 12:21 to 2026-10-16 07:45 UTC, in 6 readings.
  • 0.2.3
    record
    2026-09-24 · diff ↗
  • 0.2.2
    record
    2026-08-21 · diff ↗
  • 0.2.1
    record
    2026-07-30 · diff ↗
  • 0.2.0
    record
    2026-07-26 · diff ↗
  • 0.1.0
    record
    2026-06-01 · diff ↗ ·
    added 1 export
    check_permissions
  • 0.0.2
    record
    2026-04-27 · diff ↗
  • R
    R 4.6.0 released · 2026-04-24
  • 0.0.1
    record
    2026-04-21
  • R
    R 4.5.0 released · 2025-04-11
Across CRAN, the median accepted release of the past year spent 23 hours in the queue, 90% under 11 days.How queue time is measured

Package metadata

First published
2026-04-21
Total releases
8 / 1 yrs
License
MIT + file LICENSE OSI
Minimum R
≥ 4.1.0
Download size
1.5 MB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("dsROCrate")

The package provides a citation file that builds its entry when R runs it. Run citation() to see it.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for dsROCrate version 0.2.4 [Data set]. HJJB, LLC. Data release v2026-10-21. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-21, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy