Hi,
gl = Gitlab()
project = gl.projects.get(project_id)
Project file upload allows both, path or bytes:
file = project.upload(
filename="my_file.txt",
filepath="/path/to/my_file.txt",
# or
filedata=b"content",
)
But project generic package upload only allows path:
package = project.generic_packages.upload(
package_name="my_package",
package_version="0.1",
file_name="my_file.txt",
path="/path/to/my_file.txt",
# no bytes allowed :(
)
I'm happy to work on this, but I'd like to discuss with you first.
I might be too pedantic here but I like consistent argument naming. Both methods already have inconsistent argument names, filename and file_name, but I guess there's not too much you can do about it without a breaking change, unless you'd be okay with having a weird function signature that allows both for some time while deprecating the old names.
Then there are filepath and path, so considering there is filedata in project file upload, maybe data could be used in project generic package upload?
Ideally though, a much cleaner approach would be to accept a file-like object exclusively, considering how easy it is to create one: pathlib.Path("my_file.txt").open("rb") or io.BytesIO(b"content"). This would result in simpler code, less stuff to test and maintain, and arguably more flexibility for users.
What do you think?