Skip to content

Release 0.1.0 #25

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Jul 11, 2019
Merged

Release 0.1.0 #25

merged 13 commits into from
Jul 11, 2019

Conversation

rayluo
Copy link
Contributor

@rayluo rayluo commented Jul 11, 2019

Each of the sub-PRs included in this release has been tested, reviewed and approved in their individual PR. The purpose of this all-in-one release PR is to organize the release process. Please review/proof-read the following release notes.

Release Notes:

If you prefer to, you can install this branch for your smoke testing:

pip install git+https://github.com/AzureAD/microsoft-authentication-extensions-for-python.git@release-0.1.0

marstr and others added 13 commits May 9, 2019 15:32
* Establishing most basic file structure.

* Promoting msal_extensions folder in file structure.

* Parse __init__ for version number.

This flow is based on code found here:
https://stackoverflow.com/questions/17583443/what-is-the-correct-way-to-share-package-version-with-setup-py-and-the-package/39671214#39671214

However the pattern was expanded slightly to handle String Literal Prefixes as defined here:
https://docs.python.org/3/reference/lexical_analysis.html#grammar-token-stringprefix

* Exclude tests from bundled packages.

* Fixing formatting nit

* Removing "tests" from being a package.

This prevents "find_packages" from picking it up, even if there is no exclusion set.
* Adding a class to prevent entry into a code-block until a file lock can be taken.

This replicates logic in the .NET exensions repository found here:
https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/blob/113ecc725891395dd7212aac82d0681f9a0d60ce/src/Shared/CrossPlatLock.cs

It will allow .NET processes and Python processes to not step on eachother's toes.

It does add a dependency on two new libraries: psutil and portalocker

* Adding class doc-comment.

* Remove dependency on psutil

* Fixing naming convention

* Removing unused constants

* Removing dir presence assertion
* Add TravisCI

* Fixing no-newline nit

* Auto-complete error

* Fix pylint syntax

* Remove duplicate linux jobs

* Fix pylint violations

* Updating suppression mechanism

* Fixing Python2 compat bug

* Set distro to xenial

* Fixing non-Linux TravisCI support

I had to follow this guidance:
https://docs.travis-ci.com/user/languages/python/#running-python-tests-on-multiple-operating-systems

* Add Windows Python2

* Experimentally change chocolately package name

* Fix chocolatey version spec

* Add Windows 3.5 to matrix

* Fix DocString
* Add DP API Cache

* Removing superfluous underscores in Windows components.

* Make DATA_BLOB.raw idempotent

* WindowsTokenCache._has_state_changed -> WindowsTokenCache.needs_refresh

* Revert "Make DATA_BLOB.raw idempotent"

This reverts commit b9becbc.

Once tested on a Windows box (read, actually tested) it demonstrated
that this change causes a seg-fault and crash on Windows.

* Broadening scope of lock

* Refactoring WindowsDataProtectionAgent constructor

* Refactor WindowsTokenCache constructor

* Rename Windows read_msal_cache test

* Add WindowsTokenCache roundtrip test

* Removing unused import

* WindowsTokenCache.needs_refresh -> WindowsTokenCache._needs_refresh

* Use kwargs for WindowsTokenCache.find

* Fixing some pylint errors

* Delete C allocated memory when DataBlob is GC'd

* Pulling _local_free out of DataBlob.raw

Putting LocalFree in `raw` in the first place was a mistake, and
represented a fundamental misunderstanding of DataBlob's memory
management story. The memory it points at must be managed independently
of the DataBlob's lifecycle.
* Fixing all remaining pylint errors in windows.py

* Fixing variables named buffer so they don't conflict with python2 names.
* Adding default value for LOCALAPPDATA

* Responding to review feedback

* Add default LOCALAPPDATA to test file as well

* Remove reference to Python3-only type in test

* Raise an error instead of returning an empty value.

* Correct syntax for using winerr parameter

* Fixing OSError syntax to not include named arguments

* Chaning to IOError to fix Python2 some more

* Suppressing remaining error

* Editting fallback error-code
* Increase version in setup.py

* Replacing `remove_rt` and `update_rt` with `modify`

* Making argument types consistent.

* Formatting fix for pylint
* Add KeyChain Cache

* Use **kwargs in OSXTokenCache.find

* Fixing pylint errors

* Use CrossPlatLock in OSX Cache

* Adding partially implemented cache MUX

* Overload modify instead of more specific commands

* Squash warnings about duplicate code

* Fix pylint error about unnecessary `elif` statements.

* Fixing line formatting err from pylint

* Add missing doc-strings as noted by pylint

* Revert "Squash warnings about duplicate code"

This reverts commit f8f61bd.

* Pull duplicated code into single unprotected SerializableTokenCache implementation that can be overriden

* Move all token cache implementations into .token_cache

Previously, implementations lived in their platform specific files. However, this created an import cycle that pylint was complaining about.

* Fixing formatting nit

* Mux on generic form of FileTokenCache as fallback plan

* Removing redundant test

* Fix documentation typo

* Making directory creation call in _mkdir_p recursive.

* Restructuring what occurs in _read/_write and the other modifiers

* Fix kwargs use in constructors

* Fix invalid/inaccurate file mode for agnostic backend

* Add test for plain file token cache.

* Moving error handling out of _read and _write.

This accomplishes a couple of things:
	- Establishes that _read and _write SHOULD error out if they are unable to do their job. This way different places in code base can choose what is and is not an acceptable place to fail a read or write operation.
	- Keeps the contract that derived class implementers need to fulfill very simple.

* Suppress pylint error caused by difference in parameters, which is done strategically with kwargs

* Removing duplicated line

* Brining all Keychain Error constructors into the same shape.

* Don't defer failure of OS module loads

* Remove child error-types

* Do token cache switching at import time instead of having a separate factory
This squash will remove all those experimental commits that no longer necessary.
@rayluo rayluo requested a review from marstr July 11, 2019 00:23
@rayluo rayluo merged commit efdfeba into master Jul 11, 2019
@rayluo rayluo deleted the release-0.1.0 branch July 17, 2019 19:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants