From 8e881eb16cee89c8c1f2475547ba06b6675b9113 Mon Sep 17 00:00:00 2001 From: Michael Tiemann <72577720+MichaelTiemannOSC@users.noreply.github.com> Date: Wed, 3 May 2023 12:29:05 -0400 Subject: [PATCH 1/3] Clean up release issues Bump various version numbers of libraries we use in requirements.txt. Also fix a latent data error in one of the two 20220927 excel spreadsheets. Signed-off-by: Michael Tiemann <72577720+MichaelTiemannOSC@users.noreply.github.com> --- ITR/data/base_providers.py | 6 ++++- README.md | 15 +++++++++---- .../data/20220927 ITR Tool Sample Data.xlsx | Bin 74811 -> 74802 bytes .../data/20220927 ITR V2 Sample Data.xlsx | Bin 122273 -> 122204 bytes .../data/20230106 ITR V2 Sample Data.xlsx | Bin 346159 -> 346157 bytes requirements.txt | 21 +++++++++--------- 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/ITR/data/base_providers.py b/ITR/data/base_providers.py index 3e441e93..3778544d 100644 --- a/ITR/data/base_providers.py +++ b/ITR/data/base_providers.py @@ -774,9 +774,9 @@ def _extract_historic_df(self, companies: List[ICompanyData]) -> pd.DataFrame: raise ValueError("No historic data anywhere") df = pd.DataFrame.from_records(data).set_index( [ColumnsConfig.COMPANY_ID, ColumnsConfig.VARIABLE, ColumnsConfig.SCOPE]) + # Note that the first valid index may well be Quantity with a NaN value--that's fine # We just need to fill in the pure NaNs that arise from very ragged data - with warnings.catch_warnings(): # TODO: need to investigate whether there is a more sane way to avoid unit warnings warnings.simplefilter("ignore") @@ -815,6 +815,8 @@ def _historic_ei_to_dicts(self, id: str, intensities_scopes: IHistoricEIScopes) def _compute_missing_historic_ei(self, companies: List[ICompanyData], historic_df: pd.DataFrame): scopes = [EScope[scope_name] for scope_name in EScope.get_scopes()] missing_data = [] + # https://github.com/pandas-dev/pandas/issues/53053 + index_names = historic_df.index.names for company in companies: # Create keys to index historic_df DataFrame for readability production_key = (company.company_id, VariablesConfig.PRODUCTIONS, 'Production') @@ -839,6 +841,8 @@ def _compute_missing_historic_ei(self, companies: List[ICompanyData], historic_d # This only happens if ALL scope data is missing. If ANY scope data is present, we'll work with what we get. if this_missing_data and append_this_missing_data: missing_data.extend(this_missing_data) + # https://github.com/pandas-dev/pandas/issues/53053 + historic_df.index.names = index_names if missing_data: error_message = f"Provide either historic emissions intensity data, or historic emission and " \ f"production data for these company - scope combinations: {missing_data}" diff --git a/README.md b/README.md index 8ec59822..01f11659 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,13 @@ This Python module implements the ITR methodology. ## Getting started with the user interface: -If you use Anaconda environments, open an Anaconda prompt window, navigate to the 'examples' directory and run: +If you use Anaconda environments, open an Anaconda prompt window, navigate to the root of the ITR release (ITR-develop) and run: ``` conda env create -f environment.yml conda activate itr_ui -python ITR_UI.py ``` -For virtual environments, open a command prompt/terminal window, navigate to the 'examples' directory and run: +For virtual environments, open a command prompt/terminal window, navigate to the root of the ITR release and run ``` python3 -m venv itr_ui ``` @@ -25,9 +24,17 @@ Next, run: ``` python3 -m pip install --upgrade pip pip install -r requirements.txt +pip install -e . +``` + +Now you are ready to change to the examples directory and run the tool: +``` +cd examples python3 ITR_UI.py +python3 ITR_UI.py "data/20230106 ITR V2 Sample Data.xlsx" ``` -Note the python commands are ```python``` for windows and ``python3`` for linux/mac. + +Note the python commands are ```python``` for windows and ``python3`` for linux/mac. If no file is specified, the tool uses a default, small ITR dataset. With a filename given, the ITR tool will load data from that dataset. The 20230106 data template has over 120 companies across nearly a dozen sectors. Finally, open a browser window and navigate to `http://127.0.0.1:8050/` to access the user interface. diff --git a/examples/data/20220927 ITR Tool Sample Data.xlsx b/examples/data/20220927 ITR Tool Sample Data.xlsx index 0646c3728c1fcd709cbd7ca17f831461e6c75d30..efb27b6f90b773f6942a5aeb7abc07b5df601517 100644 GIT binary patch delta 10881 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 NP$M8Lyc`4be*o>J4B7wy delta 9044 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 MRB%emZ#hu^2kH+uPyhe` diff --git a/examples/data/20230106 ITR V2 Sample Data.xlsx b/examples/data/20230106 ITR V2 Sample Data.xlsx index 45f83fdf990669b095816d19b8eaa4df8571e644..22a05a0118c40d839038b0f18b3843b330929ee6 100644 GIT binary patch delta 3085 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 delta 3081 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 Date: Wed, 3 May 2023 13:17:31 -0400 Subject: [PATCH 2/3] Update pip-audit.yml Bump 1.0.3 -> 1.0.6 Signed-off-by: Michael Tiemann <72577720+MichaelTiemannOSC@users.noreply.github.com> --- .github/workflows/pip-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index 1152f470..bb0ad3e5 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -26,4 +26,4 @@ jobs: - name: Install run: python -m pip install . - name: Run pip-audit - uses: pypa/gh-action-pip-audit@v1.0.3 + uses: pypa/gh-action-pip-audit@v1.0.6 From 1f2392330ec7ecd60c39ef74e91349d01b0a192a Mon Sep 17 00:00:00 2001 From: Michael Tiemann <72577720+MichaelTiemannOSC@users.noreply.github.com> Date: Wed, 3 May 2023 15:21:34 -0400 Subject: [PATCH 3/3] Update pip-audit.yml Testing https://github.com/pypa/gh-action-pip-audit/issues/38 Signed-off-by: Michael Tiemann <72577720+MichaelTiemannOSC@users.noreply.github.com> --- .github/workflows/pip-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index bb0ad3e5..a0fc87c1 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -26,4 +26,4 @@ jobs: - name: Install run: python -m pip install . - name: Run pip-audit - uses: pypa/gh-action-pip-audit@v1.0.6 + uses: pypa/gh-action-pip-audit@ww/pin-requests