Skip to content
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

Fix Variable and Secret url bugs #2835

Merged
merged 12 commits into from Dec 5, 2023

Conversation

AndrewJDawes
Copy link
Contributor

Fixes: #2815, #2834

Tests added to tests/Repository.py:

  • testRepoSecrets
  • testRepoVariables

Note:

  • This fix for Variable and Secret urls is a dependency for new functionality to fetch Environment variables and secrets
  • Adding the optional attributeTransformer callable argument will also make it possible to support this Variable and Secret functionality on the Environment model.
  • I am currently working on a pull request to add support for get_secrets and get_variables on the Environment model (tests are not added yet)!

If you have any questions or if there is anything I can help with, would you please let me know?

We utilize this library at my work place to for automations against repos in our GitHub Enterprise organizations, so we are eager to get some of these bugs fixed and new functionality added to fully support Environment variables and secrets.

@codecov-commenter
Copy link

codecov-commenter commented Nov 18, 2023

Codecov Report

Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (26eedbb) 96.74% compared to head (17afa49) 96.81%.

Files Patch % Lines
github/PaginatedList.py 95.23% 1 Missing ⚠️

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2835      +/-   ##
==========================================
+ Coverage   96.74%   96.81%   +0.07%     
==========================================
  Files         142      142              
  Lines       14364    14399      +35     
==========================================
+ Hits        13896    13940      +44     
+ Misses        468      459       -9     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@AndrewJDawes
Copy link
Contributor Author

Also fixes #2785

@EnricoMi
Copy link
Collaborator

Thanks for the contribution.

I'd prefer to move the logic that builds the Variable url from the Repository (that uses an attributes transformer), into the Variable class.

For this:

  • add attribute variables_url to Variable
  • in Variable.url, construct url from variables_url and name, if self._url. is not set
  • in Repository, inject variables_url into paginated elements via attributes_transformer_override_from_dictionary

@EnricoMi
Copy link
Collaborator

EnricoMi commented Nov 19, 2023

Btw, in 6abd3e5 I have restored compatibility of PaginatedList with Pickle, which is good to have.

@EnricoMi EnricoMi force-pushed the fix-variable-and-secret-url-bugs branch from 1b85bfc to 6abd3e5 Compare November 19, 2023 16:50
@AndrewJDawes
Copy link
Contributor Author

Hey, @EnricoMi !

Pushed up a new commit to implement your suggestions!

@EnricoMi
Copy link
Collaborator

Pushed up a new commit to implement your suggestions!

Looks exactly like what I meant! Now lets iterate over the PR some more...

github/PaginatedList.py Outdated Show resolved Hide resolved
github/PaginatedList.py Outdated Show resolved Hide resolved
github/PaginatedList.py Outdated Show resolved Hide resolved
github/PaginatedList.py Outdated Show resolved Hide resolved
github/PaginatedList.py Outdated Show resolved Hide resolved
@AndrewJDawes
Copy link
Contributor Author

AndrewJDawes commented Nov 21, 2023

Hey, @EnricoMi !

Those suggestions make sense to me! I think it reads cleaner.

I submitted another commit that implements your suggestions. Would you take a look when you get a chance?

Context on why the attributes transformers were initially accepting a Callable:

  • I am still hoping to submit a follow-up PR after this one to provide the same functionality for Repository Environments and their Variables and Secrets.
  • To that end, I wanted to make sure these enhancements wouldn't prevent us from adding that functionality.
  • Specifically, I wasn't sure about moving control over the attributes transformations into PaginatedList and removing the possibility of a decorator pattern to wrap transformers (that was why we defaulted to lambda functions and each transformer accepted a Callable).
  • However, after looking things over, I think moving control to PaginatedList and removing the decorator pattern should be fine and we should still be able to add support for Repository Environments and their Variables/Secrets.
  • So, I implemented your suggestions!

@AndrewJDawes
Copy link
Contributor Author

Hey, @EnricoMi - just noting that I removed the extra unwanted transformer. Thought I had done that already - my mistake!

Would you please let me know if there is anything else I can help with?

Copy link
Collaborator

@EnricoMi EnricoMi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks really good, thanks for the contribution!

@EnricoMi EnricoMi merged commit aa76343 into PyGithub:main Dec 5, 2023
15 checks passed
lettuce-bot bot added a commit to lettuce-financial/github-bot-signed-commit that referenced this pull request Jan 30, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [PyGithub](https://togithub.com/pygithub/pygithub) | `==2.1.1` ->
`==2.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/PyGithub/2.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/PyGithub/2.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/PyGithub/2.1.1/2.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/PyGithub/2.1.1/2.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>pygithub/pygithub (PyGithub)</summary>

###
[`v2.2.0`](https://togithub.com/PyGithub/PyGithub/releases/tag/v2.2.0)

[Compare
Source](https://togithub.com/pygithub/pygithub/compare/v2.1.1...v2.2.0)

#### Breaking Changes

The `github.Comparison.Comparison` instance returned by
`Repository.compare` provides a `commits` property that used to return a
`list[github.Commit.Commit]`, which has now been changed to
`PaginatedList[github.Commit.Commit]`. This breaks user code that
assumes a `list`:

```python
commits = repo.compare("v0.6", "v0.7").commits
no_of_commits = len(commits)  # will raise a TypeError
```

This will raise a `TypeError: object of type 'PaginatedList' has no
len()`, as the returned `PaginatedList`
does not support the `len()` method. Use the `totalCount` property
instead:

```python
commits = repo.compare("v0.6", "v0.7").commits
no_of_commits = commits.totalCount
```

#### New features

-   Add support to call GraphQL API

#### Improvements

- Add parent_team_id, maintainers and notification_setting for creating
and updating teams. by
[@&#8203;Cheshirez](https://togithub.com/Cheshirez) in
[PyGithub/PyGithub#2863
- Add support for issue reactions summary by
[@&#8203;smuzaffar](https://togithub.com/smuzaffar) in
[PyGithub/PyGithub#2866
- Support for DependabotAlert APIs by
[@&#8203;coopernetes](https://togithub.com/coopernetes) in
[PyGithub/PyGithub#2879
- Derive GraphQL URL from base_url by
[@&#8203;EnricoMi](https://togithub.com/EnricoMi) in
[PyGithub/PyGithub#2880
- Make `Repository.compare().commits` return paginated list by
[@&#8203;EnricoMi](https://togithub.com/EnricoMi) in
[PyGithub/PyGithub#2882
- Add missing branch protection fields by
[@&#8203;treee111](https://togithub.com/treee111) in
[PyGithub/PyGithub#2873
- Add `include_all_branches` to `create_repo_from_template` of
`AuthenticatedUser` and `Organization` by
[@&#8203;janssonoskar](https://togithub.com/janssonoskar) in
[PyGithub/PyGithub#2871
- Add and update organisation dependabot secrets by
[@&#8203;mohy01](https://togithub.com/mohy01) in
[PyGithub/PyGithub#2316
- Add missing params to `Organization.create_repo` by
[@&#8203;tekumara](https://togithub.com/tekumara) in
[PyGithub/PyGithub#2700
- Update allowed values for `Repository` collaborator permissions by
[@&#8203;flying-sheep](https://togithub.com/flying-sheep) in
[PyGithub/PyGithub#1996
- Support editing PullRequestReview by
[@&#8203;ColasGael](https://togithub.com/ColasGael) in
[PyGithub/PyGithub#2851
- Update attributes after calling `PullRequestReview.dismiss` by
[@&#8203;ColasGael](https://togithub.com/ColasGael) in
[PyGithub/PyGithub#2854
- Add `request_cve` on `RepositoryAdvisories` by
[@&#8203;JLLeitschuh](https://togithub.com/JLLeitschuh) in
[PyGithub/PyGithub#2855
- Filter collaborators of a repository by permissions by
[@&#8203;notmicaelfilipe](https://togithub.com/notmicaelfilipe) in
[PyGithub/PyGithub#2792
- Set pull request to auto merge via GraphQL API by
[@&#8203;heitorpolidoro](https://togithub.com/heitorpolidoro) in
[PyGithub/PyGithub#2816
- Support Environment Variables and Secrets by
[@&#8203;AndrewJDawes](https://togithub.com/AndrewJDawes) in
[PyGithub/PyGithub#2848
- Update workflow.get_runs & pullrequest.add_to_assignees function
signature by [@&#8203;sd-kialo](https://togithub.com/sd-kialo) in
[PyGithub/PyGithub#2799
- Add `GithubObject.last_modified_datetime` to have `last_modified` as a
`datetime` by [@&#8203;chouetz](https://togithub.com/chouetz) in
[PyGithub/PyGithub#2772
- Add support for global advisories and unify some shared logic with
repository advisories by
[@&#8203;crimsonknave](https://togithub.com/crimsonknave) in
[PyGithub/PyGithub#2702
- Add `internal` as valid Repository visibility value by
[@&#8203;AndrewJDawes](https://togithub.com/AndrewJDawes) in
[PyGithub/PyGithub#2806
- Add support for issue comments reactions summary by
[@&#8203;smuzaffar](https://togithub.com/smuzaffar) in
[PyGithub/PyGithub#2813

#### Bug Fixes

- Add a bunch of missing urllib.parse.quote calls by
[@&#8203;ExplodingCabbage](https://togithub.com/ExplodingCabbage) in
[PyGithub/PyGithub#1976
- Fix Variable and Secret url bugs by
[@&#8203;AndrewJDawes](https://togithub.com/AndrewJDawes) in
[PyGithub/PyGithub#2835

#### Maintenance

- Update the class name for NetrcAuth in the examples by
[@&#8203;vinnybod](https://togithub.com/vinnybod) in
[PyGithub/PyGithub#2860
- Move build to PEP517 by [@&#8203;trim21](https://togithub.com/trim21)
in
[PyGithub/PyGithub#2800
- Use new type assert functions in `Repository` by
[@&#8203;trim21](https://togithub.com/trim21) in
[PyGithub/PyGithub#2798
- PyTest: Move config to pyproject.toml by
[@&#8203;Borda](https://togithub.com/Borda) in
[PyGithub/PyGithub#2859
- codespell: ignore-words-list by
[@&#8203;Borda](https://togithub.com/Borda) in
[PyGithub/PyGithub#2858
- Improve fix-headers.py script by
[@&#8203;EnricoMi](https://togithub.com/EnricoMi) in
[PyGithub/PyGithub#2728
- Remove dependency on python-dateutil by
[@&#8203;lazka](https://togithub.com/lazka) in
[PyGithub/PyGithub#2804
- CI: update precommit & apply by
[@&#8203;Borda](https://togithub.com/Borda) in
[PyGithub/PyGithub#2600
- Docs: Fix parameter order according to Version 2.1.0 by
[@&#8203;nad182](https://togithub.com/nad182) in
[PyGithub/PyGithub#2786
- Add missing GitHub classes to docs by
[@&#8203;EnricoMi](https://togithub.com/EnricoMi) in
[PyGithub/PyGithub#2783
- CI: Fix mypy error by ignoring override by
[@&#8203;EnricoMi](https://togithub.com/EnricoMi) in
[PyGithub/PyGithub#2779

**Full Changelog**:
PyGithub/PyGithub@v2.1.1...v2.2.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/lettuce-financial/github-bot-signed-commit).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
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.

Wrong URL path formation at variable edition/deleting
3 participants