# \[ANN\]: PkgVersionHelper.jl - check if your \[deps\] packages are up to date

**URL:** <https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722>\
**Category:** Package Announcements\
**Created:** [August 29, 2020, 5:04am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722 "2020-08-29T05:04:40Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [August 29, 2020, 5:04am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/1 "2020-08-29T05:04:41Z")

</div>

See [GitHub - xiaodaigh/PkgVersionHelper.jl](https://github.com/xiaodaigh/PkgVersionHelper.jl)

When developing packages, I often wonder _Do I have the latest version of XYZ.jl?_ and then going to the github repo to check.

Now I can skip that step and just use

```julia
using PkgVersionHelper
upcheck()

```

This will look at my current environment’s Project.toml and return a

```
`Dict{String, Tuple{VersionNumber, VersionNumber}}`

```

where each key-value pair is

```
`PkgName => (installed_version, latest_version)`

```

if and only if `latest_version > installed_version`.

For example, this is the result of one of my runs:

```julia
julia> upcheck()
Dict{String,Tuple{VersionNumber,VersionNumber}} with 2 entries:
  "ScientificTypes" => (v"0.8.1", v"1.0.0")
  "MLJBase" => (v"0.14.9", v"0.15.0")

```

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [August 29, 2020, 6:38am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/2 "2020-08-29T06:38:55Z")

</div>

Are you looking at `[compat]` specifications? At first glance it didn’t seem to be something that you’re considering

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [August 29, 2020, 6:49am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/3 "2020-08-29T06:49:57Z")

</div>

I think I see what you mean. I check for all installed packages not just those in compat. For me everything is in compat with an upper-bound. So they happened to be the same thing.

My description is not 100% accurate for the general case. Only for my case. OH well, there is always 0.1.1 when this gets registered.

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [August 29, 2020, 7:38am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/4 "2020-08-29T07:38:29Z")

</div>

What I mean is this: suppose I create a package `abcd` with a `Project.toml` that lists

```julia
[deps]
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"

[compat]
Documenter = "0.24"

```

Now if I run `upcheck`, I find

```julia
(@v1.5) pkg> activate .
 Activating environment at `~/Dropbox/JuliaPackages/abcd/Project.toml`

(abcd) pkg> st
Project abcd v0.1.0
Status `~/Dropbox/JuliaPackages/abcd/Project.toml`
  [e30172f5] Documenter v0.24.11

julia> using PkgVersionHelper

julia> upcheck()
Dict{String,Tuple{VersionNumber,VersionNumber}} with 1 entry:
  "Documenter" => (v"0.24.11", v"0.25.2")

```

I would have expected `Documenter` to be limited to `0.24` versions as `0.25` is a breaking change. Is this something that you’ll consider? Perhaps there might be an `breaking = false` keyword argument that one might pass to `upcheck`?

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [August 29, 2020, 7:44am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/5 "2020-08-29T07:44:28Z")

</div>

I could. Also PR welcome. But finding breaking changes was my use case actually. I want to support them.

For me, I just do `] up` to update to max of non-breaking anway.

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [August 29, 2020, 8:34am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/6 "2020-08-29T08:34:04Z")

</div>

In a sense therefore this is a simpler alternative to `CompatHelper`?

---

<div class="post-metadata">

**Author:** ![heliosdrm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/heliosdrm/32/3851_2.png) [@heliosdrm](https://discourse.julialang.org/u/heliosdrm)\
**Post date:** [August 29, 2020, 8:41am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/7 "2020-08-29T08:41:10Z")

</div>

I’d say that rather than a simpler alternative to CompatHelper, it’s a tool that you can use locally for similar purposes (CompatHelper is primarily meant to interact with GitHub).

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [August 29, 2020, 9:21am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/8 "2020-08-29T09:21:04Z")

</div>

In my case, CompatHelper.jl helps but is not a magic bullet. For example, I got alerted to one of my MLJ dependency was outdated. Cool. So let me test out if I can support it. But then I can’t upgrade to it since it’s blocked by another dependency.

Two weeks later when I want to look at the problem again. I would have forgotten about the CompatHelper PR. So a tool like this would be invaluable to help me discover what I need to update.

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [August 31, 2020, 4:27pm UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/9 "2020-08-31T16:27:55Z")

</div>

I noticed that currently this warns about a package not being registered even for stdlib entries. I wonder if there’s a way to confirm if a package is in stdlib and ignore version checking for these?

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [August 31, 2020, 5:13pm UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/10 "2020-08-31T17:13:45Z")

</div>

If you are wild enough to rely on Pkg internals you can do

```julia
julia> Pkg.Types.is_stdlib(UUID("9a3f8284-a2c9-5f02-9a11-845980a1fd5c"))
true

```

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [August 31, 2020, 6:09pm UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/11 "2020-08-31T18:09:11Z")

</div>

There aren’t too many stdlib packages. I’d suggest probably just make that list by hand and add them as exclusions.

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [September 1, 2020, 12:37am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/12 "2020-09-01T00:37:53Z")

</div>

> [@jishnub](#):
>
> ignore version checking for these?

version 0.1.1. PR welcome.

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [September 1, 2020, 12:38am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/13 "2020-09-01T00:38:04Z")

</div>

> [@tbeason](#):
>
> ’d suggest probably just make that list by hand and add them as exclusions.

exactly.

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [September 1, 2020, 2:37am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/14 "2020-09-01T02:37:57Z")

</div>

> [@xiaodai](#):
>
> version 0.1.1. PR welcome.

fixed in latest update. Will push 0.1.1 once 0.1 is registered

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [September 1, 2020, 7:05am UTC](https://discourse.julialang.org/t/ann-pkgversionhelper-jl-check-if-your-deps-packages-are-up-to-date/45722/15 "2020-09-01T07:05:11Z")

</div>

They change between different versions of Julia, I wouldn’t do that
