sapling/eden/scm/.flake8
Jun Wu e1ad0df320 commitcloud: optimize revset for segmented changelog backend
Summary:
The `notbackedup()` revset is used as part of `summary` that prints information
at the end of `smartlog`. It can take hundreds of milliseconds if there are
many heads. Detect segmented changelog and use a fast path for it.

Practically this reduces `summary` from 594ms to 91ms for me:

With segmented changelog (doublewrite backend) and new code path:

    91    \ summary                             status.py:23
     2      \ currentworkspace                  workspace.py:121
     3       | _get (2 times)                   workspace.py:110
     3       | read (2 times)                   config.py:195
     3       | parse (2 times)                  config.py:116
     2       | compile (14 times)               util.py:1464
     3      \ __init__                          syncstate.py:44
    82      \ revs                              localrepo.py:1203

With revlog and old code path:

   594    \ summary                             status.py:23
     2      \ currentworkspace                  workspace.py:121
     4       | _get (2 times)                   workspace.py:110
     3       | read (2 times)                   config.py:195
     3       | parse (2 times)                  config.py:116
     3       | compile (14 times)               util.py:1464
     3      \ __init__                          syncstate.py:44
    46      \ revs                              localrepo.py:1203
   539      \ _iterfilter                       smartset.py:647
   538       | <lambda> (1565 times)            commitcloud/__init__.py:371
   537       | __contains__ (1565 times)        smartset.py:1039
   533       | _consumegen (17355 times)        smartset.py:1122

Reviewed By: markbt

Differential Revision: D23036075

fbshipit-source-id: 09dcc34f34a42814c6526e558d40b4d75ba9d75f
2020-08-21 13:00:45 -07:00

72 lines
2.9 KiB
INI
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[flake8]
select =
F401, # module imported but unused
F402, # import module from line N shadowed by loop variable
F403, # from module import * used; unable to detect undefined names
F404, # future import(s) name after other statements
F405, # name may be undefined, or defined from star imports: module
F406, # from module import * only allowed at module level
F407, # an undefined __future__ feature name was imported
F601, # dictionary key name repeated with different values
F602, # dictionary key variable name repeated with different values
F621, # too many expressions in an assignment with star-unpacking
F622, # two or more starred expressions in an assignment (a, *b, *c = d)
F631, # assertion test is a tuple, which are always True
F701, # a break statement outside of a while or for loop
F702, # a continue statement outside of a while or for loop
F703, # a continue statement in a finally block in a loop
F704, # a yield or yield from statement outside of a function
F705, # a return statement with arguments inside a generator
F706, # a return statement outside of a function/method
F707, # an except: block as not the last exception handler
F811, # redefinition of unused name from line N
F812, # list comprehension redefines name from line N
F821, # undefined name name
F822, # undefined name name in __all__
F823, # local variable name … referenced before assignment
F831, # duplicate argument name in function definition
F841, # local variable name is assigned to but never used
E101, # indentation contains mixed spaces and tabs
E112, # expected an indented block
E113, # unexpected indentation
E133, # closing bracket is missing indentation
E223, # tab before operator
E224, # tab after operator
E242, # tab after ,
E272, # multiple spaces before keyword
E273, # tab after keyword
E274, # tab before keyword
E304, # blank lines found after function decorator
# BLACK can make lines longer than 80 characters
# E501, # line too long (82 > 79 characters)
E703, # statement ends with a semicolon
E704, # multiple statements on one line (def)
E711, # comparison to None should be if cond is None:
E712, # comparison to True should be if cond is True: or if cond:
E714, # test for object identity should be is not
E742, # do not define classes named l, O, or I
E743, # do not define functions named l, O, or I
E901, # SyntaxError or IndentationError
E902, # IOError
W191, # indentation contains tabs
W291, # trailing whitespace
W292, # no newline at end of file
W504, # line break after binary operator
W601, # .has_key() is deprecated, use in
W602, # deprecated form of raising exception
W603, # <> is deprecated, use !=
W604, # backticks are deprecated, use repr()
W605, # invalid escape sequence x
# dageval defined names
builtins =
ancestors,
draft,
gcaall,
heads,
headsancestors,
obsolete,
parents,
public,
roots,