Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplified formatting for deppy.NotSatisfiable error #151

Open
m1kola opened this issue Oct 24, 2023 · 5 comments
Open

Simplified formatting for deppy.NotSatisfiable error #151

m1kola opened this issue Oct 24, 2023 · 5 comments
Labels
lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.

Comments

@m1kola
Copy link
Member

m1kola commented Oct 24, 2023

Today deppy.NotSatisfiable is being formated in a not very human friendly way: it is challenging to understand what exactly went wrong from the error message.

We need to explore error formatting options which:

  • Describes in natural language what went wrong
  • Does not include the description of the whole problem. Deppy (gini) already produces a minimised list of assumptions which together caused unsat - we need to keep this property.

This probably should be plugable.

@m1kola
Copy link
Member Author

m1kola commented Oct 24, 2023

I really like how pip does it. Few examples I found on the internet (probably from different pip versions):

pandas-profiling 3.6.1 requires numpy<1.24,>=1.16.0, but you have numpy 1.24.1 which is incompatible.
numba 0.54.1 requires numpy<1.21,>=1.17, but you have numpy 1.24.1 which is incompatible.

Or more complex one:

The conflict is caused by:
    The user requested six==1.10.0
    bcrypt 3.2.0 depends on six>=1.4.1
    cvxpy 1.0.25 depends on six
    django-anymail 0.5 depends on six
    django-compat 1.0.15 depends on six>=1.10.0
    django-extensions 2.2.1 depends on six>=1.2
    drf-yasg 1.16.1 depends on six>=1.10.0
    fake-factory 0.6.0 depends on six
    google-api-core 1.26.0 depends on six>=1.13.0

@m1kola
Copy link
Member Author

m1kola commented Oct 24, 2023

This repo with examples on how to format errors might be useful: https://github.com/perdasilva/deconflictor.

@m1kola
Copy link
Member Author

m1kola commented Nov 14, 2023

I updated the description of the issue beucase it was initially not factually true: I origianlly said that deppy.NotSatisfiable contains description of the whole problem. It is not true: Deppy (thanks to Gini) only produces a minimised list of assumptions which together caused unsat.

I think readability of deppy.NotSatisfiable will be greatly influenced by the approach taken to building the constraints on the users side (e.g. IDs used, and how dependencies structured).

@joelanford
Copy link
Member

IDs used

I think we have overlooked this particular aspect as well. We should define a standard for how to structure IDs and perhaps add a package (not sure where) to help users build IDs that will be easier to reason about.

Copy link

This issue has become stale because it has been open 60 days with no activity. The maintainers of this repo will remove this label during issue triage or it will be removed automatically after an update. Adding the lifecycle/frozen label will cause this issue to ignore lifecycle events.

@github-actions github-actions bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 15, 2024
@m1kola m1kola added lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Jan 15, 2024
@grokspawn grokspawn added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. labels Oct 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.
Projects
None yet
Development

No branches or pull requests

3 participants