r-quantities/units

Release units 0.7-0

Closed this issue · 16 comments

I'll run a revdepcheck to see if any packages are still using the stuff dropped in #259, and notify the maintainers accordingly.

Revdep checks added. Packages affected:

I would like to address some more issues before submitting a new release to CRAN, so there will be plenty of time for those packages to merge the fixes and submit an update.

Prepare for release:

  • Update NEWS
  • urlchecker::url_check()
  • Check current CRAN check results
  • devtools::check(remote = TRUE, manual = TRUE)
  • rhub::check_for_cran()
  • devtools::check_win_devel()
  • revdepcheck::revdep_check(num_workers = 4)
  • Propose fixes or warn downstream maintainers.

@edzer This is ready for release. Affected downstream maintainers have been notified.

edzer commented

submitted ...

quantities and constants submitted too.

edzer commented

Revdep checks:



Dear maintainer,
 
package units_0.7-0.tar.gz has been auto-processed. The auto-check found problems when checking the first order strong reverse dependencies.
Please reply-all and explain: Is this expected or do you need to fix anything in your package? If expected, have all maintainers of affected packages been informed well in advance? Are there false positives in our results?
 
*** Changes to worse in reverse dependencies ***
Debian: <https://win-builder.r-project.org/incoming_pretest/units_0.7-0_20210221_112856/reverseDependencies/summary.txt>
 
Log dir: <https://win-builder.r-project.org/incoming_pretest/units_0.7-0_20210221_112856/>
The files will be removed after roughly 7 days.
 
Pretests:
Windows: <https://win-builder.r-project.org/incoming_pretest/units_0.7-0_20210221_112856/Windows/00check.log>
Debian: <https://win-builder.r-project.org/incoming_pretest/units_0.7-0_20210221_112856/Debian/00check.log>
 
Last published version on CRAN:
 
CRAN Web: <https://cran.r-project.org/package=units>
 
Best regards,
CRAN teams' auto-check service


Package check result: OK

Changes to worse in reverse depends:

Package: EmissV
Check: examples
New result: WARNING
  Found the following significant warnings:
  
    Warning: 'units::install_conversion_constant' is deprecated.
  Deprecated functions may be defunct as soon as of the next release of
  R.
  See ?Deprecated.

Package: eplusr
Check: tests
New result: ERROR
    Running ‘testthat.R’ [58s/45s]
  Running the tests in ‘tests/testthat.R’ failed.
  Complete output:
    > library(testthat)
    > library(eplusr)
    > eplusr_option(verbose_info = FALSE)
    $verbose_info
    [1] FALSE
    
    > 
    > test_check("eplusr")
    trying URL 'https://raw.githubusercontent.com/NREL/EnergyPlus/v9.4.0/idd/V8-8-0-Energy%2B.idd'
    Content type 'text/plain; charset=utf-8' length 4055399 bytes (3.9 MB)
    ==================================================
    downloaded 3.9 MB
    
    trying URL 'https://raw.githubusercontent.com/NREL/EnergyPlus/v9.4.0/idd/V8-9-0-Energy%2B.idd'
    Content type 'text/plain; charset=utf-8' length 4390209 bytes (4.2 MB)
    ==================================================
    downloaded 4.2 MB
    
    �� Skipped tests ���������������������������������������������������������������
    â—� On CRAN (72)
    â—� is_windows() is not TRUE (2)
    
    �� Failed tests ����������������������������������������������������������������
    ── Error (test-units.R:4:5): Units conversion ──────────────────────────────────
    Error: In 'person', 'person' is not recognized by udunits.
    
    See a table of valid unit symbols and names with valid_udunits().
    Custom user-defined units can be added with install_unit().
    
    See a table of valid unit prefixes with valid_udunits_prefixes().
    Prefixes will automatically work with any user-defined unit.
    Backtrace:
        â–ˆ
     1. ├─testthat::expect_equal(...) test-units.R:4:4
     2. │ └─testthat::quasi_label(enquo(object), label, arg = "object")
     3. │   └─rlang::eval_bare(expr, quo_get_env(quo))
     4. ├─units::set_units(1, "person")
     5. └─units:::set_units.numeric(1, "person")
     6.   ├─units::as_units(value, ...)
     7.   └─units:::as_units.character(value, ...)
     8.     └─units:::as_units.call(expr, check_is_valid = check_is_valid)
    
    [ FAIL 1 | WARN 1 | SKIP 74 | PASS 2062 ]
    Error: Test failures
    Execution halted

Package: hydrolinks
Check: dependencies in R code
New result: WARNING
  Missing or unexported object: ‘units::ud_units’

Package: quantities
Check: examples
New result: ERROR
  Running examples in ‘quantities-Ex.R’ failed
  The error most likely occurred in:
  
  > base::assign(".ptime", proc.time(), pos = "CheckExEnv")
  > ### Name: Extract.quantities
  > ### Title: Extract or Replace Parts of an Object
  > ### Aliases: Extract.quantities [.quantities [[.quantities [<-.quantities
  > ###   [[<-.quantities
  > 
  > ### ** Examples
  > 
  > x <- set_quantities(1:3, m/s, 0.1)
  > y <- set_quantities(4:6, m/s, 0.2)
  > (z <- rbind(x, y))
  Error in data.frame(val = as.numeric(x), from = I(units(x)), to = value,  : 
    'list' object cannot be coerced to type 'double'
  Calls: rbind -> rbind -> <Anonymous> -> data.frame
  Execution halted

Package: quantities
Check: Rd cross-references
New result: WARNING
  Missing link or links in documentation object 'units.Rd':
    ‘[units]{ud_units}’
  
  See section 'Cross-references' in the 'Writing R Extensions' manual.

Package: quantities
Check: re-building of vignette outputs
New result: WARNING
  Error(s) in re-building vignettes:
    ...
  --- re-building ‘introduction.Rmd’ using rmarkdown
  Quitting from lines 120-121 (introduction.Rmd) 
  Error: processing vignette 'introduction.Rmd' failed with diagnostics:
  ‘list’ object cannot be coerced to type ‘double’
  --- failed re-building ‘introduction.Rmd’
  
  --- re-building ‘parsing.Rmd’ using rmarkdown
  --- finished re-building ‘parsing.Rmd’
  
  SUMMARY: processing the following file failed:
    ‘introduction.Rmd’
  
  Error: Vignette re-building failed.
  Execution halted

Package: quantities
Check: tests
New result: ERROR
    Running ‘testthat.R’ [3s/3s]
  Running the tests in ‘tests/testthat.R’ failed.
  Complete output:
    > library(testthat)
    > library(quantities)
    Loading required package: units
    udunits database from /usr/share/xml/udunits/udunits2.xml
    Loading required package: errors
    > 
    > test_check("quantities")
    �� Failed tests ����������������������������������������������������������������
    ── Error (test-math.R:31:3): math methods work properly ────────────────────────
    Error: power operation only allowed with logarithmic unit
    Backtrace:
         â–ˆ
      1. ├─testthat::expect_warning(expect_errors(exp(x), exp(xval), errors(exp(xe)))) test-math.R:31:2
      2. │ └─testthat:::quasi_capture(enquo(object), label, capture_warnings)
      3. │   ├─testthat:::.capture(...)
      4. │   │ └─base::withCallingHandlers(...)
      5. │   └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))
      6. ├─quantities:::expect_errors(exp(x), exp(xval), errors(exp(xe)))
      7. │ └─testthat::expect_equal(class(x), "errors") helper-quantities.R:10:2
      8. │   └─testthat::quasi_label(enquo(object), label, arg = "object")
      9. │     └─rlang::eval_bare(expr, quo_get_env(quo))
     10. ├─quantities:::Math.quantities(x)
     11. │ └─quantities:::reclass(NextMethod())
     12. ├─base::NextMethod()
     13. └─units:::Math.units(x)
     14.   ├─quantities:::Ops.quantities(exp(1), x)
     15.   │ └─quantities:::reclass(NextMethod())
     16.   ├─base::NextMethod()
     17.   └─units:::Ops.units(exp(1), x)
    ── Error (test-misc.R:66:3): data frame coercion works properly ────────────────
    Error: 'list' object cannot be coerced to type 'double'
    Backtrace:
        â–ˆ
     1. ├─base::as.data.frame(cbind(x, y)) test-misc.R:66:2
     2. └─base::cbind(x, y)
     3.   └─quantities:::cbind(deparse.level, ...)
     4.     └─getS3method("set_units", "mixed_units")(dots, as.character(u))
     5.       └─base::data.frame(...)
    ── Error (test-misc.R:102:3): bind methods work properly ───────────────────────
    Error: 'list' object cannot be coerced to type 'double'
    Backtrace:
        â–ˆ
     1. └─base::rbind(x = a, y = a) test-misc.R:102:2
     2.   └─quantities:::rbind(deparse.level, ...)
     3.     └─getS3method("set_units", "mixed_units")(dots, as.character(u))
     4.       └─base::data.frame(...)
    ── Error (test-utils.R:30:3): dots are converted to the units of the first argument ──
    Error: no applicable method for 'units' applied to an object of class "list"
    Backtrace:
         â–ˆ
      1. ├─quantities:::expect_quantities(...) test-utils.R:30:2
      2. │ └─testthat::expect_equal(class(x), c("quantities", "units", "errors")) helper-quantities.R:3:2
      3. │   └─testthat::quasi_label(enquo(object), label, arg = "object")
      4. │     └─rlang::eval_bare(expr, quo_get_env(quo))
      5. └─base::cbind(x, y, x, y)
      6.   └─quantities:::cbind(deparse.level, ...)
      7.     └─getS3method("set_units", "mixed_units")(dots, as.character(u))
      8.       ├─base::data.frame(...)
      9.       ├─base::I(units(x))
     10.       │ └─base::unique.default(c("AsIs", oldClass(x)))
     11.       └─base::units(x)
    
    [ FAIL 4 | WARN 11 | SKIP 0 | PASS 457 ]
    Error: Test failures
    Execution halted

Package: traitdataform
Check: dependencies in R code
New result: WARNING
  Missing or unexported object: ‘units::parse_unit’

Package: yamlet [Old version: 0.6.9, New version: 0.6.10]
Check: examples
New result: WARNING
  Found the following significant warnings:
  
    Warning: 'install_symbolic_unit' is deprecated.
  Deprecated functions may be defunct as soon as of the next release of
  R.
  See ?Deprecated.

The warning in hydrolinks was not detected in my revdep checks. Email sent.

Hi @edzer. I am the maintainer of the {eplusr} package which depends on {units} package. I know that in v0.7-0, install_symbolic_unit() is deprecated. Since install_unit() function is newly introduced in v0.7-0 and v0.7-0 is not on CRAN, how can I use install_unit() in {eplusr}? I updated my code and submitted to CRAN, but got a warning:

* checking dependencies in R code ... WARNING
Missing or unexported object: ‘units::install_unit’

Thanks

edzer commented

Yes, sorry for the delay; it should now reach CRAN soon.

On CRAN now.

edzer commented

According to BDR, there's more fallout:


> Thanks, on its way to CRAN.
>
> Team, this causes changes to worse in:
> EmissV eplusr hydrolinks quantities traitdataform yamlet
>

And

EML constants magclass sen2r sf

but I am not seeing quantities which was updated recently.

And a different problem in ggforce from the one in R-devel previously.

All expected except for sen2r and sf. Will take a look.

edzer commented

I couldn't find anything for sf, except a deprecated install_symbolic_unit, that's resolved now.

sen2r uses ud_units, which was removed for good. A surprise, because revdep checks should have caught this one (unless there are tests that only run on CRAN). Anyway, reported here: https://github.com/ranghetti/sen2r/issues/390

A surprise, because revdep checks should have caught this one (unless there are tests that only run on CRAN).

Maybe this was not done because units is a suggested dependency, and ud_units() is called inside if (requireNamespace("units")). By the way, thanks for reporting that.