Package: com-enovation
TODOexcel-dashboarder: we can use one single instance of ExcelDashboarder to produce several excel files:Constructor should accept the configurationFunction "excelize" should only accept data to print in the excelObjective: instantiating one singe dashboarder, that could be used to produce similar excel with different dataA python tool boxOur python tool-box is supposed to help professionals in their day-to-day work.Everything started when reaching blocking limitations with MS Excel, forcing us to search for alternatives. We learned Python, and started to implement reusable snippets.As of 2021, we have a first workable snippet (yet perfectible), and we target to progressively (even-though
slowly) enrich this tool-box, focusing on "IT project management" related stuff (as a start?).In case you have feedbacks, ideas or suggestions, please let us know!Table of contentsThe project management toolboxPredictabilityDateThe technicalitiesPyPi versionsInstallUseContributeThe project management toolboxPredictabilityBy definition, a good project manager is predictable, right?But what do we mean by “being predictable”?
Let’s say that “Predictabilty” is about accurately predicting early enough the project outcomes, to enable timely corrective actions that increase the likelihood of achieving targets and reducing outcome variance.Ok, fair enough. But how do we measure a project manager “predictable-ness”?Date predictabilityThe modulecom.enovation.toolbox.predictability.dp_date_predictabilityexposes several commands to deal with date predictability:CommandDescriptiondp_computeTo compute the predictability for historical prediction of a date (eg. go live date, deal closure date)dp_persistTo persist into an excel file the outputs from the commanddp_computedp_loadTo load the outputs from the commanddp_computethat were persisted into an excel filedp_graphTo visualize the outputs from the commanddp_computeinto a graph powered bydashdp_demoTo demonstrate some of the above commandThe technicalitiesPyPi Versions0.0.5: date predictability - workable version0.0.15: with a revamped readme.md, and 'demo' command, before sharing with "early adopters"0.0.20: dp-demo fixed0.0.21: click commands to handle json, excel dashboard with vba, dash with bubbles0.0.22: enriched wheel including assets and json files0.0.24: excel dashboard with "worksheet.set_column" and "worksheet.freeze_panes"0.0.25: correction in a json schema for excel dashboarder: "merged" key word within widget_table_zoom.json0.0.26: constant in ExcelDashboarder for "worksheet.set_column"0.0.27: constants in ExcelDashboarder for "worksheet.set_column", updated dependencies, and several FutureWarnings fixed...0.0.28: constants in ExcelDashboarder for "worksheet.set_column"0.0.29: excel dashboard: parameterized workbook.options (to print NaN in excel)0.0.32: excel dashboard: parameterized worksheet.set_row (to collapse/ hide rows...)0.0.33: excel dashboard: worksheet.outline_settings() to group "above" and on the "left"0.0.34: excel dashboard: minor adjustementsCorrect number of lines in the table, without or without total row: depending on whether there is a total row, we adjust table range (before, there was an extra empty line when "no total row")Correct conditional formatting range, which used to ignore the latest line in the tableExcel_dashboard > test_widget_table: in a table, add a "formula column" that references other columns... "formula": "=[[#This Row],[jsg formula col 2]]+5000"0.0.35: excel dashboard: correction to handle pandas.NaTType values in table widget.0.0.36: introduction of module "data handler"0.0.37: Enhancement in data handler for datetime64:Modifier 'type_columns': mapping 'date' to 'object' and 'datetime' to 'datetime64[ns]'Modifier 'audit_column__stamped': transcode 's_column_to_stamp' to 'date' if 'datetime[64]' (to avoid mysterious exception...)0.0.38: Adjustments in data handlerModifier 'add_eval' > 'enov_lambda': added comment to illustrate, and 'axis' to process columnsModifier 'add_eval': the calling dataframe can now be called from the expression. Comment added to illustrate0.0.39: df-load-xls can now select the sheet to load0.0.40: new Excel functions, adaptation to latest version for pandas.dataframe and to_datetime function which becomes stricter, packaging setup.cfg to project.tomlDependenciesWhen installingcom-enovation, the following packages will be deployed automatically bypip:pandas: to handle dataframes, series, etcclick: to handle command lineenlighten: to display a progress bar for lengthy stepsopenpyxl: to handlexlsxfilesxlwt: that is a dependency forpandas.io.excelxlrd: yet another dependency forpandas.io.exceldash: to graphscipy: to compute date predictability without resampling measures, usingspecial.psifunctionxlsxwriter: to produce excel spreadsheet. Used inexcel_dashboardjsonschema: to check json parameters. Used inexcel_dashboardpywin32: to access Windows API from Python, such as opening Excel, refreshing data and saving. Used inhelper.excel. Note: only working on Windows... Cannot be installed on MAC or Linux.InstallCheckPython 3is installed on your machineCheckpipis installed on your machineInstall thecom-enovationtool-box:python3 -m pip install com-enovationYou can test by launching a python interpreter:python3And load the package:>>> import com.enovationEnsure the deployed script is added to yourPATHUpgrade thecom-enovationtool-box:pip install --upgrade com-enovationUseYou can get help by executingenov -- helpin a terminalYou have commands that you can run likeenov load-csv --helpCommands have:Parameters that you can provide likeenov load-csv ./the-csv-file-to-load.csvOptions that you can provide likeenov load-csv ./the-csv-file-to-load.csv -c the-first-column-label-to-load -c the-second-oneYou can call for more logs by callingenov --verbose load-csv ./the-csv-file-to-load.csv -c the-first-column-label-to-load -c the-second-oneContributeGenerate and publish the distributionfrom root directorybuild the distribution files and directories:python3 -m buildDirectoriesbuildanddistshould be generatedIn case you face an errorNo module named build, you need first to runpip install buildpublish topypi:python3 -m twine upload --repository pypi dist/*In case you face an errorNo module named twine, you need first to runpip install twinePackage viewable atpypiCommands to execute from the root directorycom.enovationPycharm configurationIn the left pan:Directorysrc: mark asSources RootDirectorytests: DO NOT mark as anything...Unit test configuration, from menuRun > Edit Configurations...Configuration > Target > Script path: /Users/jsg/PycharmProjects/com.enovation/testsConfiguration > Working directory: /Users/jsg/PycharmProjects/com.enovation/Configuration > Add content roots to PYTHONPATH: checkedConfiguration > Add source roots to PYTHONPATH: checkedPython stuffCheck we have latest versions:pip:python3 -m pip install --upgrade pipbuild to generate the distribution:python3 -m pip install --upgrade buildtwine to publish to pypi:python3 -m pip install --upgrade twineUpdate packages using pipCheck all packages are fine:pip checkList all packages outdated:pip list --outdatedUpdate all packages outdated:pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -UA simple example package. You can useGithub-flavored Markdownto write your content.To debug a running Click application:Git stuffTo resynchronize local environment from remote "master" gitIn the Local > MasterFetch: we get the latest history from the remoteUpdate: we load the latest files locally (and the full tags are all on the head revision)