* Add a trailing slash to URL when updating or deleting a file.
* Update test files to match new create/update/delete_file Repo methods
* Add trailing slash to get_contents() method
* update tests
* add missing slash in get_dir_contents
* add example usage
* remove dup slashes in tests
* clarify example comments
This commit add the title of milestone in string representation of Milestone class.
This modification improve readbility of milestone instances.
Before:
```python
>>> repo.get_milestone(number=1)
Milestone(number=1)
```
After:
```python
>>> repo.get_milestone(number=1)
Milestone(title='Milestone Example', number=1)
```
Requester.__requestRaw() was handling 301 redirects by passing the full
URL to itself, when it only expects a URL path, so parse out the path,
and pass that in. Add a test for this behaviour.
Closes: #906
The Github gists api has a since parameter for the various gist searches. This adds that parameter to Github.get_gists(), NamedUser.get_gists() and Authenticator.get_gists(). Tests and replay data added/updated as needed.
I added a Time module in the tests directory, containing just a UTCtzinfo class, which I felt I needed for one of the tests (and would probably be useful in other since/until tests). Might not be the best name for the module but it seemed the least invasive thing to do.
Initial solution for [PyGithub support for projects](https://github.com/PyGithub/PyGithub/issues/606) (#606). Adds comprehensive project querying API.
Currently does not support for modifying projects, columns or cards. (I only need this interface for reporting purposes. Of course once I'm done others are more than welcome to add additional features!)
API that was integrated:
https://developer.github.com/v3/projectshttps://developer.github.com/v3/projects/columnshttps://developer.github.com/v3/projects/cards
Note that the Github project API is in preview mode - it requires a special header in order for requests to be processed, and the API is subject to change without notice.
## Summary
- new classes: Project, ProjectColumn, ProjectCard
- add Organization.get_projects method
- add Repository.get_projects method
- add MainClass.get_project method
- add test cases to exercise all new classes and methods and verify attributes are as expected; replay data is included, recorded (mostly) from my fork of PyGithub
- updated add_attribute script to:
- use makeXXXAttribute API
- be able to add to the end of the current set of properties
- handle both Completable and NonCompletable class types correctly
## Checklist
Not to be merged until these are done:
- [x] remaining Project properties
- [x] remaining ProjectColumn properties
- [x] remaining ProjectCard properties
- [x] support for archived_state parameter when getting cards: all,archived, or not_archived
- [x] get issue from card, not just pull request ("get_content" method?)
- [x] centralize header management for "preview" access to projects API
- [x] add test for retrieving organization projects
- [x] add test for getting issue / pull request content from card
The docstrings for the Branch Protection methods that take classes as
arguments were missing backticks for the class name, add them so the
docs contain proper links.
Utilize the API preview for the organization invite system to allow
organization owners to invite outside colloborators either via passing
in the user directly, or their email address.
Fixes#851
The GitHub API currently has a beta extension to the Branch Protection
API that allows inspection and setting of the number of required
approving reviews required for a PR to be merged. Add support for it.
Add a method to Repository, collaborator_permission that allows users
with push access to repositories to query the permission level of
collaborators.
Fixes#722
MainClass.get_repo() used to default to lazy fetching, which is not what
NamedUser.get_repo() does, so change the default. Fix the tess to pass
lazy=True, so that we don't need to grow 8 ReplayData files with 11
lines of the repository in question.
Fixes#353
See Issue #855
The class [IssueEvent](https://github.com/PyGithub/PyGithub/blob/master/github/IssueEvent.py) is missing a large number of attributes documented in the [API](https://developer.github.com/v3/issues/events/).
This is also commented about in #653 to a degree
27 of the tests 27 known event types have tests.
**Currently Tested using Issue #30**
- [x] subscribed
- [x] assigned
- [x] referenced
- [x] closed
- [x] labeled
**Currently Tested using Issue/PR #538**
- [x] merged
- [x] mentioned
- [x] review_requested
**Currently Tested using Issue/PR #857**
- [x] reopened
- [x] unassigned
- [x] unlabeled
- [x] renamed
- [x] base_ref_changed
- [x] head_ref_deleted
- [x] head_ref_restored
- [x] milestoned
- [x] demilestoned
- [x] locked
- [x] unlocked
- [x] review_dismissed
- [x] review_request_removed
- [x] marked_as_duplicate
- [x] unmarked_as_duplicate
- [x] added_to_project
- [x] moved_columns_in_project
- [x] removed_from_project
- [x] converted_note_to_issue - Note: this event is tied into Issue #866
This PR is now ready to be merged
The BadAttributes and Enterprise tests made use of try/except to check
details of raised exceptions, so switch to using assertRaises, much like
the github.GithubException tests[1].
1: cf05688359
With both the custom Accept header and the new code that supports the
new Branch Protection API, Repository.get_protected_branch() is no
longer required, and it also was never tested, so remove it.
Now that we no longer support Python 2.6, we can use the assertRaises()
method of TestCase as a context manager, tiding up a large amount of
technical debt.
The Branch protection API has been radically changed by GitHub, add new
methods to Branch reflecting it. Branch protection methods are now
called on the Branch object itself, rather than awkwardly hanging off
the Repository object and requiring branch names to be passed in.
This adds an over-arching methods to get, edit and remove protection
entirely, as well as fine-grained methods for getting, setting and
dropping certain aspects of branch protection, as well as three new
objects to encompass querying those aspects.
This also destroys Repository.protect_branch(), the endpoint has been
removed. The old-style protection attributes on Branch have also been
removed to force users onto the new API, since they are still sent, but
no longer populated.
Fixes#586
Closes#784Closes#785
First commit fixes a small bug that I observed while trying to record some new test fixtures: the stringification of the headers is not correctly printed as a list of tuples, but as an `iteritems` object, so I forced the list evaluation.
Second commit adds the missing properties `allow_merge_commit`, `allow_rebase_merge`, `allow_squash_merge`, and `has_projects` to the `Repository` class.
Note however that I ran into some trouble while modifying the `edit` method of the `Repository` class to make use of the new properties, specifically while writing tests, so I will fix the `edit` method in a future PR.
Fixes ##840
Adding archival support to Repository.edit
No unit tests are included for this change because while you can archive a repository via the edit API, there is no way to un-archive a repository via the edit API. (See: https://developer.github.com/v3/repos/#edit )
As mentioned in https://developer.github.com/v3/orgs/, an organization also has a description. This PR adds this attribute to the `Organization` class, as well as modifies its `edit` method so that it's possible to update it.
I noticed too late the [`add_attribute.py` script](https://github.com/PyGithub/PyGithub/blob/8ae2bcb1e6f96beeec99fbbcf00f4af46bb38cde/scripts/add_attribute.py), so I did my modifications by hand, but I noticed that the output of the script and the style used for all the other attributes are different. I preferred the style that is prevalent in the file, rather than the output of the script.
This PR #596 seems stale, so I have opened up this one with the requested changes from @sfdye.
This is the code from @Tommos0's [comment][1] with some modification.
There are 2 tests failing. I think this is due to the change in the query string and the cached test data just needs to be refreshed for those tests.
[1]: https://github.com/PyGithub/PyGithub/pull/596#issuecomment-315013949
Hi!
As part of my app, I use this lib, and then your test Framework to record my own upper level tests. Here's some patches I had to make that I humbly think could interest you:
- As stated by @kyogi14 in [this comment](https://github.com/PyGithub/PyGithub/pull/664#issuecomment-389964369), since you use `requests` recording is broken. This fixes that.
- Fix some Python 3 troubles while recording
- Add a `replayDataFolder` gloval class variable, to override the default place to put the recording. Otherwise, if a third party app (like mine :)) has a dependency on PyGithub and wants to use the Framework, recordings are saved in `site-packages/github/tests/ReplayData` instead of my own place.
Hope this helps, please let me know if I can improve the PR.
Thanks!
* Handle HTTP 202
Fixes#564
After some testing, it seems GitHub seems to be able to process the chrunching of statistics
for every repository I tested in around 2 seconds. So a delay of around 5 seconds should be
plenty to be very certain that the next try should succeed.
Another option would be to put this value lower and possibly waste an extra retry on it.
* Only re-request data if HEAD or GET (those are 'safe')
to e.g. avoid running a duplicate POST or PUT, that can change stuff on the server
Using RFC 2616 and https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html as guideline
* Fix testStatistics
* change wait time to 2 secs
In the old code the self.__hostname would be overwritten with uploads.github.com
but it could not be correctly re-set to api.github.com after completing the upload
Create a separate connection if hostname or port differ in requestBlobAndCheck
in the end this became quite a large overhaul, to also make this change generic
for e.g. connecting to status.github.com and similar methods
~~not sure if tests need (more) updating, if so I will update the PR accordingly~~
Hi, here's my small contribution to the documentation in relation to #819
Few things:
* the `delete_release` method always returns `True` so not sure if the return type is truly valid - potentially a bug
* I've tried generating the documentation locally to check if formatting is ok but failed - is there a guide to it? I followed the read the docs starter guide but that didn't seem to reflect the way it's done here