Skip to content

Conversation

@KristijanArmeni
Copy link
Collaborator

@KristijanArmeni KristijanArmeni commented Aug 29, 2025

A release PR for v0.8.1-beta


Smarter data frame printing in case of large tabels in CLI via Rich

Screenshot 2025-08-31 at 9 15 04 PM

Color-coded data frames

Screenshot 2025-08-31 at 9 15 28 PM

New splash screen design

Screenshot 2025-08-31 at 9 14 25 PM

KristijanArmeni and others added 30 commits June 17, 2025 14:33
* [ENH] Hashtag update and add tests (#121)

* [ENH] update interface to rely on post column, add users col

* [ENH] update gini() to operate on pl.Series

* [ENH] wrap analysis code into hashtag_analyzer()

* [ENH] check for time column dtype

* [ENH] fix column naming, set defaul window to 12h

* [ENH] add data and tests for hashtag_analyzer

* [ENH] add tests for gini()

* [MAINT] explicitly specify return_dtype

* [MAINT] cleanup

* fix: hide unsupported hashtag analysis export formats

* test tutorial comment cleanup

* fix: Capitalization typo

---------

Co-authored-by: DeanEby <ebyd21@gmail.com>

* feat: analyzer parameterization (#126)

This change introduces analyzer parameterization. Parameters can be defined
using `AnalyzerParam` and queried via the analyzer/web presenter context
objects. The CLI is updated to include a step where parameters are chosen,
and they are reflected back when the analysis is viewed. The test helpers
are also updated to include parameter provision.

The example analyzer, which performs simple character count, is updated
to include a single parameter, namely `fudge_factor` that offsets the
character count.

These parameter types are supported:
- `IntegerParam` (produces `int` value)
- `TimeBinningParam` (produces `TimeBinningValue`, essentially an object
  with attributes `unit` and `amount`.

The `TimeBinningParam` is currently unused, but it is defined in anticipation
that it will be used by the hashtag tests. As such, a convenient method that
produces a polars `truncate` expression is added to `TimeBinningValue` so
it can just be dropped into the analyzer later.

* [FEAT] Add time window parameter selection to hashtags test (#129)

* add time bining parameter to hashtag analyzer
* add default parameter for tester
* de-indent help text, remove reference to polars expr

---------

Co-authored-by: DeanEby <ebyd21@gmail.com>
Co-authored-by: soul-codes <40335030+soul-codes@users.noreply.github.com>
* Implemented middleware needed to support multi tenancy with the waitress server

* Updating waitress to resolve two CVS reports from dependabot. (https://github.com/civictechdc/mango-tango-cli/security/dependabot/1), (https://github.com/civictechdc/mango-tango-cli/security/dependabot/2)

* ran black and isort
* add .env files to ignore

* use VIRTUAL_ENV if set, otherwise fallback to `./venv/`

* update workflow for codesigning

* allow manual run

* cleaup workflows

* update pyinstaller.spec for macOS codesigning and add os import; update requirements-dev.txt to ensure pyinstaller is included

* add mango.entitlements for macOS codesigning requirements

* don't upload artifacts from test builds

* update actions versions and improve dependency caching in test workflow
#157)

* initial commit, hacky factory and interface modules

* initial commit, __init__.py

* initial commit, supporting data science modules for app

* initial commit, shiny app module

* add hashtag dashboard to the suite

* add code to load raw dataset

* [ENH] use group_by_dynamic, add rolling mean computation

* [MAINT] adding 'gini_smooth' output column to output test data

* [MAINT] remove unused import

* [MAINT] add shiny, shinywidgets to requirements.txt

* set launch_browser in run_app to True

* add ShinyServerConfig in factory.py

* [FEAT] add `._start_shiny_server` method to `AnalysisWebServerContext` class

* move shiny app instance declaration from `factory.py` to `app/analysis_webserver_context`
)

* test: initial commit, add test_ngrams.py

* test: initial commit add .csv and .parquet data for testing

* test: add ParquetTestData class

* feat: sort the output of n-gram statistics, change print feedback

* test: add __init__.py

* refactor: move ngram analyzers to a single ngrams folder

* refactor: update import statements

* refactor: move and rename base test

* test: add parquet data for ngram_stats test

* initial commit, __init__.py

* chore: pl.count() deprecated use pl.len()
…cs (#165)

* remove accordion, remove filters from dataframe

* remove vertical line, remove unused dependencies in plots.py

* remove date picker, add code to select date by clicking on line plot

* fix conlflicts, move color declarations to plots.py

* format hover labels

* [MAINT] move code for placeholder figures to plots.py

* [MAINT] move `clicked_data` higher up

* [MAINT]rename bar plot ids to be more specific

* [FEAT] use place holder fig in hashtag_bar_plot()

* add line break in placeholder figure text

* update placeholder text

* [FEAT] update code to work when secondary_analysis() returns None

* improve time window info display

* fix tooltip text

* remove selected point from hover information in line plot

* update text labels in figures

* update analyzer short description, indent long description

* main: shorten the description of temporal analyzer

* use ProgressReporter
* feat: initial commit, app.py

* chore: use ngram_string variable

* feat: update factory.pyand __init__.py for Shiny dashboard

* fix: sort stats df, to correctly show top 100 ngrams, use constants for col names

* refactor: use `np.random.default_rng()` instead of `np.random.seed()`
… mkdocs (#161)

* add mkdocs config and populate /docs folder

* add mkdostrings and deps to dev dependencies

* update README.md, add bages and logo

* create guides folder

* Add github workflow for docs build on pull request

* use a seperate, smaller requirements file for docs and use for workflow

* update readme esthetics a little bit

* [fix] add requirements-mdocs.txt and remove cmake dependency

* fix links

* Wrote, "Getting Started" guide for technical docs.

* Added a link to the contributor workflow section under "Next Steps" in getting started section.

* add scoped token permission

* use separate build / deploy actions

* use deploy key instead of github_token

* use separate build & deploy actions. only deploy to prod from main -- others get a preview build

* update workflow to use pull_request_target for better security and context

* add manual trigger

* change trigger back to pull_request

* Add macOS code signing and build improvements (#156)

* add .env files to ignore

* use VIRTUAL_ENV if set, otherwise fallback to `./venv/`

* update workflow for codesigning

* allow manual run

* cleaup workflows

* update pyinstaller.spec for macOS codesigning and add os import; update requirements-dev.txt to ensure pyinstaller is included

* add mango.entitlements for macOS codesigning requirements

* don't upload artifacts from test builds

* update actions versions and improve dependency caching in test workflow

* reset permissions

* Revised setup docs with the help of the ai-docs Joe generated. Also wrote Getting Started guide that is based on the AI docs.

* Split architecture docs into seperate sections

* Added next steps to contribution section

* Updated mkdoc nav config to reflect how the architecture docs are now split up

* Update build_exe.yml

* Update build_exe.yml

* Finished writing initial revisions to the analyzers documentation...

* WIP writing docs for shiny and react dashboards...

* Wrote initial draft for the technical docs for the react and shiny dashboards...

* Added Nexts Steps sub section for each domain section...

* Transferred logging docs from branch JoeKarow/logging-system

* Added additional docs to the mkdocs navigation...

* Revised navigation links to be more coherent in structure...

* Implemented mermaid plugin for mkdocs...

* Shifted docs around and corrected link warning when running mkdeocs locally...

* Moved testing docs to get-started folder...

* Revised overview and testing links to clear link warnings...

* Implemented reference docs FactoryOutputContext and related context objects

* Applied black and isort formatting analyzer interface context...

* Rebuilt mkdoc site assets...

* WIP troubleshooting why workflow is not deploying updated mkdoc assets...

* WIP troubleshooting why workflow is not deploying updated mkdoc assets...

* WIP troubleshooting why updated mkdoc assets are not being deployed to github-pages...

* Implemented changes recommended in the latest review conducted by Kristijan

* Cleaning up unneccesarry files...

* Application-Wide Logging System (#177)

* Resolving merge conflicts with dev branch...

* create guides folder

* Breaking out of rebase hell (hopefully)...

* Rebuilt mkdoc site assets...

* Cleaning up unneccesarry files...

* Removing everything that was readded to overview while trying to break out of rebase hell..

* Removing .idea directory that got added while breaking out of rebase hell...

* Attempting to fix action error that occurs when deploying mkdocs site...

* Included link to technical docs site in project README...

* feat, fix: add logo to the home page, fix home page links

* add /site to gitignore

* docs: use About for homepage title

---------

Co-authored-by: Kristijan Armeni <kristijan.armeni@gmail.com>
Co-authored-by: VEDA95 <snetterfield1@gmail.com>
…nformation when importing string-based date columns (#194)

* feat: add `native_date`, `native_datetime` SeriesSemantic instances, and `parse_datetime_with_tz()` helper

* fix: add helper method to more consistently load and transform input data

* test: add tests for main `series_semantic` instances

* feat: improve datetime handling in hashtag dashboard with midpoint default

* feat: add option to parse timezones coded as offset strings

* test: add tests for parsing offset-coded tz and user warning

* fix: remove heterogenous timezones test_parse_datetime_with_tz()
…places: PR #185) (#195)

* feat: add `print_data_frame` using `rich.table` for printing data frames

* use print_data_frame in new_analysis

* feat: add `print_dialog_section_title()`

* feat: use print_data_frame and print_dialogue_section_title

* feat: update ascii art welcome page, use rich.Panel

* chore: add credits

* fix: try moving script comment

* fix: reapply formatting

* chore: add rich to requirements

* feat: add option to color-code cols based on datatype and smarter col width setting

* feat: add smart_print_data_frame to only show summary for large data_frames

* feat: fix no-coloring mode, simplify and remove column width computation

* feat: use smart dataframe printing in project selection

* refactor: revert to using print for section titles

* feat: use table captions in smart_print_data_frame

* chore: use print, remove unused imports

* feat: add three different logo sizes

* feat: add three different logo sizes

* chore: add docstring to smart_print_data_frame
@KristijanArmeni KristijanArmeni added this to the v0.8.1 milestone Aug 29, 2025
@KristijanArmeni KristijanArmeni added the minor This PR causes a minor bump in the version number. label Aug 29, 2025
@KristijanArmeni
Copy link
Collaborator Author

OK, a bunch of conflicts to sort out here. Will work on this in the coming days.

@KristijanArmeni KristijanArmeni self-assigned this Aug 29, 2025
@github-actions
Copy link

github-actions bot commented Aug 30, 2025

PR Preview Action v1.6.2
Preview removed because the pull request was closed.
2025-08-31 19:20 UTC

@KristijanArmeni KristijanArmeni merged commit 7d31cd9 into main Aug 31, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

minor This PR causes a minor bump in the version number.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants