Skip to content

Commit

Permalink
query change
Browse files Browse the repository at this point in the history
  • Loading branch information
cdolfi authored and JamesKunstle committed Feb 28, 2024
1 parent 93c79d1 commit b06f892
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 47 deletions.
3 changes: 2 additions & 1 deletion 8Knot/cache_manager/db_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,8 @@ def _create_application_tables() -> None:
name text,
current_release_date text,
latest_release_date text,
libyear float4
libyear float4,
dep_age text
)
"""
)
Expand Down
49 changes: 4 additions & 45 deletions 8Knot/pages/repo_overview/visualizations/package_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,53 +110,11 @@ def package_version_graph(repolist):
logging.warning(f"{VIZ_ID} - NO DATA AVAILABLE")
return nodata_graph

# function for all data pre processing
df = process_data(df)

fig = create_figure(df)

logging.warning(f"{VIZ_ID} - END - {time.perf_counter() - start}")
return fig


def process_data(df: pd.DataFrame):

# get max time difference to use for grouping and round for correct format
max_time = round(df["libyear"].max(), 3)

# create intervals for df grouper
intervals = [0.0, 0.001, 0.5, 1.0, max_time]
intervals = [val for val in intervals if val <= max_time]

# round up for formating and corner case ease
intervals[-1] = intervals[-1] + 0.001

# group by the time intervals
depend_pie = pd.DataFrame(df["libyear"].groupby(pd.cut(df["libyear"], intervals, right=False)).count()).rename(
columns={"libyear": "packages"}
)
depend_pie = depend_pie.reset_index().rename(columns={"libyear": "date_range"})
depend_pie["date_range"] = depend_pie["date_range"].astype(str)

# update column names dynamically based on specific ranges
for x in range(len(intervals) - 1):
updated_date_range = "Up to date"
if intervals[x] > 0 and intervals[x] < 0.5:
updated_date_range = "Less than 6 months"
if intervals[x] >= 0.5 and intervals[x] < 1:
updated_date_range = "6 months to year"
if intervals[x] == 1:
updated_date_range = "Greater than a year"
current_date_range = "[" + str(intervals[x]) + ", " + str(intervals[x + 1]) + ")"
depend_pie.loc[depend_pie["date_range"] == current_date_range, "date_range"] = updated_date_range

return depend_pie


def create_figure(df: pd.DataFrame):
# count the number of each package grouping
df = pd.DataFrame(df["dep_age"].value_counts().reset_index())

# graph generation
fig = px.pie(df, names="date_range", values="packages", color_discrete_sequence=color_seq)
fig = px.pie(df, names="index", values="dep_age", color_discrete_sequence=color_seq)
fig.update_traces(
textposition="inside",
textinfo="percent+label",
Expand All @@ -166,4 +124,5 @@ def create_figure(df: pd.DataFrame):
# add legend title
fig["layout"]["legend_title"] = "Date Range"

logging.warning(f"{VIZ_ID} - END - {time.perf_counter() - start}")
return fig
9 changes: 8 additions & 1 deletion 8Knot/queries/package_version_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,14 @@ def package_version_query(self, repos):
rdl.name,
rdl.current_release_date,
rdl.latest_release_date,
rdl.libyear
rdl.libyear,
case -- categorize the dependency out-of-date-edness;
WHEN rdl.libyear >= 1.0 THEN 'Greater than a year'
WHEN rdl.libyear < 1.0 and rdl.libyear > 0.5 THEN '6 months to year'
when rdl.libyear < 0.5 and rdl.libyear > 0 then 'Less than 6 months'
when rdl.libyear = 0 then 'Up to date'
else 'Unclear version history'
END as dep_age
FROM
repo_deps_libyear rdl
WHERE
Expand Down

0 comments on commit b06f892

Please sign in to comment.