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

Receiving "error loading dependencies" message; actual problem is unclear #125

Closed
jwhendy opened this issue Sep 1, 2017 · 54 comments
Closed

Comments

@jwhendy
Copy link

jwhendy commented Sep 1, 2017

Here is a minimal example after doing some trial and error to pin it down:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import dash
import dash_core_components as dcc
import dash_html_components as html


def generate_inputs():

    in_a_lab = html.Label('input a')
    in_a = dcc.Input(type='number',
                      value=1)
    
    in_b = [html.Label(html.Strong('input b')),
            dcc.Input(type='number', value=1)]

    inputs = [in_a_lab, in_a]

    # uncomment this line to cause error
    # inputs = [in_a_lab, in_a, in_b]

    return inputs

app = dash.Dash()
app.layout = html.Div([
    # switch the comment on these lines to cause an error
    html.Div(generate_inputs())
    # generate_inputs()
]) # app.layout


if __name__ == '__main__':
    app.run_server(debug=True)                        

I started on the path of python3, but ran into some dependency hell on Ubuntu 16.04, so I reinstalled with python2. This created what I believe to be some actual dependency issues around urllib3 and chardet. I was getting dependency warnings about the wrong versions on the command line when I would do python2 app.py.

With those solved, the command line looked fine, but I'd get this in the browser:

2017-09-01_152848

I was in the process of building some ui elements and doing them in pairs, with a label and then matching input. Then I wanted to switch to a list of the label and pair together. I realized I was sending back a nested list (the above would generated something like [in_a_lab, in_a, [in_b_lab, in_b]]). So, that was a definite issue, but I wouldn't expect the result to be error loading dependencies.

On accident I found that without wrapping the function return in html.Div() I'm also getting the same error.

This is probably an issue on my part with something I don't understand about dash (totally likely; I'm all of 2-3 hours into playing with it). That said, if this is isn't really a "dependency error," might there be room improving the error message? From what I'm seeing, this strikes me as more of a syntax error, or something like "expected blah object, got blah instead"?

Thanks for taking a look.

@chriddyp
Copy link
Member

chriddyp commented Sep 4, 2017

Yeah, this is a really bad error message. In fact, dependencies in this case doesn't even refer to the python dependencies, it refers to an underling /_dash-dependencies API endpoint... 🤕

@jasper-muller
Copy link

Got the same issue here. Installed dash using

pip install dash
pip install dash-renderer
pip install dash-html-components
pip install dash-core-components
pip install plotly --upgrade

Next, I followed the scatterplot example in the getting started guide: https://plot.ly/dash/getting-started

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd

app = dash.Dash()

df = pd.read_csv(
    'https://gist.githubusercontent.com/chriddyp/' +
    '5d1ea79569ed194d432e56108a04d188/raw/' +
    'a9f9e8076b837d541398e999dcbac2b2826a81f8/'+
    'gdp-life-exp-2007.csv')


app.layout = html.Div([
    dcc.Graph(
        id='life-exp-vs-gdp',
        figure={
            'data': [
                go.Scatter(
                    x=df[df['continent'] == i]['gdp per capita'],
                    y=df[df['continent'] == i]['life expectancy'],
                    text=df[df['continent'] == i]['country'],
                    mode='markers',
                    opacity=0.7,
                    marker={
                        'size': 15,
                        'line': {'width': 0.5, 'color': 'white'}
                    },
                    name=i
                ) for i in df.continent.unique()
            ],
            'layout': go.Layout(
                xaxis={'type': 'log', 'title': 'GDP Per Capita'},
                yaxis={'title': 'Life Expectancy'},
                margin={'l': 40, 'b': 40, 't': 10, 'r': 10},
                legend={'x': 0, 'y': 1},
                hovermode='closest'
            )
        }
    )
])

if __name__ == '__main__':
    app.run_server()

Which results in the following output in my terminal:

 * Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)
127.0.0.1 - - [22/Sep/2017 16:42:18] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2017 16:42:18] "GET /_dash-layout HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2017 16:42:18] "GET /_dash-dependencies HTTP/1.1" 200 -

And in my browser:
screen shot 2017-09-22 at 16 56 52

I'm running this from a virtual environment with the following packages installed:

alabaster==0.7.10
appnope==0.1.0
astroid==1.5.3
Babel==2.3.4
bleach==1.5.0
bumpversion==0.5.3
certifi==2017.7.27.1
chardet==3.0.4
click==6.7
cycler==0.10.0
dash==0.18.3
dash-core-components==0.12.6
dash-html-components==0.7.0
dash-renderer==0.10.0
decorator==4.1.2
docutils==0.13.1
eneco==1.0.0
entrypoints==0.2.3
et-xmlfile==1.0.1
Flask==0.12.2
Flask-Compress==1.4.0
Flask-SeaSurf==0.2.2
hmmlearn==0.2.0
html5lib==0.9999999
idna==2.6
imagesize==0.7.1
ipykernel==4.6.1
ipython==6.1.0
ipython-genutils==0.2.0
isort==4.2.9
itsdangerous==0.24
jdcal==1.3
jedi==0.10.2
Jinja2==2.9.6
jsonschema==2.6.0
jupyter-client==5.1.0
jupyter-core==4.3.0
lazy-object-proxy==1.3.0
line-profiler==2.0
MarkupSafe==1.0
matplotlib==2.0.2
mccabe==0.6.1
mistune==0.7.4
nb-conda==2.2.0
nb-conda-kernels==2.1.0
nbconvert==5.2.1
nbformat==4.4.0
notebook==5.0.0
numpy==1.12.1
numpydoc==0.7.0
openpyxl==2.4.8
pandas==0.20.1
pandocfilters==1.4.1
patsy==0.4.1
pep8==1.7.0
pexpect==4.2.1
pickleshare==0.7.3
plotly==2.0.15
prompt-toolkit==1.0.14
psutil==5.2.1
ptyprocess==0.5.2
pyflakes==1.5.0
Pygments==2.2.0
pylint==1.7.1
pyparsing==2.2.0
python-dateutil==2.6.1
python-dotenv==0.6.4
pytz==2017.2
pyzmq==16.0.2
QtAwesome==0.4.4
qtconsole==4.3.0
QtPy==1.2.1
requests==2.18.4
rope==0.10.5
scikit-learn==0.18.2
scipy==0.19.0
seaborn==0.7.1
simplegeneric==0.8.1
six==1.11.0
snowballstemmer==1.2.1
Sphinx==1.6.3
sphinxcontrib-websupport==1.0.1
spyder==3.1.4
statsmodels==0.8.0
terminado==0.6
testpath==0.3
tornado==4.5.1
tqdm==4.17.0
traitlets==4.3.2
typing==3.6.1
urllib3==1.22
wcwidth==0.1.7
webencodings==0.5
Werkzeug==0.12.2
wrapt==1.10.8
xlrd==1.0.0
XlsxWriter==0.9.8

@jasper-muller
Copy link

I'm embarrassed to say that it turned out to be my ad blocker that was causing the problem.

Disabling ad block solved my issue.

@abieler
Copy link

abieler commented Oct 2, 2017

I do get the same error every once in a while. It is not reproducible in my case as it suddenly starts/stops working without changing the code or anything. I first thought it is a browser problem as it initially happened only on Firefox and Chrome was fine. Happens on Chrome now too.

@jwhendy
Copy link
Author

jwhendy commented Oct 2, 2017

@abieler and @jasper-muller did you try my example above? I'm curious if it reproduces for either of you, or if it's possibly an ad blocker (which I also use) or sporadic/browser related.

In my experience, it was reproducible by toggling the called out comment lines.

@jmineraud
Copy link

I have been running into the same issue while trying to follow the tutorial at . I am using virtualenv with Python 3 and I have install only the libraries required by Dash. I have tried to run from the same environment the example from and it works fine. So I believe, when I run python usage.py that the error loading dependencies message occurs when loading my example component (straight from the archetype, v0.2.11). Is there a way to do a quick fix that would enable me to load my custom component dependency ?

@jmineraud
Copy link

I would like to add that npm run demo seems to work fine

@jasper-muller
Copy link

@jwhendy tried your example and get the same error as you are getting: Error loading dependencies.

@abieler
Copy link

abieler commented Oct 4, 2017

@jwhendy the issue is how you stack your input lists.
Doing

    inputs = [in_a_lab, in_a]
    inputs.extend(in_b)

works for me.
In your solution inputs is a nested list, where with this one here it is a plain list.
That said, the error message is not ideal.

@jwhendy
Copy link
Author

jwhendy commented Oct 4, 2017

@abieler Agreed. Note this from my original post:

I realized I was sending back a nested list (the above would generated something like [in_a_lab, in_a, [in_b_lab, in_b]]). So, that was a definite issue, but I wouldn't expect the result to be error loading dependencies.

and

That said, if this is isn't really a "dependency error," might there be room improving the error message?

This issue is about what I see as some sort of "blanket" error message that isn't accurate or very helpful in debugging. So, yes, I passed a nested list. "Error loading dependencies" had very little chance in helping me find that out (being new).

I brought this issue forward so that the developers who know the internals of dash might be able to send back a message that more accurately describes what's wrong.

@abieler
Copy link

abieler commented Oct 5, 2017

lol thats what I get for not reading through the whole post :)

@jwhendy
Copy link
Author

jwhendy commented Oct 5, 2017

@abieler It's all good, and I actually forgot why I wanted you to replicate... I was noting that @jasper-muller found the issue related to adblock, and you said it was sporadic. I just wanted to make sure this wasn't on my end, as I wasn't experiencing it as sporadic. Thanks!

@astratis
Copy link

Not an optimal solution but worked for me after installing again dash, hope it helps.

@tuckergordon
Copy link

Wanted to follow-up that I think I'm having an issue similar to @jmineraud in that I'm trying to follow this tutorial to create a custom component and run it within a multi-page app. Unfortunately, I'm getting the "Error loading dependencies" message. I've made sure to include the component in app.layout to ensure that Dash sees it when looking for depencies and to avoid the known issue.

Any ideas as to what could be going wrong?

@chriddyp
Copy link
Member

Unfortunately, I'm getting the "Error loading dependencies" message. I've made sure to include the component in app.layout to ensure that Dash sees it when looking for depencies and to avoid the known issue.

Are there any errors in the console? Do you have a github repo that we can use to try to replicate the issue? Are you serving the assets locally with app.scripts.config.serve_locally=True?

@tuckergordon
Copy link

Oh yup that was the issue! Forgot to add app.scripts.config.serve_locally=True. Thanks!

@phoenixAja
Copy link

I've made sure to include the component in app.layout to ensure that Dash sees it when looking for depencies and to avoid the known issue.
@tuckergordon can you elaborate on this?

I am trying to work through the tutorial and when I try to run any of the apps in the tutorial I run into an "error loading layout" which looks just like the above "error loading dependencies" issue. For reference I can see the apps when I publish them locally but when I try to run them in a docker container I run into the above issue.. Can anyone help me find out what's going on?

@mjmoon
Copy link

mjmoon commented Mar 1, 2018

I am trying to work through the tutorial and when I try to run any of the apps in the tutorial I run into an "error loading layout" which looks just like the above "error loading dependencies" issue. For reference I can see the apps when I publish them locally but when I try to run them in a docker container I run into the above issue.. Can anyone help me find out what's going on?

I am running into the same issue as @phoenixAja . I am pretty new to Dash and Docker as well... Can anyone help?

@Josh-Woodcock
Copy link

Had same problem. Wasn't loading in Firefox but worked fine in Chrome. It was due to the Privacy Badger add-on.

The font of "Hello Dash" changed to the default, but I assume that can be fixed.

image

@DBCerigo
Copy link

DBCerigo commented Mar 28, 2018

Just for anyone else googling out there:
Another possible cause for the error might be that you have a circular cycle in your set of callbacks i.e. callbacks that trigger themselves in a loop (embarrassing...). Check JS console for something like Error: Dependency Cycle Found:....

@DSadhana
Copy link

DSadhana commented Apr 1, 2018

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

app.layout = html.Div(children=[html.H1('Hello World')])

if name=='main':
app.run_server(debug=True)

I'm running this module on spyder IDE but it is not launching any browser. So can anyone help plz. It's urgent.

@ned2
Copy link
Contributor

ned2 commented Apr 3, 2018

@DSadhana, running a Dash app won't automatically launch a browser; you need to enter the URL that the server starts up on yourself. When running on your local machine, by default, this will be http://localhost:8050

If you're still stuck, I'd recommend posting your question on the Dash Community forum, as this sounds more like a question about Dash usage than a bug report. Someone there should be able to help you.

@DSadhana
Copy link

DSadhana commented Apr 3, 2018

@ned2 , thank you for the guidance . It worked by entering the URL.

@iampotential
Copy link

For me my "error loading dependencies" appeared to be because my computer (windows7(dont laugh im new)) was opening the cmd prompt in the wrong directory. Once i restarted a few times it opened in its normal directory and the error went away. If someone with more experience might be able to clarify what i mean.

@chriddyp
Copy link
Member

chriddyp commented Jun 8, 2018

Updates

We're launching a new initiative "Dash: A Pleasant and Productive Development Experience" and an organization has stepped up to help sponsor this development 🙇 .

There are many causes for this issue and our goal with this initiative is to fix all possible causes of this issue.

I believe that the main cause is component property values that aren't the correct type. It's an easy error to make because we currently don't do any typechecking. We have an issue for component property type checking here: #264 .

If there are any other causes of this issue, please create a new issue with a small, reproducable example. We'll get it done!

I'll leave this issue open until we've solved all possible causes of this issue.

Thank you everyone ❤️

@rmarren1
Copy link
Contributor

@nscuro What version were you using before? That PR shouldn't have really fixed it, it should just tell you what the problem is

@nscuro
Copy link

nscuro commented Nov 11, 2018

@rmarren1 I am not at my work place right now so I can't provide exact version numbers, but I used the versions that were "latest stable" at that time (November 9th). I was baffled myself tbh, which is why I commented here.

@ahbubne
Copy link

ahbubne commented Nov 16, 2018

Hello,

I have tried the code from Plotly ( make your first app) , same mentioned as @jasper-muller
and I am still getting "Error loading dependencies"

I have the following installed:
pip install dash==0.29.0
pip install dash-html-components==0.13.2
pip install dash-core-components==0.38.0
pip install dash-table==3.1.5

Also have deleted all the ad-blockers or any other extensions on chrome. ( Windows PC)

Any other pointers how to resolve the issue ?

Edited: I also reinstalled everything on my friends laptop ( Linux) and shows the same error on all the browsers.

I am using anaconda navigator's Jupyter notebook , it that the problem ?

I was able to resolve this. The problem is , the Dash tutorial page mentions that when you download

pip install dash==0.29.0
pip install dash-html-components==0.13.2
pip install dash-core-components==0.38.0

the plotly 3.0 will get installed . But when you install the above components you get plotly 2.0 and have to separately update it.

I did that and the issue was fixed.

@nanominimax
Copy link

I had the same issue of 'Error loading dependencies'. It was resolved by updating requirements doc with latest versions for all the modules. My list:
certifi==2019.3.9
chardet==3.0.4
click==6.7
dash==0.40.0
dash-core-components==0.45.0
dash-html-components==0.15.0
dash-renderer==0.21.0
decorator==4.3.0
Flask==1.0.2
Flask-Compress==1.4.0
gunicorn==19.8.1
idna==2.7
ipython-genutils==0.2.0
itsdangerous==0.24
Jinja2==2.10
jsonschema==2.6.0
jupyter-core==4.4.0
MarkupSafe==1.0
nbformat==4.4.0
pandas==0.24.2
plotly==3.7.1
pytz==2018.5

six==1.11.0
traitlets==4.3.2

Werkzeug==0.14.1

@ytalhatamer
Copy link

Had the same problem.
Like @nanominimax said, updating the dependencies solved the problem.

@sorenwacker
Copy link

A hint of what is going wrong would be nice.

@alexcjohnson
Copy link
Collaborator

@soerendip is your app running with debug=True? In recent Dash versions we've tried to provide more error information alongside the "error loading dependencies" case, but for security purposes we only do this in debug mode.

@Keou0007
Copy link

Keou0007 commented Oct 25, 2020

This is causing me a lot of headaches right now. I'm trying to figure out how to get pattern matching callbacks working and the todo list example in the docs gives me an "error loading dependencies" blank page.

@alexcjohnson with debug=True on, where is the error information supposed to be printed?

I setup the environment fresh in anaconda with conda create -n dash python=3.8 dash, copy the code into a file and run it, so it's not like I'm doing anything strange here.

code copy-pasted from the docs
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State, MATCH, ALL

app = dash.Dash(__name__,)

app.layout = html.Div([
    html.Div('Dash To-Do list'),
    dcc.Input(id="new-item"),
    html.Button("Add", id="add"),
    html.Button("Clear Done", id="clear-done"),
    html.Div(id="list-container"),
    html.Div(id="totals")
])

style_todo = {"display": "inline", "margin": "10px"}
style_done = {"textDecoration": "line-through", "color": "#888"}
style_done.update(style_todo)


@app.callback(
    [
        Output("list-container", "children"),
        Output("new-item", "value")
    ],
    [
        Input("add", "n_clicks"),
        Input("new-item", "n_submit"),
        Input("clear-done", "n_clicks")
    ],
    [
        State("new-item", "value"),
        State({"index": ALL}, "children"),
        State({"index": ALL, "type": "done"}, "value")
    ]
)
def edit_list(add, add2, clear, new_item, items, items_done):
    triggered = [t["prop_id"] for t in dash.callback_context.triggered]
    adding = len([1 for i in triggered if i in ("add.n_clicks", "new-item.n_submit")])
    clearing = len([1 for i in triggered if i == "clear-done.n_clicks"])
    new_spec = [
        (text, done) for text, done in zip(items, items_done)
        if not (clearing and done)
    ]
    if adding:
        new_spec.append((new_item, []))
    new_list = [
        html.Div([
            dcc.Checklist(
                id={"index": i, "type": "done"},
                options=[{"label": "", "value": "done"}],
                value=done,
                style={"display": "inline"},
                labelStyle={"display": "inline"}
            ),
            html.Div(text, id={"index": i}, style=style_done if done else style_todo)
        ], style={"clear": "both"})
        for i, (text, done) in enumerate(new_spec)
    ]
    return [new_list, "" if adding else new_item]


@app.callback(
    Output({"index": MATCH}, "style"),
    [Input({"index": MATCH, "type": "done"}, "value")]
)
def mark_done(done):
    return style_done if done else style_todo


@app.callback(
    Output("totals", "children"),
    [Input({"index": ALL, "type": "done"}, "value")]
)
def show_totals(done):
    count_all = len(done)
    count_done = len([d for d in done if d])
    result = "{} of {} items completed".format(count_done, count_all)
    if count_all:
        result += " - {}%".format(int(100 * count_done / count_all))
    return result


if __name__ == "__main__":
    app.run_server(debug=True)

Output:

Dash is running on http://127.0.0.1:8051/

 * Serving Flask app "example" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on

image

$ conda list dash*
dash                      1.16.3                     py_0  
dash-core-components      1.3.1                      py_0  
dash-html-components      1.0.1                      py_0  
dash-renderer             1.1.2                      py_0  
dash-table                4.4.1                      py_0  
$ conda list plotly
plotly                    4.11.0                     py_0  

@jwhendy
Copy link
Author

jwhendy commented Oct 25, 2020

@Keou0007 I can't reproduce. I have never used dash on the windows side of my computer (I dual boot and happy to be in windows at the moment), just did pip install --user dash dash_core_dependencies dash_html_dependencies, copy/pasted that todo app to todo.py and python todo.py works for me.

Could you attach the full output of conda list and pip freeze to verify other dependencies? I would first remove environment concerns (no conda, no virtualenv), and then try some of the other examples, or strip out elements of the todo app until you narrow down the cause. Why is your port 8051, out of curiosity?

@sorenwacker
Copy link

sorenwacker commented Oct 25, 2020 via email

@Keou0007
Copy link

I'm on macOS, not windows.
re: port 8051, I've been manually switching ports intermittently because of address in use errors, but that shouldn't have any impact here.

conda list and pip freeze
$ conda list
# packages in environment at /Users/shannon/opt/miniconda3/envs/dash:
#
# Name                    Version                   Build  Channel
brotli-python             1.0.9            py38h79c402e_2  
ca-certificates           2020.10.14                    0  
certifi                   2020.6.20                py38_0  
click                     7.1.2                      py_0  
dash                      1.16.3                     py_0  
dash-core-components      1.3.1                      py_0  
dash-html-components      1.0.1                      py_0  
dash-renderer             1.1.2                      py_0  
dash-table                4.4.1                      py_0  
flask                     1.1.2                      py_0  
flask-compress            1.7.0                      py_0  
future                    0.18.2                   py38_1  
itsdangerous              1.1.0                      py_0  
jinja2                    2.11.2                     py_0  
libcxx                    10.0.0                        1  
libedit                   3.1.20191231         h1de35cc_1  
libffi                    3.3                  hb1e8313_2  
markupsafe                1.1.1            py38h1de35cc_1  
ncurses                   6.2                  h0a44026_1  
openssl                   1.1.1h               haf1e3a3_0  
pip                       20.2.4                   py38_0  
plotly                    4.11.0                     py_0  
python                    3.8.5                h26836e1_1  
pyyaml                    5.3.1            py38haf1e3a3_1  
readline                  8.0                  h1de35cc_0  
retrying                  1.3.3                      py_2  
setuptools                50.3.0           py38h0dc7051_1  
six                       1.15.0                     py_0  
sqlite                    3.33.0               hffcf06c_0  
tk                        8.6.10               hb0a8c7a_0  
werkzeug                  1.0.1                      py_0  
wheel                     0.35.1                     py_0  
xz                        5.2.5                h1de35cc_0  
yaml                      0.2.5                haf1e3a3_0  
zlib                      1.2.11               h1de35cc_3  

$ pip freeze
Brotli @ file:///opt/concourse/worker/volumes/live/6f34e4d0-4572-4e67-52c6-900349b58bc0/volume/brotli-split_1602517645446/work
certifi==2020.6.20
click==7.1.2
dash @ file:///tmp/build/80754af9/dash_1602169941850/work
dash-core-components==1.3.1
dash-html-components==1.0.1
dash-renderer==1.1.2
dash-table==4.4.1
Flask==1.1.2
Flask-Compress @ file:///tmp/build/80754af9/flask-compress_1602519300251/work
future==0.18.2
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe @ file:///opt/concourse/worker/volumes/live/cb778296-98db-45ad-411e-6f726e102dc3/volume/markupsafe_1594371638608/work
plotly @ file:///tmp/build/80754af9/plotly_1601587622649/work
PyYAML==5.3.1
retrying==1.3.3
six==1.15.0
Werkzeug==1.0.1

I'm trying to make a ListGroup of clickable buttons, but I want the list to be arbitrary size and generated on the fly, hence pattern matching. For now I'm just trying to get something/anything working, I posted a question on stackoverflow of the simplest example I could think of that I can't get to work.

The todo list example gives me the error loading dependencies page, I've since tried the other examples in the docs and neither of them work, but I do get more verbose errors. Both of them look like this:

Screen Shot 2020-10-26 at 12 00 04 pm

So it seems to me that using a dictionary for the id is broken here? In my example on stackoverflow it fails silently, and with the todo list example it fails with an "error getting dependencies" page. For the dropdown list examples it fails properly with an error. Something else here I've missed? How can I fix this?

@alexcjohnson
Copy link
Collaborator

@Keou0007 The latest dash-renderer version - which SHOULD be what you upgrade to when you get dash==1.16.3 - is 1.8.2. Pattern-matching callbacks - required for dictionary IDs - weren't introduced until 1.4.0. I'm not sure how it happened, I don't use conda much, but you also have old versions of dash-core-components, dash-html-components, and dash-table.

@sorenwacker
Copy link

Conda updates all packages to the latest versions that are compatible with all the other packages and Python versions installed. You could try installing dash in a new clean environment and then add other required packages step by step.

@Keou0007
Copy link

@alexcjohnson @soerendip ok, that's starting to make sense. The complicating factor here is that I did actually setup a clean environment and the only thing I installed was dash, with conda create -n dash python=3.8 dash. The only condition specified here is python must be 3.8, so unless dash doesn't support 3.8 (?!) then there is a problem with the dependencies in the conda environment, at least for macOS if nothing else. Possibly this needs to be another issue? Should I open a new issue on here, or perhaps on the conda-forge repo?

Back to the issue at hand, I found another issue suggesting you are looking for examples of how "error loading dependencies" can appear. Should I open a seperate issue and list how to cause it as I have here with the todo list example?

@jwhendy
Copy link
Author

jwhendy commented Oct 27, 2020

@Keou0007 I'm not familiar with conda, but you might have to dig into the intricacies of how it sources libraries. If I do pip install and something already exists, it will use the installed version unless I pass --upgrade, which will prompt a check to the repos to see if there's a newer version.

Your pip freeze is outdated as well, including a pointer to a possibly custom build at some point? I wonder if conda just took what you already had.

dash @ file:///tmp/build/80754af9/dash_1602169941850/work
dash-core-components==1.3.1
dash-html-components==1.0.1
dash-renderer==1.1.2

Again, no familiarity with conda, but it also stands out to me that some libs above have py_38 and all the dash related ones have py_0, which almost makes me think "default" or "already installed" vs. being specific to your python=38 flag.

@Keou0007
Copy link

$ conda search dash*
Loading channels: done
# Name                       Version           Build  Channel             
dash                           1.4.1            py_0  pkgs/main           
dash                          1.14.0            py_0  pkgs/main           
dash                          1.16.1            py_0  pkgs/main           
dash                          1.16.2            py_0  pkgs/main           
dash                          1.16.3            py_0  pkgs/main           
dash-core-components           1.3.1            py_0  pkgs/main           
dash-html-components           1.0.1            py_0  pkgs/main           
dash-renderer                  1.1.2            py_0  pkgs/main           
dash-renderer                  1.8.1            py_0  pkgs/main           
dash-renderer                  1.8.2            py_0  pkgs/main           
dash-table                     4.4.1            py_0  pkgs/main  

Looks like the issue is old versions of core-components, html-components and table in the anaconda main repo. If I update using conda-forge I get all the newest versions. This means the problem will solve itself in time, but in the shorter term I see two possible solutions to the issue I hit (i.e. docs examples not working with not much indication of why):

  1. Push newer versions of the supporting packages to anaconda main repo. Is this even possible or out of your hands?
  2. Update the pattern matching docs page to specify required versions of the dependencies to avoid a situation where someone like me is seeing that they have the required version but it still isn't working and not knowing why.

I could probably put together a PR for option 2 myself, but it would be more work for me than someone who already has a local fork setup for such things.

@Keou0007
Copy link

@jwhendy my understanding is that py_0 version means it's python version independent. conda packages are built before distribution (unlike pip installs that are built on the local system after installation from source) and so some packages will be built for a specific python version and conda will contain a different build of those packages for each python version, hence py38 specific packages in some cases. In other cases, where it doesn't matter so much, conda will only hold one version which can be used to install against any python version. Similarly, conda builds are OS specific, so this issue of old versions on the main repo may only occur on macOS. I will test on linux next time I'm logged in to my work machine.

@Keou0007
Copy link

I got motivated: https://github.com/plotly/dash-docs/pull/1003

Same issue with old packages in anaconda main repo exists on Linux also.

@alexcjohnson
Copy link
Collaborator

Thanks for digging into this @Keou0007 - In the pip world all these packages are version-locked, so you have to work pretty hard to get incompatible versions. But it looks like the situation is more complicated with conda.

Long-term, I think the solution will be to actually get rid of the dash-renderer package altogether, just merge it into the main dash package. That way there's no way the two can get out of sync. It already lives in the same repo in GitHub... We originally kept them separate in order to ensure the architecture had a clear front-end / back-end break, looking ahead to different back-end languages, but in practice these other back ends just grab the final renderer JS bundle, and that doesn't depend on this being a separate Python package.

In fact we've even discussed folding dash-core-components, dash-html-components, and dash-table into dash So that there wold be only one "core dash" package. We avoided that before for two reasons: (1) to ensure components were decoupled from the framework itself, in particular to make it easier to add more components, (2) so that if you aren't using a given component package, your page doesn't need to load its JS. But (1) has outlived its usefulness as there are tons of other component packages out there, and (2) is no longer a big deal since we have async loading, so initially you only load a small stub for each package.

If we only had one package, there wouldn't be anything to go wrong in conda - as soon as they include a new version of dash all the rest comes along for the ride.

@Keou0007
Copy link

Keou0007 commented Oct 29, 2020

Not sure if you saw the conversation on the dash-feedstock page I posted, but I was wrong about conda-forge feeding into the anaconda main repo. Looks like the next thing would be to post an issue with anaconda and tell them they need to version lock the dash package in the main repo with its dependencies, matching the version locking that occurs for pip (which is replicated in the conda-forge feedstock). I think for now I've done my dash here though (haha), I can solve my issue by using the conda-forge version so I'll leave the rest to the experts.

HammadTheOne pushed a commit to HammadTheOne/dash that referenced this issue May 28, 2021
* 3.1 props refactoring (plotly#106)

* refactor virtualization, virtualization settings, and derived props

* refactor renaming paging / pagination props

* refactor virtual, viewport and pagination into adapters

* isolate derived props

* build update

* fix regression

* improve typing

* fix test regression

* simplify pagination adapter / refactor

* lint

* clean up unused props

* - change factory
- clean up props / build update

* fix lint

* bump version

* add dash level props for virtual_dataframe

* refactor fp / derived props

* derived props

* refactor viewport and virtual controlled props

* fix fp regression

* fix fp regression

* refactor controlled table / table fp

* controlled table purecomponent

* fix test (rebrake it!)

* fix selection regression for be paging/sorting/filtering

* improve re-renders & controlled props

* fix test regressions

* update inner-selection fixture

* remove useless spy

* - fix pr comment
- fix for IE/Edge

* clean up

* 3.0 clean offsets (plotly#110)

* refactor virtualization, virtualization settings, and derived props

* refactor renaming paging / pagination props

* refactor virtual, viewport and pagination into adapters

* isolate derived props

* build update

* fix regression

* improve typing

* fix test regression

* simplify pagination adapter / refactor

* lint

* clean up unused props

* - change factory
- clean up props / build update

* fix lint

* bump version

* add dash level props for virtual_dataframe

* cleaup offsets

* triad validation

* - define external facing classes and attributes

* fix regression, update build

* fix test regression (invalid props)

* update test name

* refactor fp / derived props

* derived props

* refactor viewport and virtual controlled props

* fix fp regression

* fix fp regression

* refactor controlled table / table fp

* controlled table purecomponent

* fix test (rebrake it!)

* fix selection regression for be paging/sorting/filtering

* improve re-renders & controlled props

* fix test regressions

* update inner-selection fixture

* remove useless spy

* - control columns into visible columns
- cleanup "hidden" conditional processing

* update changelog

* clean up header factory

* apply style on first controlled table render

* typo/merge miss

* derived visible columns

* - visual tests for hidden columns

* rename functions

* - fix dropdown styling regression

* lint

* 3.1 props fixes (plotly#112)

* props fixes

* update changelog

* bump version

* filter typing

* Update derivedViewport_test.ts

Add basic viewport test with |df| > page_size

* ☝️ 3 new review / documentation / target apps

see discussion in plotly/dash-table#108

* 🙈 forgot file

* 📝 incorporate @cldougl suggestions 🙇

* 3.1 refactor tests (plotly#113)

* props fixes

* update changelog

* bump version

* filter typing

* - delete unused usage files
- restructure tests folder

* - separate cypress and visual tests into 2 ci jobs

* - build before tests!

* add browsers to the node image for visual-test

* 💯 add percent examples

* 📝 title/example clarification

* reformat sizing test app for failing tests (plotly#125)

* Removed .only from dash_test.ts

* Production build instead of dev 🙈

* Fix failing tests

* 3.1 refactor cells rendering (plotly#123)

* WIP
- memoize cell event handlers as derived values
- isolate cell event handlers

* wip
- attempt to isolate cell logic from input logic for individual datum

* wip
- celan up cell wrapper
- isolate input logic a bit more

* further down the rabbit hole..
- separating operation cells from content

* fix dropdown navigation regression

* fix selected row regression

* renaming / restructuring

* rename/restructure

* - clean up zipping
- separate wrappers from styles

* rework style/ast cache

* clean up

* clean up

* build update

* improve rendering perf

* optimize wrappers generation

* build config

* - fix typing regression
- fix rendering perf regression

* - fix navigation regression

* simplify slightly the derived props / ui

* fix copy/paste regressions

* clean up wrapper props

* clean up

* fix regression on conditional dropdowns

* wip, fp the headers

* fp content, wrappers, labels, indices from header factory

* fix regressions

* fp the table itself

* fix typing and behavior for table fp

* fix sorting icon regression

* fix regression

* regression

* fix column name regression with only 1 header row

* fix header actions regression

* fix style application on mount

* fix regression edit cell in n-th page

* fix editing on non-first page (continued)

* fix test

* 3.1 issue118 width behavior (plotly#130)

* WIP
- memoize cell event handlers as derived values
- isolate cell event handlers

* wip
- attempt to isolate cell logic from input logic for individual datum

* wip
- celan up cell wrapper
- isolate input logic a bit more

* further down the rabbit hole..
- separating operation cells from content

* fix dropdown navigation regression

* fix selected row regression

* renaming / restructuring

* rename/restructure

* - clean up zipping
- separate wrappers from styles

* rework style/ast cache

* clean up

* clean up

* build update

* improve rendering perf

* optimize wrappers generation

* build config

* - fix typing regression
- fix rendering perf regression

* - fix navigation regression

* simplify slightly the derived props / ui

* fix copy/paste regressions

* clean up wrapper props

* clean up

* fix regression on conditional dropdowns

* wip, fp the headers

* fp content, wrappers, labels, indices from header factory

* fix regressions

* fp the table itself

* fix typing and behavior for table fp

* fix sorting icon regression

* fix regression

* regression

* fix column name regression with only 1 header row

* fix header actions regression

* add width percentage support + content_style

* fix style application on mount

* fix visual regression with empty df

* only apply row style when necessary

* fix tab test (no offset)

* clean up header styling

* use dash-* classes

* support default column width (override input behavior)

* fix regression edit cell in n-th page

* fix editing on non-first page (continued)

* fix test

* fit to content behavior

* fix regressions

* fix lint

* add column width visual tests

* fix dropdown minimum size when using default width

* sizing examples

* black

* fix navigation test regression

* fix regressions in visual tests

* default column width - fix dropdown width eval

* default width columns
- fix width when first content row is search filter

* percy - add delay before screenshot (attempt to fix FF visual tests)

* debugging selenium

* fix black

* debug selenium

* debug selenium

* fix black

* debug selenium

* debug selenium

* debug selenium

* undo all selenium modifications

* default column width
- filter inputs behave like cell inputs (do not affect width)

* - fixed rows+columns height evaluated correctly

* remove dead code

* remove .only from tests

* add data-dash-column to filter cells

* styling examples (plotly#117)

* 🌈 styling examples

examples that represent of the level of customization that we need in
dash-table. The examples are implemented with HTML tables to
demonstrate the intended behaviour.

I’d like to see each of these examples implemented with the
`dash_table` syntax. We’ll use these examples as our `dash-table`
documentation

* ❌ removing black and pylint

this keeps tripping us up and I don’t think it’s worth the pain right
now.

* Backend examples (plotly#119)

* 🏭 backend computed data usage examples

* 📊 tying it together w a graph

* ❓ not sure what `displayed_pages` does?

* Dropdown usage examples (plotly#120)

* ⬇️ dropdown usage examples

* add conditional dropdown example
HammadTheOne pushed a commit to HammadTheOne/dash that referenced this issue May 28, 2021
* 3.1 props refactoring (plotly#106)

* refactor virtualization, virtualization settings, and derived props

* refactor renaming paging / pagination props

* refactor virtual, viewport and pagination into adapters

* isolate derived props

* build update

* fix regression

* improve typing

* fix test regression

* simplify pagination adapter / refactor

* lint

* clean up unused props

* - change factory
- clean up props / build update

* fix lint

* bump version

* add dash level props for virtual_dataframe

* refactor fp / derived props

* derived props

* refactor viewport and virtual controlled props

* fix fp regression

* fix fp regression

* refactor controlled table / table fp

* controlled table purecomponent

* fix test (rebrake it!)

* fix selection regression for be paging/sorting/filtering

* improve re-renders & controlled props

* fix test regressions

* update inner-selection fixture

* remove useless spy

* - fix pr comment
- fix for IE/Edge

* clean up

* 3.0 clean offsets (plotly#110)

* refactor virtualization, virtualization settings, and derived props

* refactor renaming paging / pagination props

* refactor virtual, viewport and pagination into adapters

* isolate derived props

* build update

* fix regression

* improve typing

* fix test regression

* simplify pagination adapter / refactor

* lint

* clean up unused props

* - change factory
- clean up props / build update

* fix lint

* bump version

* add dash level props for virtual_dataframe

* cleaup offsets

* triad validation

* - define external facing classes and attributes

* fix regression, update build

* fix test regression (invalid props)

* update test name

* refactor fp / derived props

* derived props

* refactor viewport and virtual controlled props

* fix fp regression

* fix fp regression

* refactor controlled table / table fp

* controlled table purecomponent

* fix test (rebrake it!)

* fix selection regression for be paging/sorting/filtering

* improve re-renders & controlled props

* fix test regressions

* update inner-selection fixture

* remove useless spy

* - control columns into visible columns
- cleanup "hidden" conditional processing

* update changelog

* clean up header factory

* apply style on first controlled table render

* typo/merge miss

* derived visible columns

* - visual tests for hidden columns

* rename functions

* - fix dropdown styling regression

* lint

* 3.1 props fixes (plotly#112)

* props fixes

* update changelog

* bump version

* filter typing

* Update derivedViewport_test.ts

Add basic viewport test with |df| > page_size

* ☝️ 3 new review / documentation / target apps

see discussion in plotly/dash-table#108

* 🙈 forgot file

* 📝 incorporate @cldougl suggestions 🙇

* 3.1 refactor tests (plotly#113)

* props fixes

* update changelog

* bump version

* filter typing

* - delete unused usage files
- restructure tests folder

* - separate cypress and visual tests into 2 ci jobs

* - build before tests!

* add browsers to the node image for visual-test

* 💯 add percent examples

* 📝 title/example clarification

* reformat sizing test app for failing tests (plotly#125)

* Removed .only from dash_test.ts

* Production build instead of dev 🙈

* Fix failing tests

* 3.1 refactor cells rendering (plotly#123)

* WIP
- memoize cell event handlers as derived values
- isolate cell event handlers

* wip
- attempt to isolate cell logic from input logic for individual datum

* wip
- celan up cell wrapper
- isolate input logic a bit more

* further down the rabbit hole..
- separating operation cells from content

* fix dropdown navigation regression

* fix selected row regression

* renaming / restructuring

* rename/restructure

* - clean up zipping
- separate wrappers from styles

* rework style/ast cache

* clean up

* clean up

* build update

* improve rendering perf

* optimize wrappers generation

* build config

* - fix typing regression
- fix rendering perf regression

* - fix navigation regression

* simplify slightly the derived props / ui

* fix copy/paste regressions

* clean up wrapper props

* clean up

* fix regression on conditional dropdowns

* wip, fp the headers

* fp content, wrappers, labels, indices from header factory

* fix regressions

* fp the table itself

* fix typing and behavior for table fp

* fix sorting icon regression

* fix regression

* regression

* fix column name regression with only 1 header row

* fix header actions regression

* fix style application on mount

* fix regression edit cell in n-th page

* fix editing on non-first page (continued)

* fix test

* 3.1 issue118 width behavior (plotly#130)

* WIP
- memoize cell event handlers as derived values
- isolate cell event handlers

* wip
- attempt to isolate cell logic from input logic for individual datum

* wip
- celan up cell wrapper
- isolate input logic a bit more

* further down the rabbit hole..
- separating operation cells from content

* fix dropdown navigation regression

* fix selected row regression

* renaming / restructuring

* rename/restructure

* - clean up zipping
- separate wrappers from styles

* rework style/ast cache

* clean up

* clean up

* build update

* improve rendering perf

* optimize wrappers generation

* build config

* - fix typing regression
- fix rendering perf regression

* - fix navigation regression

* simplify slightly the derived props / ui

* fix copy/paste regressions

* clean up wrapper props

* clean up

* fix regression on conditional dropdowns

* wip, fp the headers

* fp content, wrappers, labels, indices from header factory

* fix regressions

* fp the table itself

* fix typing and behavior for table fp

* fix sorting icon regression

* fix regression

* regression

* fix column name regression with only 1 header row

* fix header actions regression

* add width percentage support + content_style

* fix style application on mount

* fix visual regression with empty df

* only apply row style when necessary

* fix tab test (no offset)

* clean up header styling

* use dash-* classes

* support default column width (override input behavior)

* fix regression edit cell in n-th page

* fix editing on non-first page (continued)

* fix test

* fit to content behavior

* fix regressions

* fix lint

* add column width visual tests

* fix dropdown minimum size when using default width

* sizing examples

* black

* fix navigation test regression

* fix regressions in visual tests

* default column width - fix dropdown width eval

* default width columns
- fix width when first content row is search filter

* percy - add delay before screenshot (attempt to fix FF visual tests)

* debugging selenium

* fix black

* debug selenium

* debug selenium

* fix black

* debug selenium

* debug selenium

* debug selenium

* undo all selenium modifications

* default column width
- filter inputs behave like cell inputs (do not affect width)

* - fixed rows+columns height evaluated correctly

* remove dead code

* remove .only from tests

* add data-dash-column to filter cells

* styling examples (plotly#117)

* 🌈 styling examples

examples that represent of the level of customization that we need in
dash-table. The examples are implemented with HTML tables to
demonstrate the intended behaviour.

I’d like to see each of these examples implemented with the
`dash_table` syntax. We’ll use these examples as our `dash-table`
documentation

* ❌ removing black and pylint

this keeps tripping us up and I don’t think it’s worth the pain right
now.

* Backend examples (plotly#119)

* 🏭 backend computed data usage examples

* 📊 tying it together w a graph

* ❓ not sure what `displayed_pages` does?

* Dropdown usage examples (plotly#120)

* ⬇️ dropdown usage examples

* add conditional dropdown example

* - additional tests for editable/readonly
- fixes for editable/readonly

* bump version

* remove useless test column

* add editable prop to fixtures

* update tests to take into account readonly 'rows' column

* - refactor column isEditable calculation
HammadTheOne pushed a commit that referenced this issue Jul 23, 2021
* 3.1 props refactoring (#106)

* refactor virtualization, virtualization settings, and derived props

* refactor renaming paging / pagination props

* refactor virtual, viewport and pagination into adapters

* isolate derived props

* build update

* fix regression

* improve typing

* fix test regression

* simplify pagination adapter / refactor

* lint

* clean up unused props

* - change factory
- clean up props / build update

* fix lint

* bump version

* add dash level props for virtual_dataframe

* refactor fp / derived props

* derived props

* refactor viewport and virtual controlled props

* fix fp regression

* fix fp regression

* refactor controlled table / table fp

* controlled table purecomponent

* fix test (rebrake it!)

* fix selection regression for be paging/sorting/filtering

* improve re-renders & controlled props

* fix test regressions

* update inner-selection fixture

* remove useless spy

* - fix pr comment
- fix for IE/Edge

* clean up

* 3.0 clean offsets (#110)

* refactor virtualization, virtualization settings, and derived props

* refactor renaming paging / pagination props

* refactor virtual, viewport and pagination into adapters

* isolate derived props

* build update

* fix regression

* improve typing

* fix test regression

* simplify pagination adapter / refactor

* lint

* clean up unused props

* - change factory
- clean up props / build update

* fix lint

* bump version

* add dash level props for virtual_dataframe

* cleaup offsets

* triad validation

* - define external facing classes and attributes

* fix regression, update build

* fix test regression (invalid props)

* update test name

* refactor fp / derived props

* derived props

* refactor viewport and virtual controlled props

* fix fp regression

* fix fp regression

* refactor controlled table / table fp

* controlled table purecomponent

* fix test (rebrake it!)

* fix selection regression for be paging/sorting/filtering

* improve re-renders & controlled props

* fix test regressions

* update inner-selection fixture

* remove useless spy

* - control columns into visible columns
- cleanup "hidden" conditional processing

* update changelog

* clean up header factory

* apply style on first controlled table render

* typo/merge miss

* derived visible columns

* - visual tests for hidden columns

* rename functions

* - fix dropdown styling regression

* lint

* 3.1 props fixes (#112)

* props fixes

* update changelog

* bump version

* filter typing

* Update derivedViewport_test.ts

Add basic viewport test with |df| > page_size

* ☝️ 3 new review / documentation / target apps

see discussion in plotly/dash-table#108

* 🙈 forgot file

* 📝 incorporate @cldougl suggestions 🙇

* 3.1 refactor tests (#113)

* props fixes

* update changelog

* bump version

* filter typing

* - delete unused usage files
- restructure tests folder

* - separate cypress and visual tests into 2 ci jobs

* - build before tests!

* add browsers to the node image for visual-test

* 💯 add percent examples

* 📝 title/example clarification

* reformat sizing test app for failing tests (#125)

* Removed .only from dash_test.ts

* Production build instead of dev 🙈

* Fix failing tests

* 3.1 refactor cells rendering (#123)

* WIP
- memoize cell event handlers as derived values
- isolate cell event handlers

* wip
- attempt to isolate cell logic from input logic for individual datum

* wip
- celan up cell wrapper
- isolate input logic a bit more

* further down the rabbit hole..
- separating operation cells from content

* fix dropdown navigation regression

* fix selected row regression

* renaming / restructuring

* rename/restructure

* - clean up zipping
- separate wrappers from styles

* rework style/ast cache

* clean up

* clean up

* build update

* improve rendering perf

* optimize wrappers generation

* build config

* - fix typing regression
- fix rendering perf regression

* - fix navigation regression

* simplify slightly the derived props / ui

* fix copy/paste regressions

* clean up wrapper props

* clean up

* fix regression on conditional dropdowns

* wip, fp the headers

* fp content, wrappers, labels, indices from header factory

* fix regressions

* fp the table itself

* fix typing and behavior for table fp

* fix sorting icon regression

* fix regression

* regression

* fix column name regression with only 1 header row

* fix header actions regression

* fix style application on mount

* fix regression edit cell in n-th page

* fix editing on non-first page (continued)

* fix test

* 3.1 issue118 width behavior (#130)

* WIP
- memoize cell event handlers as derived values
- isolate cell event handlers

* wip
- attempt to isolate cell logic from input logic for individual datum

* wip
- celan up cell wrapper
- isolate input logic a bit more

* further down the rabbit hole..
- separating operation cells from content

* fix dropdown navigation regression

* fix selected row regression

* renaming / restructuring

* rename/restructure

* - clean up zipping
- separate wrappers from styles

* rework style/ast cache

* clean up

* clean up

* build update

* improve rendering perf

* optimize wrappers generation

* build config

* - fix typing regression
- fix rendering perf regression

* - fix navigation regression

* simplify slightly the derived props / ui

* fix copy/paste regressions

* clean up wrapper props

* clean up

* fix regression on conditional dropdowns

* wip, fp the headers

* fp content, wrappers, labels, indices from header factory

* fix regressions

* fp the table itself

* fix typing and behavior for table fp

* fix sorting icon regression

* fix regression

* regression

* fix column name regression with only 1 header row

* fix header actions regression

* add width percentage support + content_style

* fix style application on mount

* fix visual regression with empty df

* only apply row style when necessary

* fix tab test (no offset)

* clean up header styling

* use dash-* classes

* support default column width (override input behavior)

* fix regression edit cell in n-th page

* fix editing on non-first page (continued)

* fix test

* fit to content behavior

* fix regressions

* fix lint

* add column width visual tests

* fix dropdown minimum size when using default width

* sizing examples

* black

* fix navigation test regression

* fix regressions in visual tests

* default column width - fix dropdown width eval

* default width columns
- fix width when first content row is search filter

* percy - add delay before screenshot (attempt to fix FF visual tests)

* debugging selenium

* fix black

* debug selenium

* debug selenium

* fix black

* debug selenium

* debug selenium

* debug selenium

* undo all selenium modifications

* default column width
- filter inputs behave like cell inputs (do not affect width)

* - fixed rows+columns height evaluated correctly

* remove dead code

* remove .only from tests

* add data-dash-column to filter cells

* styling examples (#117)

* 🌈 styling examples

examples that represent of the level of customization that we need in
dash-table. The examples are implemented with HTML tables to
demonstrate the intended behaviour.

I’d like to see each of these examples implemented with the
`dash_table` syntax. We’ll use these examples as our `dash-table`
documentation

* ❌ removing black and pylint

this keeps tripping us up and I don’t think it’s worth the pain right
now.

* Backend examples (#119)

* 🏭 backend computed data usage examples

* 📊 tying it together w a graph

* ❓ not sure what `displayed_pages` does?

* Dropdown usage examples (#120)

* ⬇️ dropdown usage examples

* add conditional dropdown example
HammadTheOne pushed a commit that referenced this issue Jul 23, 2021
* 3.1 props refactoring (#106)

* refactor virtualization, virtualization settings, and derived props

* refactor renaming paging / pagination props

* refactor virtual, viewport and pagination into adapters

* isolate derived props

* build update

* fix regression

* improve typing

* fix test regression

* simplify pagination adapter / refactor

* lint

* clean up unused props

* - change factory
- clean up props / build update

* fix lint

* bump version

* add dash level props for virtual_dataframe

* refactor fp / derived props

* derived props

* refactor viewport and virtual controlled props

* fix fp regression

* fix fp regression

* refactor controlled table / table fp

* controlled table purecomponent

* fix test (rebrake it!)

* fix selection regression for be paging/sorting/filtering

* improve re-renders & controlled props

* fix test regressions

* update inner-selection fixture

* remove useless spy

* - fix pr comment
- fix for IE/Edge

* clean up

* 3.0 clean offsets (#110)

* refactor virtualization, virtualization settings, and derived props

* refactor renaming paging / pagination props

* refactor virtual, viewport and pagination into adapters

* isolate derived props

* build update

* fix regression

* improve typing

* fix test regression

* simplify pagination adapter / refactor

* lint

* clean up unused props

* - change factory
- clean up props / build update

* fix lint

* bump version

* add dash level props for virtual_dataframe

* cleaup offsets

* triad validation

* - define external facing classes and attributes

* fix regression, update build

* fix test regression (invalid props)

* update test name

* refactor fp / derived props

* derived props

* refactor viewport and virtual controlled props

* fix fp regression

* fix fp regression

* refactor controlled table / table fp

* controlled table purecomponent

* fix test (rebrake it!)

* fix selection regression for be paging/sorting/filtering

* improve re-renders & controlled props

* fix test regressions

* update inner-selection fixture

* remove useless spy

* - control columns into visible columns
- cleanup "hidden" conditional processing

* update changelog

* clean up header factory

* apply style on first controlled table render

* typo/merge miss

* derived visible columns

* - visual tests for hidden columns

* rename functions

* - fix dropdown styling regression

* lint

* 3.1 props fixes (#112)

* props fixes

* update changelog

* bump version

* filter typing

* Update derivedViewport_test.ts

Add basic viewport test with |df| > page_size

* ☝️ 3 new review / documentation / target apps

see discussion in plotly/dash-table#108

* 🙈 forgot file

* 📝 incorporate @cldougl suggestions 🙇

* 3.1 refactor tests (#113)

* props fixes

* update changelog

* bump version

* filter typing

* - delete unused usage files
- restructure tests folder

* - separate cypress and visual tests into 2 ci jobs

* - build before tests!

* add browsers to the node image for visual-test

* 💯 add percent examples

* 📝 title/example clarification

* reformat sizing test app for failing tests (#125)

* Removed .only from dash_test.ts

* Production build instead of dev 🙈

* Fix failing tests

* 3.1 refactor cells rendering (#123)

* WIP
- memoize cell event handlers as derived values
- isolate cell event handlers

* wip
- attempt to isolate cell logic from input logic for individual datum

* wip
- celan up cell wrapper
- isolate input logic a bit more

* further down the rabbit hole..
- separating operation cells from content

* fix dropdown navigation regression

* fix selected row regression

* renaming / restructuring

* rename/restructure

* - clean up zipping
- separate wrappers from styles

* rework style/ast cache

* clean up

* clean up

* build update

* improve rendering perf

* optimize wrappers generation

* build config

* - fix typing regression
- fix rendering perf regression

* - fix navigation regression

* simplify slightly the derived props / ui

* fix copy/paste regressions

* clean up wrapper props

* clean up

* fix regression on conditional dropdowns

* wip, fp the headers

* fp content, wrappers, labels, indices from header factory

* fix regressions

* fp the table itself

* fix typing and behavior for table fp

* fix sorting icon regression

* fix regression

* regression

* fix column name regression with only 1 header row

* fix header actions regression

* fix style application on mount

* fix regression edit cell in n-th page

* fix editing on non-first page (continued)

* fix test

* 3.1 issue118 width behavior (#130)

* WIP
- memoize cell event handlers as derived values
- isolate cell event handlers

* wip
- attempt to isolate cell logic from input logic for individual datum

* wip
- celan up cell wrapper
- isolate input logic a bit more

* further down the rabbit hole..
- separating operation cells from content

* fix dropdown navigation regression

* fix selected row regression

* renaming / restructuring

* rename/restructure

* - clean up zipping
- separate wrappers from styles

* rework style/ast cache

* clean up

* clean up

* build update

* improve rendering perf

* optimize wrappers generation

* build config

* - fix typing regression
- fix rendering perf regression

* - fix navigation regression

* simplify slightly the derived props / ui

* fix copy/paste regressions

* clean up wrapper props

* clean up

* fix regression on conditional dropdowns

* wip, fp the headers

* fp content, wrappers, labels, indices from header factory

* fix regressions

* fp the table itself

* fix typing and behavior for table fp

* fix sorting icon regression

* fix regression

* regression

* fix column name regression with only 1 header row

* fix header actions regression

* add width percentage support + content_style

* fix style application on mount

* fix visual regression with empty df

* only apply row style when necessary

* fix tab test (no offset)

* clean up header styling

* use dash-* classes

* support default column width (override input behavior)

* fix regression edit cell in n-th page

* fix editing on non-first page (continued)

* fix test

* fit to content behavior

* fix regressions

* fix lint

* add column width visual tests

* fix dropdown minimum size when using default width

* sizing examples

* black

* fix navigation test regression

* fix regressions in visual tests

* default column width - fix dropdown width eval

* default width columns
- fix width when first content row is search filter

* percy - add delay before screenshot (attempt to fix FF visual tests)

* debugging selenium

* fix black

* debug selenium

* debug selenium

* fix black

* debug selenium

* debug selenium

* debug selenium

* undo all selenium modifications

* default column width
- filter inputs behave like cell inputs (do not affect width)

* - fixed rows+columns height evaluated correctly

* remove dead code

* remove .only from tests

* add data-dash-column to filter cells

* styling examples (#117)

* 🌈 styling examples

examples that represent of the level of customization that we need in
dash-table. The examples are implemented with HTML tables to
demonstrate the intended behaviour.

I’d like to see each of these examples implemented with the
`dash_table` syntax. We’ll use these examples as our `dash-table`
documentation

* ❌ removing black and pylint

this keeps tripping us up and I don’t think it’s worth the pain right
now.

* Backend examples (#119)

* 🏭 backend computed data usage examples

* 📊 tying it together w a graph

* ❓ not sure what `displayed_pages` does?

* Dropdown usage examples (#120)

* ⬇️ dropdown usage examples

* add conditional dropdown example

* - additional tests for editable/readonly
- fixes for editable/readonly

* bump version

* remove useless test column

* add editable prop to fixtures

* update tests to take into account readonly 'rows' column

* - refactor column isEditable calculation
@gvwilson
Copy link
Contributor

gvwilson commented Jun 3, 2024

Hi - this issue has been sitting for a while, so as part of our effort to tidy up our public repositories I'm going to close it. If it's still a concern, we'd be grateful if you could open a new issue (with a short reproducible example if appropriate) so that we can add it to our stack. Cheers - @gvwilson

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests