-
Notifications
You must be signed in to change notification settings - Fork 32
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
add pagination for artifacts retrieval #453
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,3 +3,6 @@ | |
.coverage | ||
dev-env-vars | ||
.coverage* | ||
.python-version | ||
__pycache__ | ||
.vscode | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not a huge fan of Makefiles, mainly because they tend to look like a mess (not commenting your Makefile in particular, but it's an inherent property of the format). Also, they lost me many years ago when I discovered you have to mix tabs and space on some lines. My philosophy is more to try and use standard tools and configure them so they're ready to use. In the case of your Makefile: if you think the project is missing some directions on how to launch some actions, you're right of course, but I'd like to direct you to changing the CONTRIBUTING.md doc first. That said, I'm totally ok to keep the Makefile as a documentation TL;DR, but let's make it so (remove the help target, fix the few comments I left which should show that targets are synonym to a 1 (or few) words command. If you're curious, my go-to approach these days when I need to make complex commands accessible in a project is a |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
.DEFAULT_GOAL := help | ||
SHELL = bash | ||
|
||
|
||
.PHONY: help | ||
help: ## show this help | ||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' | ||
|
||
.PHONY: install | ||
install: ## install dependencies | ||
poetry install --with dev | ||
poetry run pre-commit install | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pre-commit shouldn't be installed inside poetry, so that's rather |
||
|
||
.PHONY: lint | ||
lint: ## lint code | ||
poetry run ruff check --fix coverage_comment tests | ||
poetry run ruff format coverage_comment tests | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Pre-commit takes care of linting. A more appropriate (and more complete) lint command would be pre-commit run --all-files Or even just pre-commit |
||
|
||
.PHONY: test | ||
test: ## run all tests | ||
poetry run pytest tests -vv --cov-report term-missing --cov=coverage_comment | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe all those arguments are already in pyproject.toml, no need to repeat them here. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -54,7 +54,14 @@ def download_artifact( | |
filename: pathlib.Path, | ||
) -> str: | ||
repo_path = github.repos(repository) | ||
artifacts = repo_path.actions.runs(run_id).artifacts.get().artifacts | ||
page = 1 | ||
artifacts = [] | ||
while True: | ||
result = repo_path.actions.runs(run_id).artifacts.get(page=str(page)) | ||
if not result: | ||
break | ||
artifacts.extend(result.artifacts) | ||
page += 1 | ||
try: | ||
artifact = next( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What about incorporating reading the pages and paginating into one generator ( Also, if the number of elements github returns on a page is fewer than the max, you know in advance there won't be a next page. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. you're right, I'll work on improving it There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To avoid unnecessarily fetching the next page, I leveraged on the |
||
iter(artifact for artifact in artifacts if artifact.name == artifact_name), | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree
__pycache__
is missingFor the 2 others, it seem they would belong to your personal global gitignore. It's not that we couldn't do it here, but whenever people suggest we add those (which happens once a year) I'd rather show the proper way of dealing with those and avoid similar suggestions on other repos. That said, let me emphasize you did nothing wrong by suggesting those.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, thanks for letting me know this