Skip to content

Conversation

matrixise
Copy link
Member

@matrixise matrixise commented Oct 13, 2018

@JulienPalard
Copy link
Member

I'm not for implementing -1 and -9 without implementing the whole range. Why not removing them, keeping only --best and --fast?

@matrixise
Copy link
Member Author

good catch, I have removed -1, -9 and -d can't accept --fast and --best.

Lib/gzip.py Outdated
parser.add_argument("-d", "--decompress", action="store_true",
group = parser.add_mutually_exclusive_group()
group.add_argument('--fast', action='store_true', help='compress faster')
group.add_argument('--best', action='store_true', help='compress bester')
Copy link
Member

Choose a reason for hiding this comment

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

Minor nit, I am not sure bester is a valid word. "Best compression" maybe?

Copy link
Member

@JulienPalard JulienPalard left a comment

Choose a reason for hiding this comment

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

If you change the default compression from the CLI you may want to tell it in the NEWS file.

@@ -234,6 +236,23 @@ Command line options

If *file* is not specified, read from :attr:`sys.stdin`.

.. cmdoption:: --fast

Indicates the fastest compression method (less compression)
Copy link
Member

Choose a reason for hiding this comment

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

Missing dot at end of sentence.

.. code-block:: shell-session

$ python -m gzip --best file

.. cmdoption:: -d, --decompress

Decompress the given file
Copy link
Member

Choose a reason for hiding this comment

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

Same missing dot.

@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

.. cmdoption:: --best

Indicates the slowest compression method (best compression).
This is the default method if you do not specify any flag.
Copy link
Member

Choose a reason for hiding this comment

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

Out of date?

Copy link
Member Author

Choose a reason for hiding this comment

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

@vadmium sure, if we use the level 6, it's not the --best flag.

thanks

Copy link
Member Author

Choose a reason for hiding this comment

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

sure, thanks


.. code-block:: shell-session

$ python -m gzip --fast file
Copy link
Member

Choose a reason for hiding this comment

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

"unversionned" python must not be used: please write python3 (and change the existing documentation for "file").

I'm not sure that it's useful to add an example of a command for each command line option.

Copy link
Member

Choose a reason for hiding this comment

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

Actually, most examples in the current Doc do use an unversioned python for -m examples. Only a few currently use python3 -m. We should probably decide on which is better and fix them all. But that should be a separate issue and PR.

Copy link
Member

Choose a reason for hiding this comment

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

I think it's better to use pythoninstead of python3 since that will add the extra work of replacing all python3 with python4 when we have a release in future :) Many examples will be compatible with both versions and also might cause issues in backporting doc fixes between two major versions . The URL and drop-down at the top already indicates python3.X version. I might be missing a use case here.

Copy link
Member Author

Choose a reason for hiding this comment

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

I remove the example with the command line and in this way, just avoid the "un.versioned" python.

Lib/gzip.py Outdated
def open(filename, mode="rb", compresslevel=9,
COMPRESS_LEVEL_FAST = 1
COMPRESS_LEVEL_TRADEOFF = 6
COMPRESS_LEVEL_BEST = 9
Copy link
Member

Choose a reason for hiding this comment

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

Please make these constants private. If you really want to make them public, you should document them.

Copy link
Member Author

Choose a reason for hiding this comment

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

maybe with a new PR/bpo

@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

rc, out, err = assert_python_ok('-m', 'gzip', compress_level, local_testgzip)

self.assertTrue(os.path.exists(gzipname))
self.assertEqual(rc, 0)
Copy link
Member

Choose a reason for hiding this comment

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

this test is redundant, assert_python_ok() ensures thta it's 0.

@@ -687,6 +687,19 @@ def wrapper(*args, **kwargs):
return decorator


def add_compress_level_flag(*compress_levels):
Copy link
Member

Choose a reason for hiding this comment

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

11 lines just to pass a flag? IMHO it's too much, it can be done with less code: see below.

@@ -0,0 +1,3 @@
Add --fast, --best on the gzip CLI, these parameters will be used for the
Copy link
Member

Choose a reason for hiding this comment

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

"gzip: Add --fast and --best options on the gzip CLI ..."

@@ -222,25 +222,27 @@ Once executed the :mod:`gzip` module keeps the input file(s).
.. versionchanged:: 3.8

Add a new command line interface with a usage.
By default, when you will execute the CLI, the default compression level is 6,
it's a good tradeoff between the best and fast compression methods.
Copy link
Member

Choose a reason for hiding this comment

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

I suggest to remove "it's a good tradeoff between the best and fast compression methods". I wouldn't promise that it's a good tradeoff. Compression is full of bad surprises.

Just one example from gzip manual page:
"In some rare cases, the --best option gives worse compression than the default compression level (-6). On some highly redundant files, compress compresses better than gzip."

def test_compress_fast_best_are_exclusive(self):
rc, out, err = assert_python_failure('-m', 'gzip', '--fast', '--best')
self.assertIn(b"error: argument --best: not allowed with argument --fast", err)
self.assertGreater(rc, 0)
Copy link
Member

Choose a reason for hiding this comment

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

Can't we expect a specific exit code? Same question for following test.

Copy link
Member Author

Choose a reason for hiding this comment

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

+1

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

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

LGTM.

@JulienPalard: Can you please double please? You can merge it if it looks good to you.

@matrixise
Copy link
Member Author

@JulienPalard are you interested by a merge of this PR?

@JulienPalard
Copy link
Member

LGTM too :) thanks @matrixise for this PR!

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.

8 participants