From 28f9fc6b694114c19afe24b16ecacbc153e0bc8d Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Wed, 15 Apr 2020 17:36:27 -0700 Subject: [PATCH 1/5] Include README for next release to PyPI --- setup.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.py b/setup.py index 52b8fb9..ebb24fe 100644 --- a/setup.py +++ b/setup.py @@ -12,6 +12,8 @@ name='msal-extensions', version=__version__, packages=find_packages(), + long_description=open('README.md').read(), + long_description_content_type="text/markdown", classifiers=[ 'Development Status :: 2 - Pre-Alpha', ], From 1fdd7d78721e5d725e6da6bc69d32a693ef93bb4 Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Fri, 17 Apr 2020 16:28:30 -0700 Subject: [PATCH 2/5] Bypass an error only happen on Travis CI's Py3.5 --- setup.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index ebb24fe..4598bef 100644 --- a/setup.py +++ b/setup.py @@ -8,12 +8,17 @@ io.open('msal_extensions/__init__.py', encoding='utf_8_sig').read() ).group(1) +try: + long_description = open('README.md').read() +except OSError: + long_description = "README.md is not accessible on TRAVIS CI's Python 3.5" + setup( name='msal-extensions', version=__version__, packages=find_packages(), - long_description=open('README.md').read(), - long_description_content_type="text/markdown", + long_description=long_description, + long_description_content_type="text/markdown", classifiers=[ 'Development Status :: 2 - Pre-Alpha', ], From c5d8bcc8d6c90a2ecac14aa57d6a9cac05de2fd0 Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Fri, 17 Apr 2020 16:16:22 -0700 Subject: [PATCH 3/5] Only require PyGObject at runtime --- msal_extensions/libsecret.py | 41 ++++++++++++++++++++++++++---------- sample/persistence_sample.py | 4 ++-- setup.py | 3 ++- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/msal_extensions/libsecret.py b/msal_extensions/libsecret.py index fa64a94..9f624e7 100644 --- a/msal_extensions/libsecret.py +++ b/msal_extensions/libsecret.py @@ -15,16 +15,32 @@ """ import logging -import gi # https://pygobject.readthedocs.io/en/latest/getting_started.html - -# pylint: disable=no-name-in-module -gi.require_version("Secret", "1") # Would require a package gir1.2-secret-1 -# pylint: disable=wrong-import-position -from gi.repository import Secret # Would require a package gir1.2-secret-1 - - logger = logging.getLogger(__name__) +try: + import gi # https://github.com/AzureAD/microsoft-authentication-extensions-for-python/wiki/Encryption-on-Linux +except ImportError: + logger.exception( + """Runtime dependency of PyGObject is missing. +Depends on your Linux distro, you could install it system-wide by something like: + sudo apt install python3-gi python3-gi-cairo gir1.2-secret-1 +If necessary, please refer to PyGObject's doc: +https://pygobject.readthedocs.io/en/latest/getting_started.html +""") + raise + +try: + # pylint: disable=no-name-in-module + gi.require_version("Secret", "1") # Would require a package gir1.2-secret-1 + # pylint: disable=wrong-import-position + from gi.repository import Secret # Would require a package gir1.2-secret-1 +except (ValueError, ImportError): + logger.exception( + """Require a package "gir1.2-secret-1" which could be installed by: + sudo apt install gir1.2-secret-1 + """) + raise + class LibSecretAgent(object): """A loader/saver built on top of low-level libsecret""" # Inspired by https://developer.gnome.org/libsecret/unstable/py-examples.html @@ -111,9 +127,12 @@ def trial_run(): assert agent.load() == payload # This line is probably not reachable agent.clear() except (gi.repository.GLib.Error, AssertionError): - message = ( - "libsecret did not perform properly. Please refer to " - "https://github.com/AzureAD/microsoft-authentication-extensions-for-python/wiki/Encryption-on-Linux") # pylint: disable=line-too-long + message = """libsecret did not perform properly. +* If you encountered error "Remote error from secret service: + org.freedesktop.DBus.Error.ServiceUnknown", + you may need to install gnome-keyring package. +* Headless mode (such as in an ssh session) is not supported. +""" logger.exception(message) # This log contains trace stack for debugging logger.warning(message) # This is visible by default raise diff --git a/sample/persistence_sample.py b/sample/persistence_sample.py index dc24435..74074d3 100644 --- a/sample/persistence_sample.py +++ b/sample/persistence_sample.py @@ -27,10 +27,10 @@ def build_persistence(location, fallback_to_plaintext=False): except: # pylint: disable=bare-except if not fallback_to_plaintext: raise - logging.exception("Encryption unavailable. Opting in to plain text.") + logging.warning("Encryption unavailable. Opting in to plain text.") return FilePersistence(location) -persistence = build_persistence("storage.bin") +persistence = build_persistence("storage.bin", fallback_to_plaintext=False) print("Is this persistence encrypted?", persistence.is_encrypted) data = { # It can be anything, here we demonstrate an arbitrary json object diff --git a/setup.py b/setup.py index 4598bef..7f29700 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,8 @@ 'msal>=0.4.1,<2.0.0', 'portalocker~=1.6', "pathlib2;python_version<'3.0'", - "pygobject>=3,<4;platform_system=='Linux'", + ## We choose to NOT define a hard dependency on this. + # "pygobject>=3,<4;platform_system=='Linux'", ], tests_require=['pytest'], ) From 9f08bcae75aa2cddac518272862da81b6b2f1bda Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Wed, 22 Apr 2020 12:55:34 -0700 Subject: [PATCH 4/5] Use more precise dependency declaration --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 7f29700..1af3713 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,8 @@ package_data={'': ['LICENSE']}, install_requires=[ 'msal>=0.4.1,<2.0.0', - 'portalocker~=1.6', + "portalocker~=1.6;platform_system=='Windows'", + "portalocker~=1.0;platform_system!='Windows'", "pathlib2;python_version<'3.0'", ## We choose to NOT define a hard dependency on this. # "pygobject>=3,<4;platform_system=='Linux'", From 885d0f9507078ee6592dd1853cabb8093e6e6534 Mon Sep 17 00:00:00 2001 From: Ray Luo Date: Wed, 22 Apr 2020 10:04:13 -0700 Subject: [PATCH 5/5] MSAL Extensions for Python 0.2.1 Bumping version number --- msal_extensions/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msal_extensions/__init__.py b/msal_extensions/__init__.py index 1d573a0..841d862 100644 --- a/msal_extensions/__init__.py +++ b/msal_extensions/__init__.py @@ -1,5 +1,5 @@ """Provides auxiliary functionality to the `msal` package.""" -__version__ = "0.2.0" +__version__ = "0.2.1" import sys