✊🏿 Black Lives Matter. Please consider donating to Black Girls Code today.
⚡️ Concerned about the grid? Kyle Baranko teaches how to predicting peak loads using XGBoost. Register for the August webinar!

[Solved] Import of Dash module alters .csv files

I’ve run into some strange behavior (or at least what I think is strange behavior)when using the Dash library and I apologies in advance as I don’t think I can’t make an example which is easy to reproduce, so instead I will include all the information I think is relevant.

I was trying to create a small dashboard which loaded some data and then plotted it in a bar chart. The code I used for this is below (it is adapted from the Docs):

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import pandas as pd
import os.path as path


def find_unique_id(data, first_name, second_name, season):

    name = first_name + '_' + second_name
    data_filt = data[data['season'] == season]
    data_filt = data_filt[data_filt['name'] == name]
    print(data_filt['unique_id'])

    return data_filt['unique_id'].iloc[0]

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

# assume you have a "long-form" data frame
# see https://plotly.com/python/px-arguments/ for more options

path_data = path.join(path.dirname(path.dirname(path.abspath(__file__))), 'Processed', 'player_database.csv')

data = pd.read_csv(path_data)

unique_id = []
unique_id.append(find_unique_id(data, 'Harry', 'Kane', 2020))
unique_id.append(find_unique_id(data, 'Mohamed', 'Salah', 2020))
unique_id.append(find_unique_id(data, 'Heung-Min', 'Son', 2020))

fig = px.bar(data[data['unique_id'].isin(unique_id)], x="round", y="points_mean3", color="name", barmode="group")

app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),

    html.Div(children='''
        Dash: A web application framework for Python.
    '''),

    dcc.Graph(
        id='example-graph',
        figure=fig
    )
])

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

The player_database.csv is loaded and detailed in the picture (notice the file sizes):

enter image description here

However now whenever I import any Dash related module even in a different file and with nothing other than import statements (this behavior also occurs by opening a python prompt from the command line and just importing dash), it changes all the files in this folder, and appears to role them back to an earlier state. For example when I run the following code, you can see the change in file size happening:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px

This alters all the files in this directory (again as shown by the file size):

enter image description here

Does anyone know why this might be happening, has Dash got some kind of cache somewhere which loads the files it was working with from some previous state? I’ve tried googling and can’t find anything on this.

I’ve also posted this on stack overflow but thought here might be more fitting. Hope that’s OK.

Thanks

I have solved this myself. I had a file called test.py in the working directory which for some reason was being run as part of the import dash process.