Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-watermark for 
openSUSE:Factory checked in at 2026-01-28 15:12:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-watermark (Old)
 and      /work/SRC/openSUSE:Factory/.python-watermark.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-watermark"

Wed Jan 28 15:12:20 2026 rev:11 rq:1329546 version:2.6.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-watermark/python-watermark.changes        
2024-11-21 15:15:21.237288813 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-watermark.new.1928/python-watermark.changes  
    2026-01-28 15:15:11.874102351 +0100
@@ -1,0 +2,26 @@
+Tue Jan 27 17:21:40 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2.6.0:
+  * Adds a new `--check_jupyter` flag to report which notebook
+    environment is used (e.g., Colab, Jupyter Notebook,
+    JupyterLab, VS Code).
+  * Adds a new `--check_latest` flag to check whether newer
+    package versions are available.
+  * Adds a new `--python_installation` flag to provide
+    information about how Python was installed.
+  * Feat check latest 87
+  * Feat: Add --filename (-fn) option to display notebook path.
+    Closes #25
+  * Fix KeyError in version lookup and implement fallback
+  * Fix timezone space 73
+  * Feat jupyter env 93
+  * Feat python install 89
+- update to 2.5.1:
+  * fixed typo
+  * Bump version to 2.5.1.dev
+  * Bump to 2.5.1.dev1 for build testing
+  * fixed -d and -t flags
+  * List imported packages in alphabetical order.
+  * Add auto deployment workflow
+
+-------------------------------------------------------------------

Old:
----
  watermark-2.5.0.tar.gz

New:
----
  watermark-2.6.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-watermark.spec ++++++
--- /var/tmp/diff_new_pack.ugnZRB/_old  2026-01-28 15:15:12.862143510 +0100
+++ /var/tmp/diff_new_pack.ugnZRB/_new  2026-01-28 15:15:12.866143677 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-watermark
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           python-watermark
-Version:        2.5.0
+Version:        2.6.0
 Release:        0
 Summary:        IPython magic function to psystem information
 License:        BSD-3-Clause

++++++ watermark-2.5.0.tar.gz -> watermark-2.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/watermark-2.5.0/PKG-INFO new/watermark-2.6.0/PKG-INFO
--- old/watermark-2.5.0/PKG-INFO        2024-09-21 02:39:21.355831100 +0200
+++ new/watermark-2.6.0/PKG-INFO        2025-12-22 00:41:53.881401300 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: watermark
-Version: 2.5.0
+Version: 2.6.0
 Summary: IPython magic function to print date/time stamps and various system 
information.
 Home-page: https://github.com/rasbt/watermark
 Author: Sebastian Raschka
@@ -17,19 +17,419 @@
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Requires-Python: >=3.7
-Provides-Extra: gpu
+Description-Content-Type: text/markdown
 License-File: LICENSE
+Requires-Dist: ipython>=6.0
+Requires-Dist: importlib-metadata>=1.4
+Requires-Dist: setuptools
+Provides-Extra: gpu
+Requires-Dist: py3nvml>=0.2; extra == "gpu"
+Dynamic: author
+Dynamic: author-email
+Dynamic: description
+Dynamic: description-content-type
+Dynamic: home-page
+Dynamic: license
+Dynamic: license-file
+Dynamic: provides-extra
+Dynamic: requires-dist
+Dynamic: summary
+
+[![Build 
status](https://ci.appveyor.com/api/projects/status/2q1iwyc5bbfnqxik?svg=true)](https://ci.appveyor.com/project/rasbt/watermark)
+[![PyPI 
version](https://badge.fury.io/py/watermark.svg)](http://badge.fury.io/py/watermark)
+![Python 3](https://img.shields.io/badge/python-3-blue.svg)
+![License](https://img.shields.io/badge/license-BSD-blue.svg)
+
+# watermark
+
+An IPython magic extension for printing date and time stamps, version numbers, 
and hardware information.
+<br>
+
+#### Sections
+
+- [Examples](#examples)
+- [Installation and updating](#installation-and-updating)
+- [Usage](#usage)
+- [Development guidelines](#development-guidelines)
+- [Changelog](#changelog)
+
+&nbsp;
+## Examples
+
+[[top](#sections)]
+
+### Using watermark in  Jupyter notebooks and IPython sessions
+
+
+
+<img src="docs/images/ex1.png" width=300>
+<img src="docs/images/ex2.png" width=200>
+
+&nbsp;
+
+**More examples can be found in this [Jupyter 
notebook](docs/watermark.ipynb).**
+
+[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/rasbt/watermark/master?filepath=docs%2Fwatermark.ipynb)
+
+&nbsp;
+### Using watermark as a module
+
+
+```python
+from watermark import watermark
+print(watermark())
+```
+
+```
+Last updated: 2022-09-13T16:28:56.177487-05:00
+
+Python implementation: CPython
+Python version       : 3.9.13
+IPython version      : 8.4.0
+
+Compiler    : Clang 13.0.1
+OS          : Darwin
+Release     : 21.6.0
+Machine     : arm64
+Processor   : arm
+CPU cores   : 10
+Architecture: 64bit
+```
+
+```python
+print(watermark(packages="numpy,scipy"))
+```
+
+```
+numpy: 1.23.2
+scipy: 1.9.1
+```
+
+
+
+See `help(watermark)` for more options.
+
+
+&nbsp;
+## Installation and updating
+
+[[top](#sections)]
+
+The watermark line magic can be installed by executing
+
+```bash
+pip install watermark
+```
+
+Alternatively, you can install the latest development version directly from 
GitHub via
+
+```bash
+pip install -e git+https://github.com/rasbt/watermark#egg=watermark
+```
+
+<br>
+
+Note:
+
+To remove an old `watermark` installation (installed via the deprecated 
`%install_ext` magic extension), simply delete it from the 
``.ipython/extensions/`` directory, which is typically located in a user's home 
directory.
+
+&nbsp;
+## Usage
+
+[[top](#sections)]
+
+After successful installation, the `watermark` magic extension can be loaded 
via:
+
+```python
+%load_ext watermark
+```
+
+<br>
+
+To get an overview of all available commands, type:
+
+```python
+%watermark?
+```
+
+<br>
+
+```raw
+  %watermark [-a AUTHOR] [-gu GITHUB_USERNAME] [-e EMAIL] [-ws WEBSITE]
+                 [-d] [-n] [-t] [-i] [-z] [-u] [-c CUSTOM_TIME] [-v]
+                 [-p PACKAGES] [-co] [-h] [-m] [-g] [-r] [-b] [-w] [-iv]
+
+IPython magic function to print date/time stamps
+and various system information.
+
+optional arguments:
+  -a AUTHOR, --author AUTHOR
+                        prints author name
+  -gu GITHUB_USERNAME, --github_username GITHUB_USERNAME
+                        prints author github username
+  -e EMAIL, --email EMAIL
+                        prints author email
+  -ws WEBSITE, --website WEBSITE
+                        prints author or project website
+  -d, --date            prints current date as YYYY-mm-dd
+  -n, --datename        prints date with abbrv. day and month names
+  -t, --time            prints current time as HH-MM-SS
+  -i, --iso8601         prints the combined date and time including the time
+                        zone in the ISO 8601 standard with UTC offset
+  -z, --timezone        appends the local time zone
+  -u, --updated         appends a string "Last updated: "
+  -c CUSTOM_TIME, --custom_time CUSTOM_TIME
+                        prints a valid strftime() string
+  -v, --python          prints Python and IPython version
+  -p PACKAGES, --packages PACKAGES
+                        prints versions of specified Python modules and
+                        packages
+  -co, --conda          prints name of current conda environment
+  -h, --hostname        prints the host name
+  -m, --machine         prints system and machine info
+  -g, --githash         prints current Git commit hash
+  -r, --gitrepo         prints current Git remote address
+  -b, --gitbranch       prints current Git branch
+  -w, --watermark       prints the current version of watermark
+  -iv, --iversions      prints the name/version of all imported modules
+  --gpu                 prints GPU information (currently limited to NVIDIA
+                        GPUs), if available
+  -je, --jupyter_env    prints the current Jupyter environment (e.g., Colab,
+                        VS Code)
+  --python_installation
+                        include information about how Python was installed
+  --check_latest        check if the latest packages are installed
+```
+
+&nbsp;
+## Development guidelines
+
+[[top](#sections)]
+
+In line with [NEP 29][nep-29], this project supports:
+
+- All minor versions of Python released 42 months prior to the project, and at 
minimum the two latest minor versions.
+
+[nep-29]: https://numpy.org/neps/nep-0029-deprecation_policy.html
+
+&nbsp;
+## Changelog
+
+[[top](#sections)]
+
+#### v. 2.6.0 (TBA)
+
+- Adds a new `--check_jupyter` flag to report on which notebook environment is 
used (e.g., Colab, Jupyter Notebook, Jupyter Lab, VSCode). 
([#102](https://github.com/rasbt/watermark/pull/99), via contribution by 
[Mariam Zakaria](https://github.com/mariam851))
+- Adds a new `--check_latest` flag to check whether newer package versions are 
available. ([#102](https://github.com/rasbt/watermark/pull/99), via 
contribution by [Mariam Zakaria](https://github.com/mariam851))
+- Adds a new `--python_installation` flag to provide information about how 
Python was installed.  ([#102](https://github.com/rasbt/watermark/pull/99), via 
contribution by [Mariam Zakaria](https://github.com/mariam851))
+
+&nbsp;
+#### v. 2.5.1 (Dec 14, 2025)
+
+- `--iversion` packages are now sorted alphabetically. 
([#102](https://github.com/rasbt/watermark/pull/99), via contribution by [Vijay 
Lulla](https://github.com/vlulla))
+- Extra args to allow printing `-d` (current date) and `-t` (current time) 
information without needing to use the `-u` (updated) flag.  
([#99](https://github.com/rasbt/watermark/pull/99), via contribution by [Daniel 
Kleine](https://github.com/d-kleine))
+
+&nbsp;
+#### v. 2.5.0 (Sep 20, 2024)
+
+- Can now capture imports retrospectively via `-iv` more reliably.  
([#94](https://github.com/rasbt/watermark/pull/94), via contribution by [Martin 
Perier](https://github.com/martinp7))
+
+ For example,
+
+```python
+from sympy import solve
+```
+
+```
+%load_ext watermark
+```
+
+```
+%watermark -iv
+```
+
+Correctly prints `sympy: 1.11.1`
+
+
+
+&nbsp;
+#### v. 2.4.3 (May 23, 2023)
+
+- Make `py3nvml` installation for GPU info optional. 
([#92](https://github.com/rasbt/watermark/pull/92), via contribution by [Ben 
Greiner](https://github.com/bnavigator))
+
+&nbsp;
+#### v. 2.4.1 and v 2.4.2 (May 23, 2023)
+
+- PyPI and Conda-Forge packaging fixes.
+
+&nbsp;
+#### v. 2.4.0 (May 23, 2023)
+
+- Adds a new `--gpu` flag to print out GPU information (currently limited to 
NVIDIA devices) ([#90](https://github.com/rasbt/watermark/pull/90), via 
contribution by [907Resident](https://github.com/907Resident))
+
+&nbsp;
+#### v. 2.3.1 (May 27, 2022)
+
+- Upper limit on importlib-metadata caused trouble installing on Python 3.7.
+  Instead pin to minimum version with Python 3.8 functionality according to 
https://github.com/python/importlib_metadata#compatibility  
([#86](https://github.com/rasbt/watermark/pull/86), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+
+&nbsp;
+#### v. 2.3.0 (January 3, 2022)
+
+- Added the following arguments: `--github_username` - for prints author 
github username, `--email` - for prints author email, `--website` - for prints 
author or project website. ([#82](https://github.com/rasbt/watermark/pull/82), 
via contribution by [joschkazj](https://github.com/joschkazj))
+- Added a `--conda` option to print the name of the current conda environment. 
([#79](https://github.com/rasbt/watermark/pull/79), via contribution by 
[Alexander Krasnikov](https://github.com/askras))
+-  It is now possible to inject globals when used outside IPython 
([#80](https://github.com/rasbt/watermark/pull/80), via contribution by [
+Hugo Lapré](https://github.com/Hugovdberg)). For example, version numbers of 
imported packages can now be obtained as follows:
+
+```python
+import numpy
+import watermark.watermark as watermark
+
+
+watermark(iversions=True, globals_=globals())
+```
+
+&nbsp;
+#### v. 2.2.0 (February 17, 2021)
+
+- Refactoring such that a `watermark()` function now also works outside 
IPython and Jupyter. Now, the magic `%watermark` calls `watermark()`. Calling 
`%watermark` via IPython and Juypter still works as usual. However, in addition 
the `watermark()` function can be used within regular Python for unit testing 
purposes etc. ([#46](https://github.com/rasbt/watermark/pull/46), via 
contribution by [Tymoteusz Wołodźko](https://github.com/twolodzko))
+
+&nbsp;
+#### v. 2.1.0 (November 23, 2020)
+
+- Adopt [NEP 29][nep-29] and require Python version 3.7 or newer. 
([#63](https://github.com/rasbt/watermark/pull/63), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+- Add Python 3.8 and 3.9 to Travis CI builds. 
([#63](https://github.com/rasbt/watermark/pull/63), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+- Fix: Allow setup.py to run without install_requires already installed 
([#67](https://github.com/rasbt/watermark/pull/67), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+- Major refactoring to improve code readability 
([#64](https://github.com/rasbt/watermark/pull/64) and 
[65](https://github.com/rasbt/watermark/pull/65), via contribution by [Bahram 
Aghaei](https://github.com/GreatBahram))
+- Use importlib and importlib.metadata to determine package version numbers. 
([#66](https://github.com/rasbt/watermark/pull/66), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+
+&nbsp;
+#### v. 2.0.2 (November 19, 2019)
+
+- Support `VERSION` attributes, in addition to `__version__` attributes.
+
+&nbsp;
+#### v. 2.0.1 (October 04, 2019)
+
+- Fix `'sklearn'` vs. `'scikit-learn'` import compatibility.
+
+&nbsp;
+#### v. 2.0.0 (October 04, 2019)
+
+- Now uses `pkg_resources` as the default method for getting version numbers.
+- Fixes a whitespace bug when printing the timezone.
+
+&nbsp;
+#### v. 1.8.2 (July 28, 2019)
+
+- When no Python library was imported and the `--iversion` is used, print an 
empty string instead of raising an error.
+
+&nbsp;
+#### v. 1.8.1 (January 26, 2019)
+
+- Fixes string alignment issues when the `-iv`/`--iversion` flag is used.
+
+&nbsp;
+#### v. 1.8.0 (January 02, 2019)
+
+- The `-iv`/`--iversion` flag now also shows package versions that were 
imported as `from X import Y`
+and `import X.Y as Y`. For example,
+
+```python
+import scipy as sp
+from sklearn import metrics
+import numpy.linalg as linalg
+```
+
+```
+%watermark --iversions
+```
+
+will return
+
+```
+scipy     1.1.0
+sklearn   0.20.1
+numpy     1.15.4
+```
+
+&nbsp;
+#### v. 1.7.0 (October 13, 2018)
+
+(Via contribution by [James Myatt](https://github.com/jamesmyatt))
+
+- Shows "not installed" for version of packages/modules that cannot be 
imported.
+- Shows "unknown" for version of packages/modules when version attribute 
cannot be found.
+- Add Python 3.6 and 3.7 to Travis CI builds.
+- Add classifiers to setuptools configuration.
+
+&nbsp;
+#### v. 1.6.1 (June 10, 2018)
+
+- Now also includes the LICENSE file in the Python Wheels distribution
+
+&nbsp;
+#### v. 1.6.0 (January18, 2018)
+
+- Adds a new `-b`/`--gitbranch` parameter that prints the current Git branch.
+
+&nbsp;
+#### v. 1.5.0 (August 27, 2017)
+
+- Adds a new `-iv`/ `--iversions` parameter that prints the package names and 
version numbers of all packages that were previously imported in the current 
Python session. (Via contribution by [Aziz Alto](https://github.com/iamaziz))
+
+&nbsp;
+#### v. 1.4.0 (April 18, 2017)
+
+- Adds a new `-r`/ `--gitrepo` parameter that returns the URL of Git remote 
name "origin". (Via contribution by [Lucy Park](https://github.com/e9t))
+
+&nbsp;
+#### v. 1.3.4 (October 15, 2016)
+
+- Allow fetching scikit-learn's version number via `-p scikit-learn` in 
addition of `-p sklearn` (the former is deprecated and will not be supported in 
watermark > 1.7).
+
+&nbsp;
+#### v. 1.3.3 (September 1, 2016)
+
+- Includes LICENSE in MANIFEST.in for packaging
+
+&nbsp;
+#### v. 1.3.2 (August 16, 2016)
+
+- Fixes an issue where the wrong package info was obtained when using the 
system level Jupyter within a virtualenv environment. (Via contribrution by 
[Michael Bell](https://github.com/mrbell))
+- Adds a new `-i`/ `--iso8601` parameter that returns the current date-time 
string in ISO 8601 format with offset to UTC. For instance: 
`2016-08-16T18:03:42-04:00`. Current caveat: Python < 3.2 requires external 
libraries for for computing the timezone offset, thus, Python < 3.2 will 
currently only print `2016-08-16T18:03:42`
+- Adds offsets to UTC to the default date-time string for Python >= 3.2
+
+&nbsp;
+#### v. 1.3.1 (June 6, 2016)
+
+- Fixes an issue that caused problems importing watermark using Python 2.x
+
+&nbsp;
+#### v. 1.3.0 (May 21, 2016)
+
+- Removed the deprecated the %install_ext magic so that watermark can now be 
installed as a regular python package via `pip` (Via contribution by [Peter 
Bull](https://github.com/pjbull))
+
+&nbsp;
+#### v. 1.2.3 (January 29, 2016)
+
+- Changed date format to the unambiguous ISO-8601 format
+- Ditched the deprecated %install_ext function and made watermark a proper 
Python package
+- Released the new version under a more permissive newBSD [license](./LICENSE)
+
+&nbsp;
+#### v. 1.2.2 (June 17, 2015)
+
+- Changed the default date-format of `-d`, `--date` to MM/DD/YYYY, the format 
DD/MM/YYYY can be used via the shortcut `-e`, `--eurodate`.
 
-An IPython magic extension for printing date and time stamps, version
-numbers, and hardware information.
+&nbsp;
+#### v. 1.2.1 (March 3, 2015)
 
-Contact
-=============
-If you have any questions or comments about watermark,
-please feel free to contact me via
-email: [email protected]
+- Small bugfix to allow custom time string formatting.
 
-This project is hosted at https://github.com/rasbt/watermark
+&nbsp;
+#### v. 1.2.0 (October 1, 2014)
 
-The documentation can be found at
-https://github.com/rasbt/watermark/blob/master/README.md
+- `--watermark` command added to print the current version of watermark.
+- Print author name on a separate line
+- Fixed bug that day takes the same value as the minute if the `-n` flag is 
used.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/watermark-2.5.0/README.md 
new/watermark-2.6.0/README.md
--- old/watermark-2.5.0/README.md       2024-09-21 02:37:16.000000000 +0200
+++ new/watermark-2.6.0/README.md       2025-12-22 00:38:41.000000000 +0100
@@ -16,8 +16,7 @@
 - [Development guidelines](#development-guidelines)
 - [Changelog](#changelog)
 
-<br>
-
+&nbsp;
 ## Examples
 
 [[top](#sections)]
@@ -26,16 +25,16 @@
 
 
 
-<img src="docs/images/ex1.png" width=700>
-<img src="docs/images/ex2.png" width=700>
+<img src="docs/images/ex1.png" width=300>
+<img src="docs/images/ex2.png" width=200>
+
+&nbsp;
 
 **More examples can be found in this [Jupyter 
notebook](docs/watermark.ipynb).**
 
 
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/rasbt/watermark/master?filepath=docs%2Fwatermark.ipynb)
 
-<br>
-
-
+&nbsp;
 ### Using watermark as a module
 
 
@@ -74,7 +73,7 @@
 See `help(watermark)` for more options.
 
 
-
+&nbsp;
 ## Installation and updating
 
 [[top](#sections)]
@@ -97,6 +96,7 @@
 
 To remove an old `watermark` installation (installed via the deprecated 
`%install_ext` magic extension), simply delete it from the 
``.ipython/extensions/`` directory, which is typically located in a user's home 
directory.
 
+&nbsp;
 ## Usage
 
 [[top](#sections)]
@@ -155,10 +155,16 @@
   -b, --gitbranch       prints current Git branch
   -w, --watermark       prints the current version of watermark
   -iv, --iversions      prints the name/version of all imported modules
+  --gpu                 prints GPU information (currently limited to NVIDIA
+                        GPUs), if available
+  -je, --jupyter_env    prints the current Jupyter environment (e.g., Colab,
+                        VS Code)
+  --python_installation
+                        include information about how Python was installed
+  --check_latest        check if the latest packages are installed
 ```
 
-<br>
-
+&nbsp;
 ## Development guidelines
 
 [[top](#sections)]
@@ -169,12 +175,24 @@
 
 [nep-29]: https://numpy.org/neps/nep-0029-deprecation_policy.html
 
-<br>
-
+&nbsp;
 ## Changelog
 
 [[top](#sections)]
 
+#### v. 2.6.0 (TBA)
+
+- Adds a new `--check_jupyter` flag to report on which notebook environment is 
used (e.g., Colab, Jupyter Notebook, Jupyter Lab, VSCode). 
([#102](https://github.com/rasbt/watermark/pull/99), via contribution by 
[Mariam Zakaria](https://github.com/mariam851))
+- Adds a new `--check_latest` flag to check whether newer package versions are 
available. ([#102](https://github.com/rasbt/watermark/pull/99), via 
contribution by [Mariam Zakaria](https://github.com/mariam851))
+- Adds a new `--python_installation` flag to provide information about how 
Python was installed.  ([#102](https://github.com/rasbt/watermark/pull/99), via 
contribution by [Mariam Zakaria](https://github.com/mariam851))
+
+&nbsp;
+#### v. 2.5.1 (Dec 14, 2025)
+
+- `--iversion` packages are now sorted alphabetically. 
([#102](https://github.com/rasbt/watermark/pull/99), via contribution by [Vijay 
Lulla](https://github.com/vlulla))
+- Extra args to allow printing `-d` (current date) and `-t` (current time) 
information without needing to use the `-u` (updated) flag.  
([#99](https://github.com/rasbt/watermark/pull/99), via contribution by [Daniel 
Kleine](https://github.com/d-kleine))
+
+&nbsp;
 #### v. 2.5.0 (Sep 20, 2024)
 
 - Can now capture imports retrospectively via `-iv` more reliably.  
([#94](https://github.com/rasbt/watermark/pull/94), via contribution by [Martin 
Perier](https://github.com/martinp7))
@@ -197,25 +215,28 @@
 
 
 
-
+&nbsp;
 #### v. 2.4.3 (May 23, 2023)
 
 - Make `py3nvml` installation for GPU info optional. 
([#92](https://github.com/rasbt/watermark/pull/92), via contribution by [Ben 
Greiner](https://github.com/bnavigator))
 
+&nbsp;
 #### v. 2.4.1 and v 2.4.2 (May 23, 2023)
 
 - PyPI and Conda-Forge packaging fixes.
 
+&nbsp;
 #### v. 2.4.0 (May 23, 2023)
 
 - Adds a new `--gpu` flag to print out GPU information (currently limited to 
NVIDIA devices) ([#90](https://github.com/rasbt/watermark/pull/90), via 
contribution by [907Resident](https://github.com/907Resident))
 
-
+&nbsp;
 #### v. 2.3.1 (May 27, 2022)
 
 - Upper limit on importlib-metadata caused trouble installing on Python 3.7.
   Instead pin to minimum version with Python 3.8 functionality according to 
https://github.com/python/importlib_metadata#compatibility  
([#86](https://github.com/rasbt/watermark/pull/86), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
 
+&nbsp;
 #### v. 2.3.0 (January 3, 2022)
 
 - Added the following arguments: `--github_username` - for prints author 
github username, `--email` - for prints author email, `--website` - for prints 
author or project website. ([#82](https://github.com/rasbt/watermark/pull/82), 
via contribution by [joschkazj](https://github.com/joschkazj))
@@ -231,10 +252,12 @@
 watermark(iversions=True, globals_=globals())
 ```
 
+&nbsp;
 #### v. 2.2.0 (February 17, 2021)
 
 - Refactoring such that a `watermark()` function now also works outside 
IPython and Jupyter. Now, the magic `%watermark` calls `watermark()`. Calling 
`%watermark` via IPython and Juypter still works as usual. However, in addition 
the `watermark()` function can be used within regular Python for unit testing 
purposes etc. ([#46](https://github.com/rasbt/watermark/pull/46), via 
contribution by [Tymoteusz Wołodźko](https://github.com/twolodzko))
 
+&nbsp;
 #### v. 2.1.0 (November 23, 2020)
 
 - Adopt [NEP 29][nep-29] and require Python version 3.7 or newer. 
([#63](https://github.com/rasbt/watermark/pull/63), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
@@ -243,27 +266,33 @@
 - Major refactoring to improve code readability 
([#64](https://github.com/rasbt/watermark/pull/64) and 
[65](https://github.com/rasbt/watermark/pull/65), via contribution by [Bahram 
Aghaei](https://github.com/GreatBahram))
 - Use importlib and importlib.metadata to determine package version numbers. 
([#66](https://github.com/rasbt/watermark/pull/66), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
 
+&nbsp;
 #### v. 2.0.2 (November 19, 2019)
 
 - Support `VERSION` attributes, in addition to `__version__` attributes.
 
+&nbsp;
 #### v. 2.0.1 (October 04, 2019)
 
 - Fix `'sklearn'` vs. `'scikit-learn'` import compatibility.
 
+&nbsp;
 #### v. 2.0.0 (October 04, 2019)
 
 - Now uses `pkg_resources` as the default method for getting version numbers.
 - Fixes a whitespace bug when printing the timezone.
 
+&nbsp;
 #### v. 1.8.2 (July 28, 2019)
 
 - When no Python library was imported and the `--iversion` is used, print an 
empty string instead of raising an error.
 
+&nbsp;
 #### v. 1.8.1 (January 26, 2019)
 
 - Fixes string alignment issues when the `-iv`/`--iversion` flag is used.
 
+&nbsp;
 #### v. 1.8.0 (January 02, 2019)
 
 - The `-iv`/`--iversion` flag now also shows package versions that were 
imported as `from X import Y`
@@ -287,6 +316,7 @@
 numpy     1.15.4
 ```
 
+&nbsp;
 #### v. 1.7.0 (October 13, 2018)
 
 (Via contribution by [James Myatt](https://github.com/jamesmyatt))
@@ -296,58 +326,71 @@
 - Add Python 3.6 and 3.7 to Travis CI builds.
 - Add classifiers to setuptools configuration.
 
+&nbsp;
 #### v. 1.6.1 (June 10, 2018)
 
 - Now also includes the LICENSE file in the Python Wheels distribution
 
-#### v. 1.6.0 (Jan uary18, 2018)
+&nbsp;
+#### v. 1.6.0 (January18, 2018)
 
 - Adds a new `-b`/`--gitbranch` parameter that prints the current Git branch.
 
+&nbsp;
 #### v. 1.5.0 (August 27, 2017)
 
 - Adds a new `-iv`/ `--iversions` parameter that prints the package names and 
version numbers of all packages that were previously imported in the current 
Python session. (Via contribution by [Aziz Alto](https://github.com/iamaziz))
 
+&nbsp;
 #### v. 1.4.0 (April 18, 2017)
 
 - Adds a new `-r`/ `--gitrepo` parameter that returns the URL of Git remote 
name "origin". (Via contribution by [Lucy Park](https://github.com/e9t))
 
+&nbsp;
 #### v. 1.3.4 (October 15, 2016)
 
 - Allow fetching scikit-learn's version number via `-p scikit-learn` in 
addition of `-p sklearn` (the former is deprecated and will not be supported in 
watermark > 1.7).
 
+&nbsp;
 #### v. 1.3.3 (September 1, 2016)
 
 - Includes LICENSE in MANIFEST.in for packaging
 
+&nbsp;
 #### v. 1.3.2 (August 16, 2016)
 
 - Fixes an issue where the wrong package info was obtained when using the 
system level Jupyter within a virtualenv environment. (Via contribrution by 
[Michael Bell](https://github.com/mrbell))
 - Adds a new `-i`/ `--iso8601` parameter that returns the current date-time 
string in ISO 8601 format with offset to UTC. For instance: 
`2016-08-16T18:03:42-04:00`. Current caveat: Python < 3.2 requires external 
libraries for for computing the timezone offset, thus, Python < 3.2 will 
currently only print `2016-08-16T18:03:42`
 - Adds offsets to UTC to the default date-time string for Python >= 3.2
 
+&nbsp;
 #### v. 1.3.1 (June 6, 2016)
 
 - Fixes an issue that caused problems importing watermark using Python 2.x
 
+&nbsp;
 #### v. 1.3.0 (May 21, 2016)
 
 - Removed the deprecated the %install_ext magic so that watermark can now be 
installed as a regular python package via `pip` (Via contribution by [Peter 
Bull](https://github.com/pjbull))
 
+&nbsp;
 #### v. 1.2.3 (January 29, 2016)
 
 - Changed date format to the unambiguous ISO-8601 format
 - Ditched the deprecated %install_ext function and made watermark a proper 
Python package
 - Released the new version under a more permissive newBSD [license](./LICENSE)
 
+&nbsp;
 #### v. 1.2.2 (June 17, 2015)
 
 - Changed the default date-format of `-d`, `--date` to MM/DD/YYYY, the format 
DD/MM/YYYY can be used via the shortcut `-e`, `--eurodate`.
 
+&nbsp;
 #### v. 1.2.1 (March 3, 2015)
 
 - Small bugfix to allow custom time string formatting.
 
+&nbsp;
 #### v. 1.2.0 (October 1, 2014)
 
 - `--watermark` command added to print the current version of watermark.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/watermark-2.5.0/setup.cfg 
new/watermark-2.6.0/setup.cfg
--- old/watermark-2.5.0/setup.cfg       2024-09-21 02:39:21.356100300 +0200
+++ new/watermark-2.6.0/setup.cfg       2025-12-22 00:41:53.881722000 +0100
@@ -1,5 +1,5 @@
 [metadata]
-version = 2.5.0
+version = 2.6.0
 license_file = LICENSE
 classifiers = 
        Development Status :: 5 - Production/Stable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/watermark-2.5.0/setup.py new/watermark-2.6.0/setup.py
--- old/watermark-2.5.0/setup.py        2024-09-21 02:17:42.000000000 +0200
+++ new/watermark-2.6.0/setup.py        2025-12-22 00:40:22.000000000 +0100
@@ -1,4 +1,4 @@
-# Sebastian Raschka 2014-2022
+# Sebastian Raschka 2014-2025
 # IPython magic function to print date/time stamps and
 # various system information.
 # Author: Sebastian Raschka <sebastianraschka.com>
@@ -6,19 +6,21 @@
 # License: BSD 3 clause
 
 from os.path import dirname, join, realpath
-from textwrap import dedent
-
 from setuptools import find_packages, setup
 
 
 PROJECT_ROOT = dirname(realpath(__file__))
 REQUIREMENTS_FILE = join(PROJECT_ROOT, "requirements.txt")
+README_FILE = join(PROJECT_ROOT, "README.md")
 
-with open(REQUIREMENTS_FILE) as f:
+with open(REQUIREMENTS_FILE, encoding="utf-8") as f:
     install_reqs = f.read().splitlines()
 
 install_reqs.append("setuptools")
 
+with open(README_FILE, encoding="utf-8") as f:
+    long_description = f.read()
+
 # Also see settings in setup.cfg
 setup(
     name="watermark",
@@ -33,20 +35,6 @@
     packages=find_packages(exclude=[]),
     install_requires=install_reqs,
     extras_require={'gpu': ['py3nvml>=0.2']},
-    long_description=dedent(
-        """\
-        An IPython magic extension for printing date and time stamps, version
-        numbers, and hardware information.
-
-        Contact
-        =============
-        If you have any questions or comments about watermark,
-        please feel free to contact me via
-        email: [email protected]
-
-        This project is hosted at https://github.com/rasbt/watermark
-
-        The documentation can be found at
-        https://github.com/rasbt/watermark/blob/master/README.md""";
-    ),
+    long_description=long_description,
+    long_description_content_type="text/markdown",
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/watermark-2.5.0/watermark/magic.py 
new/watermark-2.6.0/watermark/magic.py
--- old/watermark-2.5.0/watermark/magic.py      2024-09-21 02:17:42.000000000 
+0200
+++ new/watermark-2.6.0/watermark/magic.py      2025-12-22 00:38:41.000000000 
+0100
@@ -73,6 +73,12 @@
     @argument('--gpu', action='store_true',
               help='prints GPU information (currently limited to NVIDIA GPUs),'
                    ' if available')
+    @argument('-je', '--jupyter_env', action='store_true',
+              help='prints the current Jupyter environment (e.g., Colab, VS 
Code)')
+    @argument('--python_installation', action='store_true',
+              help='include information about how Python was installed')
+    @argument('--check_latest', action='store_true',
+          help='check if the latest packages are installed')
     @line_magic
     def watermark(self, line):
         """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/watermark-2.5.0/watermark/watermark.py 
new/watermark-2.6.0/watermark/watermark.py
--- old/watermark-2.5.0/watermark/watermark.py  2024-09-21 02:25:52.000000000 
+0200
+++ new/watermark-2.6.0/watermark/watermark.py  2025-12-22 00:38:41.000000000 
+0100
@@ -10,7 +10,6 @@
 from __future__ import absolute_import
 
 import datetime
-import importlib
 import inspect
 import os
 import platform
@@ -60,6 +59,9 @@
         watermark=False,
         iversions=False,
         gpu=False,
+        jupyter_env=False,
+        python_installation=False,
+        check_latest=False,
         watermark_self=None,
         globals_=None
 ):
@@ -172,21 +174,32 @@
                 value = iso_dt
             else:
                 values = []
-                if args['current_date']:
-                    values.append(time.strftime("%Y-%m-%d"))
-                elif args['datename']:
-                    values.append(time.strftime("%a %b %d %Y"))
+                if args['current_date'] or args['datename']:
+                    if args['datename']:
+                        values.append(time.strftime("%a, %d %b %Y"))
+                    else:
+                        values.append(time.strftime("%Y-%m-%d"))
                 if args['current_time']:
                     time_str = time.strftime("%H:%M:%S")
                     if args['timezone']:
-                        time_str += time.strftime("%Z")
+                        time_str += " " + time.strftime("%Z")
                     values.append(time_str)
                 value = " ".join(values)
             output.append({"Last updated": value})
+        elif args['current_date'] or args['current_time']:
+            if args['current_date'] and args['current_time']:
+                date_str = time.strftime("%Y-%m-%d")
+                time_str = time.strftime("%H:%M:%S")
+                output.append({"Date/Time": f"{date_str} {time_str}"})
+            elif args['current_date']:
+                output.append({"Date": time.strftime("%Y-%m-%d")})
+            elif args['current_time']:
+                output.append({"Time": time.strftime("%H:%M:%S")})
         if args['python']:
             output.append(_get_pyversions())
         if args['packages']:
-            output.append(_get_packages(args['packages']))
+            check_latest = args.get('check_latest', False)
+            output.append(_get_packages(args['packages'], check_latest))
         if args['conda']:
             output.append(_get_conda_env())
         if args['machine']:
@@ -212,6 +225,10 @@
             output.append(_get_all_import_versions(ns))
         if args['gpu']:
             output.append(_get_gpu_info())
+        if args['python_installation']:
+            output.append({"Python installation": _get_python_installation()})
+        if args['jupyter_env']:
+            output.append({"Jupyter enviroment": _get_jupyter_env()})
         if args['watermark']:
             output.append({"Watermark": __version__})
 
@@ -239,35 +256,31 @@
     return iso_dt
 
 
-def _get_packages(pkgs):
+def _get_packages(pkgs, check_latest=False):
     packages = pkgs.split(",")
-    return {package: _get_package_version(package)
+    return {package: _get_package_version(package, check_latest)
             for package in packages}
 
 
-def _get_package_version(pkg_name):
-    """Return the version of a given package"""
-    if pkg_name == "scikit-learn":
-        pkg_name = "sklearn"
+def _get_package_version(pkg_name, check_latest=False):
+    """Internal helper to get the version of a package."""
+    current_version = 'unknown'
     try:
-        imported = importlib.import_module(pkg_name)
-    except ImportError:
-        version = "not installed"
-    else:
+        current_version = importlib_metadata.version(pkg_name)
+    except (importlib_metadata.PackageNotFoundError, KeyError):
         try:
-            version = importlib_metadata.version(pkg_name)
-        except importlib_metadata.PackageNotFoundError:
-            try:
-                version = imported.__version__
-            except AttributeError:
-                try:
-                    version = imported.version
-                except AttributeError:
-                    try:
-                        version = imported.version_info
-                    except AttributeError:
-                        version = "unknown"
-    return version
+            import importlib
+            temp_mod = importlib.import_module(pkg_name)
+            current_version = getattr(temp_mod, '__version__', 'unknown')
+        except Exception:
+            current_version = 'unknown'
+
+    if check_latest and current_version != 'unknown':
+        latest_version = _get_latest_version(pkg_name)
+        if latest_version and latest_version != current_version:
+            return f"{current_version} (version {latest_version} is available)"
+
+    return current_version
 
 
 def _get_pyversions():
@@ -337,7 +350,7 @@
     imported_pkgs = {module.__name__.split(".")[0] for module in 
imported_modules}
 
     imported_pkgs.discard("builtins")
-    for pkg_name in imported_pkgs:
+    for pkg_name in sorted(imported_pkgs):
         pkg_version = _get_package_version(pkg_name)
         if pkg_version not in ("not installed", "unknown"):
             to_print[pkg_name] = pkg_version
@@ -352,7 +365,7 @@
 def _get_gpu_info():
     if py3nvml is None:
         return {"GPU Info": 'Install the gpu extra '
-                '(pip install "watermark[gpu])") '
+                '(pip install "watermark[gpu]") '
                 'to display GPU information for NVIDIA chipsets'}
     try:
         gpu_info = [""]
@@ -371,3 +384,91 @@
     except:
         return {"GPU Info": "GPU information is not "
                 "available for this machine."}
+
+
+def _get_jupyter_env():
+    """Internal helper to detect the current Jupyter environment."""
+    import os
+    import importlib.util
+
+    if 'COLAB_RELEASE_TAG' in os.environ:
+        return "Google Colab"
+
+    if 'VSCODE_PID' in os.environ or 'VSCODE_CWD' in os.environ:
+        return "VS Code (Notebook)"
+
+    if 'KAGGLE_KERNEL_RUN_TYPE' in os.environ:
+        return "Kaggle Notebook"
+
+    def _is_jupyterlab():
+        lab_env_vars = (
+            'JUPYTERLAB_DIR',
+            'JUPYTERLAB_SETTINGS_DIR',
+            'JUPYTERLAB_WORKSPACES_DIR',
+            'JUPYTERLAB_APP_DIR',
+        )
+        if any(os.environ.get(var) for var in lab_env_vars):
+            return True
+
+        parent_app = os.environ.get('JPY_PARENT_APP', '')
+        parent_lower = parent_app.lower()
+        if 'jupyterlab' in parent_lower or 'jupyter-lab' in parent_lower:
+            return True
+        if parent_app and any(token in parent_lower for token in ('notebook', 
'nbclassic')):
+            return False
+
+        return importlib.util.find_spec('jupyterlab') is not None
+
+    try:
+        shell = get_ipython().__class__.__name__
+        if shell == 'ZMQInteractiveShell':
+            if _is_jupyterlab():
+                return "JupyterLab"
+            return "Jupyter Notebook (Classic)"
+        elif shell == 'TerminalInteractiveShell':
+            return "IPython Terminal"
+    except NameError:
+        return "Standard Python Interpreter"
+
+    return "Unknown / Classic Jupyter"
+
+
+def _get_python_installation():
+    """Internal helper to detect how Python was installed (Issue #89)."""
+    import sys
+    import os
+
+    exe_path = sys.executable.lower()
+
+    if 'conda' in exe_path or 'anaconda' in exe_path or 'miniconda' in 
exe_path:
+        return "Conda"
+
+    if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and 
sys.base_prefix != sys.prefix):
+        return "Virtual Environment (venv/virtualenv)"
+
+    if '.pyenv' in exe_path:
+        return "pyenv"
+
+    if 'windowsapps' in exe_path or 'microsoft\\windowsapps' in exe_path:
+        return "Windows Store"
+
+    if 'homebrew' in exe_path or '/usr/local/cellar/' in exe_path:
+        return "Homebrew"
+
+    if os.path.exists('/.dockerenv'):
+        return "Docker container"
+
+    return "System/Official"
+
+
+def _get_latest_version(package_name):
+    """Fetch the latest version of a package from PyPI."""
+    import urllib.request
+    import json
+    try:
+        url = f"https://pypi.org/pypi/{package_name}/json";
+        with urllib.request.urlopen(url, timeout=2) as response:
+            data = json.loads(response.read().decode())
+            return data['info']['version']
+    except Exception:
+        return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/watermark-2.5.0/watermark.egg-info/PKG-INFO 
new/watermark-2.6.0/watermark.egg-info/PKG-INFO
--- old/watermark-2.5.0/watermark.egg-info/PKG-INFO     2024-09-21 
02:39:21.000000000 +0200
+++ new/watermark-2.6.0/watermark.egg-info/PKG-INFO     2025-12-22 
00:41:53.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: watermark
-Version: 2.5.0
+Version: 2.6.0
 Summary: IPython magic function to print date/time stamps and various system 
information.
 Home-page: https://github.com/rasbt/watermark
 Author: Sebastian Raschka
@@ -17,19 +17,419 @@
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Requires-Python: >=3.7
-Provides-Extra: gpu
+Description-Content-Type: text/markdown
 License-File: LICENSE
+Requires-Dist: ipython>=6.0
+Requires-Dist: importlib-metadata>=1.4
+Requires-Dist: setuptools
+Provides-Extra: gpu
+Requires-Dist: py3nvml>=0.2; extra == "gpu"
+Dynamic: author
+Dynamic: author-email
+Dynamic: description
+Dynamic: description-content-type
+Dynamic: home-page
+Dynamic: license
+Dynamic: license-file
+Dynamic: provides-extra
+Dynamic: requires-dist
+Dynamic: summary
+
+[![Build 
status](https://ci.appveyor.com/api/projects/status/2q1iwyc5bbfnqxik?svg=true)](https://ci.appveyor.com/project/rasbt/watermark)
+[![PyPI 
version](https://badge.fury.io/py/watermark.svg)](http://badge.fury.io/py/watermark)
+![Python 3](https://img.shields.io/badge/python-3-blue.svg)
+![License](https://img.shields.io/badge/license-BSD-blue.svg)
+
+# watermark
+
+An IPython magic extension for printing date and time stamps, version numbers, 
and hardware information.
+<br>
+
+#### Sections
+
+- [Examples](#examples)
+- [Installation and updating](#installation-and-updating)
+- [Usage](#usage)
+- [Development guidelines](#development-guidelines)
+- [Changelog](#changelog)
+
+&nbsp;
+## Examples
+
+[[top](#sections)]
+
+### Using watermark in  Jupyter notebooks and IPython sessions
+
+
+
+<img src="docs/images/ex1.png" width=300>
+<img src="docs/images/ex2.png" width=200>
+
+&nbsp;
+
+**More examples can be found in this [Jupyter 
notebook](docs/watermark.ipynb).**
+
+[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/rasbt/watermark/master?filepath=docs%2Fwatermark.ipynb)
+
+&nbsp;
+### Using watermark as a module
+
+
+```python
+from watermark import watermark
+print(watermark())
+```
+
+```
+Last updated: 2022-09-13T16:28:56.177487-05:00
+
+Python implementation: CPython
+Python version       : 3.9.13
+IPython version      : 8.4.0
+
+Compiler    : Clang 13.0.1
+OS          : Darwin
+Release     : 21.6.0
+Machine     : arm64
+Processor   : arm
+CPU cores   : 10
+Architecture: 64bit
+```
+
+```python
+print(watermark(packages="numpy,scipy"))
+```
+
+```
+numpy: 1.23.2
+scipy: 1.9.1
+```
+
+
+
+See `help(watermark)` for more options.
+
+
+&nbsp;
+## Installation and updating
+
+[[top](#sections)]
+
+The watermark line magic can be installed by executing
+
+```bash
+pip install watermark
+```
+
+Alternatively, you can install the latest development version directly from 
GitHub via
+
+```bash
+pip install -e git+https://github.com/rasbt/watermark#egg=watermark
+```
+
+<br>
+
+Note:
+
+To remove an old `watermark` installation (installed via the deprecated 
`%install_ext` magic extension), simply delete it from the 
``.ipython/extensions/`` directory, which is typically located in a user's home 
directory.
+
+&nbsp;
+## Usage
+
+[[top](#sections)]
+
+After successful installation, the `watermark` magic extension can be loaded 
via:
+
+```python
+%load_ext watermark
+```
+
+<br>
+
+To get an overview of all available commands, type:
+
+```python
+%watermark?
+```
+
+<br>
+
+```raw
+  %watermark [-a AUTHOR] [-gu GITHUB_USERNAME] [-e EMAIL] [-ws WEBSITE]
+                 [-d] [-n] [-t] [-i] [-z] [-u] [-c CUSTOM_TIME] [-v]
+                 [-p PACKAGES] [-co] [-h] [-m] [-g] [-r] [-b] [-w] [-iv]
+
+IPython magic function to print date/time stamps
+and various system information.
+
+optional arguments:
+  -a AUTHOR, --author AUTHOR
+                        prints author name
+  -gu GITHUB_USERNAME, --github_username GITHUB_USERNAME
+                        prints author github username
+  -e EMAIL, --email EMAIL
+                        prints author email
+  -ws WEBSITE, --website WEBSITE
+                        prints author or project website
+  -d, --date            prints current date as YYYY-mm-dd
+  -n, --datename        prints date with abbrv. day and month names
+  -t, --time            prints current time as HH-MM-SS
+  -i, --iso8601         prints the combined date and time including the time
+                        zone in the ISO 8601 standard with UTC offset
+  -z, --timezone        appends the local time zone
+  -u, --updated         appends a string "Last updated: "
+  -c CUSTOM_TIME, --custom_time CUSTOM_TIME
+                        prints a valid strftime() string
+  -v, --python          prints Python and IPython version
+  -p PACKAGES, --packages PACKAGES
+                        prints versions of specified Python modules and
+                        packages
+  -co, --conda          prints name of current conda environment
+  -h, --hostname        prints the host name
+  -m, --machine         prints system and machine info
+  -g, --githash         prints current Git commit hash
+  -r, --gitrepo         prints current Git remote address
+  -b, --gitbranch       prints current Git branch
+  -w, --watermark       prints the current version of watermark
+  -iv, --iversions      prints the name/version of all imported modules
+  --gpu                 prints GPU information (currently limited to NVIDIA
+                        GPUs), if available
+  -je, --jupyter_env    prints the current Jupyter environment (e.g., Colab,
+                        VS Code)
+  --python_installation
+                        include information about how Python was installed
+  --check_latest        check if the latest packages are installed
+```
+
+&nbsp;
+## Development guidelines
+
+[[top](#sections)]
+
+In line with [NEP 29][nep-29], this project supports:
+
+- All minor versions of Python released 42 months prior to the project, and at 
minimum the two latest minor versions.
+
+[nep-29]: https://numpy.org/neps/nep-0029-deprecation_policy.html
+
+&nbsp;
+## Changelog
+
+[[top](#sections)]
+
+#### v. 2.6.0 (TBA)
+
+- Adds a new `--check_jupyter` flag to report on which notebook environment is 
used (e.g., Colab, Jupyter Notebook, Jupyter Lab, VSCode). 
([#102](https://github.com/rasbt/watermark/pull/99), via contribution by 
[Mariam Zakaria](https://github.com/mariam851))
+- Adds a new `--check_latest` flag to check whether newer package versions are 
available. ([#102](https://github.com/rasbt/watermark/pull/99), via 
contribution by [Mariam Zakaria](https://github.com/mariam851))
+- Adds a new `--python_installation` flag to provide information about how 
Python was installed.  ([#102](https://github.com/rasbt/watermark/pull/99), via 
contribution by [Mariam Zakaria](https://github.com/mariam851))
+
+&nbsp;
+#### v. 2.5.1 (Dec 14, 2025)
+
+- `--iversion` packages are now sorted alphabetically. 
([#102](https://github.com/rasbt/watermark/pull/99), via contribution by [Vijay 
Lulla](https://github.com/vlulla))
+- Extra args to allow printing `-d` (current date) and `-t` (current time) 
information without needing to use the `-u` (updated) flag.  
([#99](https://github.com/rasbt/watermark/pull/99), via contribution by [Daniel 
Kleine](https://github.com/d-kleine))
+
+&nbsp;
+#### v. 2.5.0 (Sep 20, 2024)
+
+- Can now capture imports retrospectively via `-iv` more reliably.  
([#94](https://github.com/rasbt/watermark/pull/94), via contribution by [Martin 
Perier](https://github.com/martinp7))
+
+ For example,
+
+```python
+from sympy import solve
+```
+
+```
+%load_ext watermark
+```
+
+```
+%watermark -iv
+```
+
+Correctly prints `sympy: 1.11.1`
+
+
+
+&nbsp;
+#### v. 2.4.3 (May 23, 2023)
+
+- Make `py3nvml` installation for GPU info optional. 
([#92](https://github.com/rasbt/watermark/pull/92), via contribution by [Ben 
Greiner](https://github.com/bnavigator))
+
+&nbsp;
+#### v. 2.4.1 and v 2.4.2 (May 23, 2023)
+
+- PyPI and Conda-Forge packaging fixes.
+
+&nbsp;
+#### v. 2.4.0 (May 23, 2023)
+
+- Adds a new `--gpu` flag to print out GPU information (currently limited to 
NVIDIA devices) ([#90](https://github.com/rasbt/watermark/pull/90), via 
contribution by [907Resident](https://github.com/907Resident))
+
+&nbsp;
+#### v. 2.3.1 (May 27, 2022)
+
+- Upper limit on importlib-metadata caused trouble installing on Python 3.7.
+  Instead pin to minimum version with Python 3.8 functionality according to 
https://github.com/python/importlib_metadata#compatibility  
([#86](https://github.com/rasbt/watermark/pull/86), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+
+&nbsp;
+#### v. 2.3.0 (January 3, 2022)
+
+- Added the following arguments: `--github_username` - for prints author 
github username, `--email` - for prints author email, `--website` - for prints 
author or project website. ([#82](https://github.com/rasbt/watermark/pull/82), 
via contribution by [joschkazj](https://github.com/joschkazj))
+- Added a `--conda` option to print the name of the current conda environment. 
([#79](https://github.com/rasbt/watermark/pull/79), via contribution by 
[Alexander Krasnikov](https://github.com/askras))
+-  It is now possible to inject globals when used outside IPython 
([#80](https://github.com/rasbt/watermark/pull/80), via contribution by [
+Hugo Lapré](https://github.com/Hugovdberg)). For example, version numbers of 
imported packages can now be obtained as follows:
+
+```python
+import numpy
+import watermark.watermark as watermark
+
+
+watermark(iversions=True, globals_=globals())
+```
+
+&nbsp;
+#### v. 2.2.0 (February 17, 2021)
+
+- Refactoring such that a `watermark()` function now also works outside 
IPython and Jupyter. Now, the magic `%watermark` calls `watermark()`. Calling 
`%watermark` via IPython and Juypter still works as usual. However, in addition 
the `watermark()` function can be used within regular Python for unit testing 
purposes etc. ([#46](https://github.com/rasbt/watermark/pull/46), via 
contribution by [Tymoteusz Wołodźko](https://github.com/twolodzko))
+
+&nbsp;
+#### v. 2.1.0 (November 23, 2020)
+
+- Adopt [NEP 29][nep-29] and require Python version 3.7 or newer. 
([#63](https://github.com/rasbt/watermark/pull/63), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+- Add Python 3.8 and 3.9 to Travis CI builds. 
([#63](https://github.com/rasbt/watermark/pull/63), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+- Fix: Allow setup.py to run without install_requires already installed 
([#67](https://github.com/rasbt/watermark/pull/67), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+- Major refactoring to improve code readability 
([#64](https://github.com/rasbt/watermark/pull/64) and 
[65](https://github.com/rasbt/watermark/pull/65), via contribution by [Bahram 
Aghaei](https://github.com/GreatBahram))
+- Use importlib and importlib.metadata to determine package version numbers. 
([#66](https://github.com/rasbt/watermark/pull/66), via contribution by [James 
Myatt](https://github.com/jamesmyatt))
+
+&nbsp;
+#### v. 2.0.2 (November 19, 2019)
+
+- Support `VERSION` attributes, in addition to `__version__` attributes.
+
+&nbsp;
+#### v. 2.0.1 (October 04, 2019)
+
+- Fix `'sklearn'` vs. `'scikit-learn'` import compatibility.
+
+&nbsp;
+#### v. 2.0.0 (October 04, 2019)
+
+- Now uses `pkg_resources` as the default method for getting version numbers.
+- Fixes a whitespace bug when printing the timezone.
+
+&nbsp;
+#### v. 1.8.2 (July 28, 2019)
+
+- When no Python library was imported and the `--iversion` is used, print an 
empty string instead of raising an error.
+
+&nbsp;
+#### v. 1.8.1 (January 26, 2019)
+
+- Fixes string alignment issues when the `-iv`/`--iversion` flag is used.
+
+&nbsp;
+#### v. 1.8.0 (January 02, 2019)
+
+- The `-iv`/`--iversion` flag now also shows package versions that were 
imported as `from X import Y`
+and `import X.Y as Y`. For example,
+
+```python
+import scipy as sp
+from sklearn import metrics
+import numpy.linalg as linalg
+```
+
+```
+%watermark --iversions
+```
+
+will return
+
+```
+scipy     1.1.0
+sklearn   0.20.1
+numpy     1.15.4
+```
+
+&nbsp;
+#### v. 1.7.0 (October 13, 2018)
+
+(Via contribution by [James Myatt](https://github.com/jamesmyatt))
+
+- Shows "not installed" for version of packages/modules that cannot be 
imported.
+- Shows "unknown" for version of packages/modules when version attribute 
cannot be found.
+- Add Python 3.6 and 3.7 to Travis CI builds.
+- Add classifiers to setuptools configuration.
+
+&nbsp;
+#### v. 1.6.1 (June 10, 2018)
+
+- Now also includes the LICENSE file in the Python Wheels distribution
+
+&nbsp;
+#### v. 1.6.0 (January18, 2018)
+
+- Adds a new `-b`/`--gitbranch` parameter that prints the current Git branch.
+
+&nbsp;
+#### v. 1.5.0 (August 27, 2017)
+
+- Adds a new `-iv`/ `--iversions` parameter that prints the package names and 
version numbers of all packages that were previously imported in the current 
Python session. (Via contribution by [Aziz Alto](https://github.com/iamaziz))
+
+&nbsp;
+#### v. 1.4.0 (April 18, 2017)
+
+- Adds a new `-r`/ `--gitrepo` parameter that returns the URL of Git remote 
name "origin". (Via contribution by [Lucy Park](https://github.com/e9t))
+
+&nbsp;
+#### v. 1.3.4 (October 15, 2016)
+
+- Allow fetching scikit-learn's version number via `-p scikit-learn` in 
addition of `-p sklearn` (the former is deprecated and will not be supported in 
watermark > 1.7).
+
+&nbsp;
+#### v. 1.3.3 (September 1, 2016)
+
+- Includes LICENSE in MANIFEST.in for packaging
+
+&nbsp;
+#### v. 1.3.2 (August 16, 2016)
+
+- Fixes an issue where the wrong package info was obtained when using the 
system level Jupyter within a virtualenv environment. (Via contribrution by 
[Michael Bell](https://github.com/mrbell))
+- Adds a new `-i`/ `--iso8601` parameter that returns the current date-time 
string in ISO 8601 format with offset to UTC. For instance: 
`2016-08-16T18:03:42-04:00`. Current caveat: Python < 3.2 requires external 
libraries for for computing the timezone offset, thus, Python < 3.2 will 
currently only print `2016-08-16T18:03:42`
+- Adds offsets to UTC to the default date-time string for Python >= 3.2
+
+&nbsp;
+#### v. 1.3.1 (June 6, 2016)
+
+- Fixes an issue that caused problems importing watermark using Python 2.x
+
+&nbsp;
+#### v. 1.3.0 (May 21, 2016)
+
+- Removed the deprecated the %install_ext magic so that watermark can now be 
installed as a regular python package via `pip` (Via contribution by [Peter 
Bull](https://github.com/pjbull))
+
+&nbsp;
+#### v. 1.2.3 (January 29, 2016)
+
+- Changed date format to the unambiguous ISO-8601 format
+- Ditched the deprecated %install_ext function and made watermark a proper 
Python package
+- Released the new version under a more permissive newBSD [license](./LICENSE)
+
+&nbsp;
+#### v. 1.2.2 (June 17, 2015)
+
+- Changed the default date-format of `-d`, `--date` to MM/DD/YYYY, the format 
DD/MM/YYYY can be used via the shortcut `-e`, `--eurodate`.
 
-An IPython magic extension for printing date and time stamps, version
-numbers, and hardware information.
+&nbsp;
+#### v. 1.2.1 (March 3, 2015)
 
-Contact
-=============
-If you have any questions or comments about watermark,
-please feel free to contact me via
-email: [email protected]
+- Small bugfix to allow custom time string formatting.
 
-This project is hosted at https://github.com/rasbt/watermark
+&nbsp;
+#### v. 1.2.0 (October 1, 2014)
 
-The documentation can be found at
-https://github.com/rasbt/watermark/blob/master/README.md
+- `--watermark` command added to print the current version of watermark.
+- Print author name on a separate line
+- Fixed bug that day takes the same value as the minute if the `-n` flag is 
used.

Reply via email to