-
Notifications
You must be signed in to change notification settings - Fork 24
feat: process flag evaluation options in client #31
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
beeme1mr
merged 17 commits into
open-feature:main
from
tcarrio:feat/process-flag-evaluation-options
Dec 2, 2022
Merged
Changes from all commits
Commits
Show all changes
17 commits
Select commit
Hold shift + click to select a range
ca0b6f4
feat: process flag evaluation options in client
tcarrio 63825b1
test: add unit tests to assert hook_hints are called in hooks
tcarrio 7ffc959
build: ignore venv directories
tcarrio 6d86aa1
style: applied black formatting
tcarrio c1addb4
style: run isort formatter
tcarrio f2534eb
Merge branch 'main' into feat/process-flag-evaluation-options
tcarrio 4e478c4
fix: typing reference using square brackets
tcarrio 6361916
fix: include closing parens on after_hooks call
tcarrio a18481c
fix: running test suite with immutable hook hints
tcarrio 34d7892
build: add Makefile for build tasks
tcarrio 297c0c2
docs: contributing information in README, new file, touch-ups for Mak…
tcarrio c4489dc
docs: update CONTRIBUTING.md
tcarrio 4fedcc8
docs: update CONTRIBUTING.md
tcarrio 2f5c73c
ci: support for Python 3.11 in PR action
tcarrio eb5ce6b
feat: reverse the original hooks list and utilize FlagEvaluationContext
tcarrio 01d3214
docs: reference python-sdk
tcarrio d7d3ac3
fix: remove unused import
tcarrio File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -47,4 +47,7 @@ coverage.xml | |
*.pot | ||
|
||
# Sphinx documentation | ||
docs/_build/ | ||
docs/_build/ | ||
|
||
# Virtual env directories | ||
.venv |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
# Contributing | ||
|
||
## Development | ||
|
||
### System Requirements | ||
|
||
Python 3.8 and above are required. | ||
|
||
### Target version(s) | ||
|
||
Python 3.8 and above are supported by the SDK. | ||
|
||
### Installation and Dependencies | ||
|
||
A [`Makefile`](./Makefile) has been included in the project which should make it straightforward to start the project locally. We utilize virtual environments (see [`virtualenv`](https://docs.python.org/3/tutorial/venv.html)) in order to provide isolated development environments for the project. This reduces the risk of invalid or corrupt global packages. It also integrates nicely with Make, which will detect changes in the `requirements-dev.txt` file and update the virtual environment if any occur. | ||
|
||
Run `make init` to initialize the project's virtual environment and install all dev dependencies. | ||
|
||
### Testing | ||
|
||
Run tests with `make test`. | ||
|
||
We use `pytest` for our unit testing, making use of `parametrized` to inject cases at scale. | ||
|
||
### Integration tests | ||
|
||
These are planned once the SDK has been stabilized and a Flagd provider implemented. At that point, we will utilize the [gherkin integration tests](https://github.com/open-feature/test-harness/blob/main/features/evaluation.feature) to validate against a live, seeded Flagd instance. | ||
|
||
### Packaging | ||
|
||
We publish to the PyPI repository, where you can find this package at [openfeature-sdk](https://pypi.org/project/openfeature-sdk/). | ||
|
||
## Pull Request | ||
|
||
All contributions to the OpenFeature project are welcome via GitHub pull requests. | ||
|
||
To create a new PR, you will need to first fork the GitHub repository and clone upstream. | ||
|
||
```bash | ||
git clone https://github.com/open-feature/python-sdk.git openfeature-python-sdk | ||
``` | ||
|
||
Navigate to the repository folder | ||
|
||
```bash | ||
cd openfeature-python-sdk | ||
``` | ||
|
||
Add your fork as an origin | ||
|
||
```bash | ||
git remote add fork https://github.com/YOUR_GITHUB_USERNAME/python-sdk.git | ||
``` | ||
|
||
Ensure your development environment is all set up by building and testing | ||
|
||
```bash | ||
make | ||
``` | ||
|
||
To start working on a new feature or bugfix, create a new branch and start working on it. | ||
|
||
```bash | ||
git checkout -b feat/NAME_OF_FEATURE | ||
matthewelwell marked this conversation as resolved.
Show resolved
Hide resolved
|
||
# Make your changes | ||
git commit | ||
git push fork feat/NAME_OF_FEATURE | ||
``` | ||
|
||
Open a pull request against the main python-sdk repository. | ||
|
||
### How to Receive Comments | ||
|
||
- If the PR is not ready for review, please mark it as | ||
[`draft`](https://github.blog/2019-02-14-introducing-draft-pull-requests/). | ||
- Make sure all required CI checks are clear. | ||
- Submit small, focused PRs addressing a single concern/issue. | ||
- Make sure the PR title reflects the contribution. | ||
- Write a summary that explains the change. | ||
- Include usage examples in the summary, where applicable. | ||
|
||
### How to Get PRs Merged | ||
|
||
A PR is considered to be **ready to merge** when: | ||
|
||
- Major feedback is resolved. | ||
- Urgent fix can take exception as long as it has been actively communicated. | ||
|
||
Any Maintainer can merge the PR once it is **ready to merge**. Note, that some | ||
PRs may not be merged immediately if the repo is in the process of a release and | ||
the maintainers decided to defer the PR to the next release train. | ||
|
||
If a PR has been stuck (e.g. there are lots of debates and people couldn't agree | ||
on each other), the owner should try to get people aligned by: | ||
|
||
- Consolidating the perspectives and putting a summary in the PR. It is | ||
recommended to add a link into the PR description, which points to a comment | ||
with a summary in the PR conversation. | ||
- Tagging domain experts (by looking at the change history) in the PR asking | ||
for suggestion. | ||
- Reaching out to more people on the [CNCF OpenFeature Slack channel](https://cloud-native.slack.com/archives/C0344AANLA1). | ||
- Stepping back to see if it makes sense to narrow down the scope of the PR or | ||
split it up. | ||
- If none of the above worked and the PR has been stuck for more than 2 weeks, | ||
the owner should bring it to the OpenFeatures [meeting](README.md#contributing). | ||
|
||
## Design Choices | ||
|
||
As with other OpenFeature SDKs, python-sdk follows the | ||
[openfeature-specification](https://github.com/open-feature/spec). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
VENV = . .venv/bin/activate | ||
|
||
.PHONY: all | ||
all: lint test | ||
|
||
.PHONY: init | ||
init: .venv | ||
|
||
.venv: requirements-dev.txt | ||
test -d .venv || python -m virtualenv .venv | ||
$(VENV); pip install -Ur requirements-dev.txt | ||
|
||
.PHONY: test | ||
test: .venv | ||
$(VENV); pytest | ||
|
||
.PHONY: lint | ||
lint: .venv | ||
$(VENV); black . | ||
$(VENV); flake8 . | ||
$(VENV); isort . | ||
|
||
.PHONY: clean | ||
clean: | ||
@rm -rf .venv | ||
@find -iname "*.pyc" -delete |
Empty file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
class MappingProxyType(dict): | ||
""" | ||
MappingProxyType is an immutable dictionary type, written to | ||
support Python 3.8 with easy transition to 3.12 upon removal | ||
of older versions. | ||
|
||
See: https://stackoverflow.com/a/72474524 | ||
|
||
When upgrading to Python 3.12, you can update all references | ||
from: | ||
`from open_feature.immutable_dict.mapping_proxy_type import MappingProxyType` | ||
|
||
to: | ||
`from types import MappingProxyType` | ||
""" | ||
|
||
def __hash__(self): | ||
return id(self) | ||
|
||
def _immutable(self, *args, **kws): | ||
raise TypeError("immutable instance of dictionary") | ||
|
||
__setitem__ = _immutable | ||
__delitem__ = _immutable | ||
clear = _immutable | ||
update = _immutable | ||
setdefault = _immutable | ||
pop = _immutable | ||
popitem = _immutable |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.