# \[compat\] resolution logic; unsatisfiable requirement that should work?

**URL:** <https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855>\
**Category:** General Usage\
**Created:** [August 13, 2020, 6:03am UTC](https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855 "2020-08-13T06:03:36Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![BioTurboNick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bioturbonick/32/6380_2.png) [@BioTurboNick](https://discourse.julialang.org/u/BioTurboNick)\
**Post date:** [August 13, 2020, 6:03am UTC](https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855/1 "2020-08-13T06:03:36Z")

</div>

Summary of below: How do I resolve this [compat] and Manifest.toml conflict, and how do I keep it from happening again?

* * *

I have a package that depends on Distributions.jl. Currently its [compat] entry contains this:

```julia
[compat]
julia = "1"
Distributions="0.21"

```

The compat for Distributions.jl 0.21 is

```julia
[compat]
julia = "1"
SpecialFunctions = "0.8,0.9"

```

The compat for SpecialFunctions.jl is 0.9 is

```julia
[compat]
julia = "1"

```

As a result, my code ran on Julia 1 with Distributions.jl 0.21 and SpecialFunctions.jl 0.9.

Then I went to bump Distributions.jl up to 0.22 in my package’s compat entry. It’s compat entry adds SpecialFunctions.jl 0.10 but retains 0.8 and 0.9.

Now my package won’t run on Julia 1.0, says that there is an unsatisfiable requirement:

```julia
ERROR: Unsatisfiable requirements detected for package SpecialFunctions [276daf66]:
 SpecialFunctions [276daf66] log:
 ├─possible versions are: [0.7.0-0.7.2, 0.8.0, 0.9.0, 0.10.0-0.10.3] or uninstalled
 ├─restricted to versions 0.10.3 by an explicit requirement, leaving only versions 0.10.3
 └─restricted by julia compatibility requirements to versions: [0.7.0-0.7.2, 0.8.0] or uninstalled — no versions left

```

When I made this change locally, the only packages that upgraded were Distributions.jl (to 0.22.6) and SpecialFunctions.jl (to 0.10.3). While Distributions.jl 0.22 is fine with julia 1.0, SpecialFunctions.jl 0.10.3 requires julia 1.3.

In theory though it should be able to fall back to SpecialFunctions.jl 0.8.

I was trying to figure out where this requirement from coming from, and I see that Manifest.toml lists the specific version number for SpecialFunctions.jl as 0.10.3.

My questions then are:

- How do I resolve this issue so that it can run on Julia 1.0?
- Why did it occur, so that I can keep it from becoming an issue again?

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [August 13, 2020, 6:14am UTC](https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855/2 "2020-08-13T06:14:33Z")

</div>

> [@BioTurboNick](#):
>
> `restricted to versions 0.10.3 by an explicit requirement`

Did you by any chance pin to this version (`pinned = true` in the manifest) or edit the `Manifest.toml` directly? I would consider just deleting the whole `Manifest.toml` file and do a `pkg> resolve`, in case it got corrupted.

(Of course backup first if you ever need to reproduce that state if it is not in version control).

---

<div class="post-metadata">

**Author:** ![BioTurboNick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bioturbonick/32/6380_2.png) [@BioTurboNick](https://discourse.julialang.org/u/BioTurboNick)\
**Post date:** [August 13, 2020, 6:23am UTC](https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855/3 "2020-08-13T06:23:45Z")

</div>

Should I even have a Manifest.toml file? I noticed Distributions.jl doesn’t have one.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [August 13, 2020, 6:26am UTC](https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855/4 "2020-08-13T06:26:27Z")

</div>

> [@BioTurboNick](#):
>
> I was trying to figure out where this requirement from coming from, and I see that Manifest.toml lists the specific version number for SpecialFunctions.jl as 0.10.3.

In 1.0, the packages in the Project (the explicit dependencies) where kind of restricted in how their version was allowed to change. This has been changed in later Julia versions so the resolver in 1.0 can feel more restrictive.

---

<div class="post-metadata">

**Author:** ![BioTurboNick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bioturbonick/32/6380_2.png) [@BioTurboNick](https://discourse.julialang.org/u/BioTurboNick)\
**Post date:** [August 13, 2020, 6:40am UTC](https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855/5 "2020-08-13T06:40:36Z")

</div>

Thanks all. I deleted Manifest.toml, but it regenerated identically. So I added it to .gitignore and deleted it from the repository, and that worked!

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [August 13, 2020, 7:04am UTC](https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855/6 "2020-08-13T07:04:09Z")

</div>

The resolver will generate one for the _active_ project. I was assuming that you are working on your activated package.

---

<div class="post-metadata">

**Author:** ![BioTurboNick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bioturbonick/32/6380_2.png) [@BioTurboNick](https://discourse.julialang.org/u/BioTurboNick)\
**Post date:** [August 13, 2020, 12:55pm UTC](https://discourse.julialang.org/t/compat-resolution-logic-unsatisfiable-requirement-that-should-work/44855/7 "2020-08-13T12:55:01Z")

</div>

Yeah I was. I didn’t really know what the file was for.
