thisaintwork / iqss_gh_reporting

MIT License
0 stars 0 forks source link

Create a column summary for legacy sprint project in python #5

Closed mikeaintworkin closed 1 year ago

mikeaintworkin commented 1 year ago

Create a column summary using pandas on data returned from the legacy sprint project. Display the data in the same way that we measure it for sprints.

Note: If we trim the closed issues column down from around 500 to 100 or so this will run fairly quickly. Right now it takes around 3 minutes to run. We can trim that column by removing older closed issues from the project.

context: This is part of the closeout where I get all the code into python. This functionality will be needed as a bridge between now and when we transition to projectV2 objects for the sprint.

mikeaintworkin commented 1 year ago

Before I started this issue.

Next:

Today I

Step 1

Assign sizes to PRs

Create InTheSprint count

Create the rest of the sums

Output the results as a flat file

mikeaintworkin commented 1 year ago

I have the code already for summarizing each column. It will not be hard to get from there to summarizing accross a few columns. The new code will be the tracking down of the attached PRs.

This will have to be dealt with even when the transition is made to the GitHub projectV2 so it's not wasted work.

My thought is that in graphql I can get closingIssuesReferences from a pullrequest


I am going to limit the scope of this issue to what is laid out so far.

It is really tempting to go and parse the labels., etc but I've already done that and if I did it for this code, which is formatted differently it would be eventually thrown away anyway.

It would be easy to join this data with data pulled from the backlog but I can't assume every single item will be in the backlog. Can i?

It's outside the scope of this work to look for exceptions. Those checks can be done as other utilities.

mikeaintworkin commented 1 year ago

I ended up re-parsing the Labels because I lready had the code so it was just cut/paste. I left off working on SprintSummaryFrame.
This creates a table "Column, size" It will get me back to where I was with the java code we had. After that I will need to do the sizing for the collection of columns that identify active sprint columns. That's not hard. The part I haven't played with yet is chasing the PRs back to their issues for sizes.

I left off in: _add_size_column debugging. -I'm using old code and I am running into dumb column header problems. -I'm thinking maybe rather than keep hitting every reference I might define a tuple with all the column names and use them that way. dunno. getting late heading home.

Code that is checked in works. This code is not yet checked in because - well - it doesn't.

mikeaintworkin commented 1 year ago

I won't be able to look at this again until tomorrow evening.

mikeaintworkin commented 1 year ago

I'm going to pass in the headers I care about as a list

mikeaintworkin commented 1 year ago

Basic hacky code is checked in. Each of the sprint columns is summarized. The columns that represent activity included in the points score for the sprint are summarized under "Active Sprint"

370 ▶ SPRINT READY
109 This Sprint 🏃‍♀️ 🏃 
146 IQSS Team - In Progress  💻
56  Ready for Review ⏩
33  Review 🔎
12  Ready for QA ⏩
20  QA ✅
897 Done 🚀
344 ActiveSprint

Does not include the lookup to get the points associated with issues that are off the board, replaced by unsized PRs. The next step is to look for the PR data and add that. After that I need to step back and see where I'm at. I'm getting more and more into the swing of Python coding using ChatGPT as a reference for how or why to do things. I need to go back and make sure I'm not going off the workflow and that I can apply what I am developing directly to the new sprint project.

mikeaintworkin commented 1 year ago

Technically I think I've actually finished this issue and should open another.

mikeaintworkin commented 1 year ago

I realized that I have one more piece to do here. I need to output the results to a text file.

mikeaintworkin commented 1 year ago

I went far afield from simply getting the printing to work. Today

Image

Next:

mikeaintworkin commented 1 year ago

Today:

next steps:

The flow using the API right now.

    df = pdio.LegacyProjectCards(
        access_token=auth_token_val,
        organization_name=args.organization_name,
        project_name=args.proj_name)
    df.fetch_data()
    df.print_project_cards()
    pdio.write_dataframe(df=df.dataframe()) # raw data
    df.print_project_cards()
    dfsum = pdio.SprintSummaryFrame(df_in=df.dataframe())

The flow using an input file right now

    df = pdio.DFFromFile(
        in_dir=args.dir_name,
        file_name=args.filename)
    dfsum = pdio.SprintSummaryFrame(df_in=df.dataframe())
mikeaintworkin commented 1 year ago

I'm going to close this. I was able to run this workflow tonight:

    df = pdio.DFFromFile(
        in_dir=args.dir_name,
        file_name=args.file_name)
    dfSzer = pdio.SprintCardSizer(df_in=df.dataframe())
    df =dfSzer.dataframe()
    pdio.write_dataframe(df)
    spsumrzr = pdio.SprintSizeSummarizer(df_in=df)
    print(spsumrzr.sprint_summary_line())

and get this result:

Column  Size
▶ SPRINT READY  370
This Sprint 🏃‍♀️ 🏃  46
IQSS Team - In Progress  💻  159
Ready for Review ⏩  53
In Review 🔎 36
QA ✅    6
Done 🚀  623
ActiveSprint    294

▶ SPRINT READY This Sprint 🏃‍♀️ 🏃 IQSS Team - In Progress  💻 Ready for Review ⏩ In Review 🔎 QA ✅ Done 🚀 ActiveSprint      DateTime  SprintName
           370                 46                        159                 53          36    6    623          294 datetimestamp sprint_name
mikeaintworkin commented 1 year ago

I'm breaking out the logic to add the pull requests to a new issue.