From 648ca8838f7d70093c70aee9db9ce04abf8d8abd Mon Sep 17 00:00:00 2001 From: Pierre Tardy Date: Tue, 23 May 2017 16:24:50 +0200 Subject: [PATCH] fixes for pylint 1.7.1 --- common/code_spelling_ignore_words.txt | 622 +++++++++++++++++- master/buildbot/buildbot_net_usage_data.py | 4 +- master/buildbot/changes/gerritchangesource.py | 3 +- master/buildbot/changes/github.py | 2 +- master/buildbot/changes/gitpoller.py | 9 +- master/buildbot/changes/mail.py | 6 +- master/buildbot/changes/pb.py | 3 +- master/buildbot/changes/svnpoller.py | 6 +- master/buildbot/data/base.py | 7 +- master/buildbot/data/resultspec.py | 10 +- master/buildbot/data/types.py | 12 +- master/buildbot/db/base.py | 3 +- master/buildbot/db/builders.py | 12 +- master/buildbot/db/buildsets.py | 5 +- master/buildbot/db/logs.py | 3 +- master/buildbot/db/schedulers.py | 6 +- master/buildbot/locks.py | 8 +- master/buildbot/monkeypatches/python14653.py | 5 +- master/buildbot/pbmanager.py | 5 +- master/buildbot/plugins/db.py | 5 +- master/buildbot/process/botmaster.py | 2 +- master/buildbot/process/build.py | 3 +- master/buildbot/process/builder.py | 4 +- master/buildbot/process/buildrequest.py | 3 +- master/buildbot/process/buildstep.py | 6 +- master/buildbot/process/log.py | 3 +- master/buildbot/process/metrics.py | 2 +- master/buildbot/process/properties.py | 33 +- master/buildbot/process/remotecommand.py | 3 +- master/buildbot/process/results.py | 3 +- master/buildbot/reporters/gerrit.py | 18 +- .../reporters/gerrit_verify_status.py | 3 +- master/buildbot/reporters/words.py | 49 +- master/buildbot/revlinks.py | 2 +- master/buildbot/schedulers/basic.py | 3 +- master/buildbot/schedulers/forcesched.py | 24 +- master/buildbot/schedulers/timed.py | 6 +- master/buildbot/scripts/base.py | 5 +- master/buildbot/steps/mtrlogobserver.py | 9 +- master/buildbot/steps/python.py | 6 +- master/buildbot/steps/shell.py | 18 +- master/buildbot/steps/source/bzr.py | 6 +- master/buildbot/steps/source/cvs.py | 3 +- master/buildbot/steps/source/darcs.py | 6 +- master/buildbot/steps/source/mercurial.py | 21 +- master/buildbot/steps/source/mtn.py | 4 +- master/buildbot/steps/source/p4.py | 9 +- master/buildbot/steps/source/svn.py | 23 +- master/buildbot/steps/transfer.py | 9 +- master/buildbot/steps/vstudio.py | 9 +- master/buildbot/test/fake/fakedb.py | 24 +- master/buildbot/test/fake/hyper.py | 2 +- master/buildbot/test/fake/secrets.py | 3 +- .../test/integration/test_worker_comm.py | 16 +- .../test/unit/test_data_resultspec.py | 5 +- .../test/unit/test_process_builder.py | 8 +- .../test_process_buildrequestdistributor.py | 18 +- .../unit/test_schedulers_timed_Periodic.py | 3 +- .../test/unit/test_steps_source_darcs.py | 316 ++++----- .../test/unit/test_util_httpclientservice.py | 3 +- master/buildbot/test/unit/test_util_lru.py | 6 +- .../test/unit/test_worker_marathon.py | 3 +- master/buildbot/test/util/db.py | 3 +- master/buildbot/test/util/gpo.py | 8 +- master/buildbot/test/util/interfaces.py | 5 +- master/buildbot/util/__init__.py | 22 +- master/buildbot/util/croniter.py | 8 +- master/buildbot/util/httpclientservice.py | 3 +- master/buildbot/util/identifiers.py | 8 +- master/buildbot/util/poll.py | 3 +- master/buildbot/util/service.py | 3 +- master/buildbot/wamp/connector.py | 7 +- master/buildbot/worker/base.py | 4 +- master/buildbot/worker/ec2.py | 7 +- master/buildbot/www/hooks/base.py | 3 +- master/buildbot/www/ldapuserinfo.py | 8 +- requirements-ci.txt | 2 +- worker/buildbot_worker/__init__.py | 6 +- worker/buildbot_worker/commands/fs.py | 2 +- worker/buildbot_worker/commands/transfer.py | 7 +- .../buildbot_worker/monkeypatches/bug4881.py | 3 +- worker/buildbot_worker/runprocess.py | 38 +- worker/buildbot_worker/scripts/runner.py | 2 +- .../test/unit/test_commands_transfer.py | 7 +- worker/buildbot_worker/util/__init__.py | 6 +- 85 files changed, 1079 insertions(+), 524 deletions(-) diff --git a/common/code_spelling_ignore_words.txt b/common/code_spelling_ignore_words.txt index df8da2a53ffb..b33ac82bd079 100644 --- a/common/code_spelling_ignore_words.txt +++ b/common/code_spelling_ignore_words.txt @@ -1,34 +1,90 @@ abspath accesskey +accumulateclasslist ack acknowledgement +actuateat +actuateattimer +actuateok adaptor adbapi +addbuild +addbuildset +addbuildsetcalls +addbuildsetforchanges +addbuildsetforsourcestamp +addbuildsetforsourcestampswithdefaults +addbuildsetforxxx +addchange +addedbuilder +addedchanges +addlog +addservice +addsourcestamp +addsourcestampset +addstep +addsuppression admin admins admin's agenced +allard +allen +allfiles +allowanonymousaccess +allowforce +allowshutdown +allura +alwaysrun +alwaysuselatest amazonaws andrew +andy +antoine +anysentinel apache api app appdata apps +araujo arg args argv +armstrong ascii +asdict +ashcrow +aslist assertable +assertargspecmatches +assertbuildset +assertconsumingchanges +assertequal +assertisinstance +assertproduceswarning +assertraisesregex +assertraisesregexp +assertregex +assertregexpmatches +assertresults async +asynclrucache atlassian atm +attachscheduler attr +attributeerror +aug auth authz autocommit +autoconf +autocreatetables autodoc autogenerated +autorelease +avatarmethods aws axx backend @@ -43,6 +99,7 @@ baserev basetgz baseurl basicauth +baz bb bbot bc @@ -50,6 +107,10 @@ bdict bdictlist bear's behaviour +ben +benjamin +bennetts +berlin bitbucket blahblah blamelist @@ -59,38 +120,55 @@ blocksize bobrik bool boolean +boston botmaster botmaster's botname boto br +brainerd branchfile +branchtype brd brdict brdicts breq breqs +brian brid brids brid's +brs +bruheim bsd bsid bsids buid +buidlrequestcompletions buidlsets builbot buildable buildbot -buildbots +buildbotnetusagedata buildbotNetUsageData +buildbotoptions +buildbots buildbot's buildbotting +buildboturl +buildclass builddir +builderadded +builderchangedstate builderid buildermasterids buildername +buildernames +builderremoved builderstatus +buildetaupdate buildfactory +buildfinished buildid buildmaster buildmasters @@ -99,38 +177,67 @@ buildnum buildot buildreq buildrequest +buildrequestcompletions +buildrequestresults buildrequests +buildrequestsconnectorcomponent +buildresult buildroot build's buildset +buildsetcomplete buildsets buildset's +buildsetsubmitted buildslave buildslaves +buildstarted buildstatus buildstep +buildstepmixin buildsteps +buildstepstatus builtin builtins bulid bulider buliderid +butbucket +bwaitall bwverbose bytestring bytestrings bzr +caas +calderone callbacked +callconsumer +calllater +calllater's +callremote +callwhenrunning +cancelcleanshutdown cancelled cancelling +canstartbuild +canstartwithworkerforbuilder cb +cbc +cbd cd cfg cgi +chainedprotocolfactory +changeadded changedict +changefilter +changehookresource +changehorizon changeid changeids changemaster change's +changesconnectorcomponent changeset changesource changesourceid @@ -144,13 +251,23 @@ checkconfig checkfirst checkin checkip +checkoutdelay +checkworkerhascommand childs chmod +choosenextbuild +christopher chroot +chunkify +clientconnectionlost clientid clientids clientsecret +clobberonbranchchange +clobberonfailure +closestdin cls +cmake cmd cmdclass cmdline @@ -158,30 +275,48 @@ cmdref cmopared cmp codebase +codebasegenerator codebases codec +collapserequests comitters +commandcomplete +commandinterrupted +commandname commitish committer committers compability -compat +comparablemixin comparaison +compat +compatiblity completers +compresslog +computesourcerevision comspec concat conchc config configfile +configfunc configs -configurators configurator +configurators conn +connectionmade +connectionpool contrib +copyablefailure cors cowbuilder cppcheck cpu +cray +createabsolutesourcestamps +createmaster +createsummary +createworker cred credc creds @@ -190,42 +325,70 @@ croniter css ctime ctrl +currentbuilds +currentstep cvar cvs cvsroot daemonize +dan darcs +datafields +datareceived datetime dateutil's +dave +david dbapi dbpool +dbs ddl de debian debounce debounced debouncing +decoderc deepcopy +defaultbranch +defaultdeny +defaultwhenfalse deferredlist deferreds +deferred's +defertothread +delayedcall denormalized +deprecatedmoduleattribute +descriptionsuffix desynchronization dev dict dicts +dicttype diff diffs dir +directoryenterpattern dirname dirs dirwatcher +disownserviceparent distutils dn dnotify +doclobber +doconfig +docopy docstring +doctest doctests documentclass dom +donovan +dostepif +downloadfile +downloadstring dradez dss du @@ -233,11 +396,17 @@ dup durchmesser dustin eg +egypt +enforcechosenworker enginestrategy enosuch +ensurehasssl +entitytype env eof epydoc +eqconnectionpool +eric errback errback'd errbacked @@ -245,18 +414,35 @@ errbacks err'ed errno erroring +errormessages errortoo et +evaluatecommand exe execfile executables exe's expanduser +expcalls +expectcomplete +expectedbuildset +expectedfailures +expectedmessages +expectedreturn +expectmessage +expectsuccess extractall extrapackages +eyal +failedtogetperspective fakebotmaster +fakeconnector fakedb fakemaster +fakemethod +fakeopen +fakeserviceparent +fakeworkerworker fallback fallbacks favicon @@ -266,6 +452,7 @@ fdescfs fdopen fds featureful +feb fifo fileloc filename @@ -273,33 +460,101 @@ FILENAME filenames filepath filesystem +filewriter +findbuilderid +findchangesourceid +findsomethingid +finduserbyattr +firewaall +firstname fixme fixup fk +fks +flunkonfailure +flunkonwarnings +flushloggederrors +flushwarnings fn fnmatch foo foobar foogit +foreignkey +formatinterval fp fqdn freebsd freshcvs +fri +fromchdict fromdir fs +fullname func funcname +gardiner +gatherresults +gayton gcc gc'd gerrit +getaddress getargspec getattr +getbuild +getbuilderid +getbuildrequest +getbuildrequests +getbuildsetproperties +getchange +getchangeclassifications +getchangefromssid +getchanges +getchangesource +getchangesources +getcodebase +getcommand +getconfigfilefromtac +getdescription +getevent getexitcodeprocess +getfromkwargs +getlastfinishedbuild +getlog +getloginresource +getloglines +getname +getnextbuildtime +getnumber +getpage +getperspective getpid getppid +getprocessoutput +getprocessoutputandvalue +getprocessoutputandvaluewithinput getpwnam +getrenderingfor +getresults getrlimit +getrootobject +getschedulers +getservice +getslaveinfo +getsourcestamp +getspec +getstate +gettestresults +gettext +gettimernameforchange +geturlforbuild +geturlforthing +getworker +getworkerinfo gf +gib +giger github gitorious gmail @@ -308,28 +563,56 @@ google googlegroups googlesource gopts +gotchange +gotperspective +gotrootobject gpo +gracefulshutdown gravatar +groupmemberpattern gtk gz gzip +haltonfailure +hammond +handlejobfile hardcoded +hartwell hasattr hashable +hashcolumns +hashedcolumns +haskey +hasproperty +hermann +herve hg +hinputwritetemp hmac hoc hostname hostnames +houtreadtemp howto +hprocess +hthread html http httpclientservice https +ibuilderstatus +ibuildrequestcontrol +ibuildrequeststatus +ibuildsetstatus +ibuildstatus +ichange ico +icredentialschecker ics +i'd ident idn +idsdeferred ie iff i'm @@ -340,38 +623,63 @@ influxdb infos init initializers +initialstdin inline +inlinecallbacks innodb inrepo inrepos +inserttestdata installdir instanceuri insubstantiate insubstantiation internet interruptable +interruptsignal intialization intranet io ip +ippolito +iproperties +iproperty iprops +iprotocol irc +ircclient +irealm +irenderable +isavailable +isbusy isdir ish isinstance +ismessageneeded +isotoma +istatus +istatusreceiver +isworkerdir +itamar iter iterable ivar ivars +jã +jacobs +james +jason java javascript jellyable +jessica jinja jmason jobdir jobfiles jobid joe +jonathan json jsonable jsonapi @@ -380,8 +688,15 @@ jsonrc jsonrpc jwt keepalive +keepaliveinterval keepalives +keepalivetimeout keepstamp +keepstderr +keepstdinopen +keepstdout +kevin +keyerror keyfile keypair keypairs @@ -389,36 +704,57 @@ klass knielsen kwarg kwargs +lange +largebinary +lastactuation lastlog +lastname +lastresort +lasttrigger +latentworkerforbuilder latin lazylogfiles ldap ldapuserinfo +lefkowitz legator len libvirt lintian linux listdir +listentcp liveness +loadconfig localhost localtime +lockaccess +lockclass lockfiles lockid +logchunk logchunks logentries logentry +logenviron logfile logfiles +logfinished logid login +logmsg logname logout logrotate +logstarted +longaccess lookahead lookup lookups loopback +loseconnection +lostremote +lotem lp lru mailchangesource @@ -426,35 +762,74 @@ maildir maildirs maintainance makedirs +makerbase +makeremoteshellcommand +maketelnetprotocol +manba +mangold +manifestbranch +manifestfile +manifestoverrideurl +manifesturl maraujop marius +markh marshalled maruel +mary +massachusetts masterdest +masterfqdn masterid +masterlock masterstatus +matthew +maxcount +maxcountforworker +maxdelay maxint maxlength maxsize maxthreads +maxtime +maybeaddwarning +maybebuildsetcomplete +maybedeferred +maybestartbuild +maybestartbuilds +maybestartbuildsforbuilder +maybestartbuildsforworker +maybestartbuildson +maybestartbuildsonbuilder md +meijer melo mesos +messagereceived metadata meth +methodtemplate +methodundertest microsoft middleware +miguel +milner minidom minidom's +mintime mispelling misr mit +mixedcase mixin mkdir mkstemp +mobarak moduleauthor +mon monkeypatch monkeypatches +moshe moto mq msdn @@ -469,6 +844,7 @@ multi multiline multimaster multiservice +multiservice's multithreading mumbo munge @@ -476,6 +852,7 @@ mysql mysqlclient mysqld mysql's +namedservice namedtuple namespace namespaces @@ -485,16 +862,25 @@ netstring netstrings newcred newmsg +nextbuild +nextworker nfs ngrok +niklaus nobody's nodaemon nonexisting noninfringement noop noqa +noreconfig noreply +nosuchmethod +notabranch +notifyondisconnect +nov novaclient +noworkererror nstderr nt nullable @@ -508,64 +894,105 @@ ok oldcred online onlinepubs +onlyifchanged +onlyimportant openfile opengroup oposite optfile +optflags +optparameters +ordermatters +ored org orgs orm os osaf osx +otherstatusreceivers overridable +overridebuildsetmethods pam paramiko params parms parseable +parsegotrevision +parsejob passwd patchable patchid patchlevel patchset +patchup pathnames +pathpattern +pathpatterns pathsep +paul +pauseproducing +pavel pb pbamanger +pbconnectionlost pbmanager pbmanager's pbuilder +pendingbuilds +pergamenshchik +periodicbuildtimer +peticolas pfactory pid pidfile pidfiles pids +pitrou +pluggableauthenticationmoduleschecker plugin plugins pn +pollatlaunch +pollatreconfigure poller pollers +pollingchangesource +pollinterval +popnextbuild portstr portstrs posix +postdata postgres +postoptions postpath ppl pragma pre precompute +preferlastchangedrev prefilter preflight prepend prepended prepends +preston +printstatus +prioritizebuilders privmsgs proc +processdone +processended +processterminated +procgroupprocess +produceevent programmatically +progressmetrics proj projectname proto +prs pserver pty ptys @@ -576,21 +1003,38 @@ py pycrypto pyd pyflakes +pygments pyjade +pylint pylint's pythonpath +qa qmail +quickmode quickstart +radez +raiseexpectationfailure +ralph raml ramlfications rc reactorname readlines +readsourcedata +realdatabasemixin +realmasterlock +realworkerlock +reasonstring recompress reconf reconfig reconfig'd +reconfigresource reconfigs +reconfigservice +reconfigservicebuilders +reconfigservicewithconstructorargs +reconfigservicewithsibling reconfigurability recurse redhat @@ -602,34 +1046,69 @@ regexes regexp regexps regexs +registeradapter +reid +rejectedworkers releasers +remoteaddresses +remotecommand +remotecomplete +remotegetworkerinfo remote's +remoteshellcommand +remotestep remotetransfer +removeservice renderable renderables renderer renderers repl repo +repodownloads repoll reponame +reponds repourl repr req +requestavatar +requestavatarid +requestcancelled +requestjson +requestsubmitted requeue +requiredargs +reschedulenextbuild +resourceneedsreconfigs +resourcetype +restrmatcher resultdir +resultsdeferred +resultsmixin resultspec +resumeproducing +retreive retryable +retryfetch +reviewcb revisionfor revlink revno revnum +rewrap +rewrapped rewraps rf +rgen +rhead rieder +riley rmdir +rmdirrecursive rmtree robocopy +routingkey rp rpc rpmdir @@ -641,11 +1120,17 @@ rst rstrip rtype rtypes +runcommand +runinteraction runprocess +runquery +runstep's +runtest runtime rv sa safecat +saturday sb sched schedulerid @@ -653,19 +1138,41 @@ schedulernames scheduler's schwarzian scm +sean secretkey sectionauthor seealso +sendbuilderlist sendchange +sendcompletionmessage sendmail +sendstatus +sendstderr +sendstdout +sendupdate seqdiag servicemanager +setbuilderlist +setchangesourcemaster +setcommand setdefault setid setpgrp +setproperty +setserviceparent +setstate +settext +setupbasedir +setupbuildresults +setupmailnotifier +setupsite +setupsourcestep +setupstep sha shellcommand shlex +showblamelist +shtull shutil sig sighup @@ -674,9 +1181,15 @@ signalled signalling signame sigterm +sigtermtime +sigtermtimeout +simms simplifiable +singlebranchscheduler slavedest slavesrc +slowdb +smallinteger smilner somecommand somedays @@ -690,6 +1203,7 @@ sourcestampset sourcetamp spam spamassassin +spawnprocess specdir specfile specfiles @@ -705,14 +1219,23 @@ srpm ssdict sse sshd +sshpublickeydatabase ssid ssids ssl +stackexchange stacklevel stackoverflow -stackexchange stacktrace +startbuild +startcommand +startgettingperspective +startlogin +startmissingtimer +startservice startup +startvc +startworker stat'd statm statusdict @@ -720,12 +1243,22 @@ stderr stdin stdlib stdout +stepetaupdate +stepfinished stepid +stepstarted +steve stickysidebar +stopbuild stop's +stopservice +stopworker str +streamlog strerror strftime +stringreceived +stringsmatcher striplevel strports strptime @@ -742,6 +1275,7 @@ subdirectories subdirectory subfields sublicense +submittedat submodule submodules suboption @@ -750,15 +1284,23 @@ subprocess subprocesses subquery substring +summarycb +suppressionfile suppressions +suppresstags svc +svciddeferred svn svnpoller svn's +svnuricanonicalize svnversion sw +swartz symlink +syncallbranches syncmail +syntaxerror sys tac taichino @@ -766,21 +1308,30 @@ tarball tbl tcp teardown +teardownbasedir tempfile terminateprocess testcase testcases +testchanges +testnamelimit testpath +testslave testsuite texinfo textbox +textlimit tf th that'll +thijs thingie thingy +thomas threadpool ths +thurs +thursday tid timedelta timestamp @@ -789,6 +1340,7 @@ tls tmp tmpbb tmpl +tochanges toctree todir todo @@ -800,7 +1352,18 @@ toplevel tport trac traceback +trauring +travis +treestabletimer +treestabletimers treq +trialargs +trialmode +triemstra +triggerable +tue +tues +tuesday tuple Tuple tuples @@ -812,13 +1375,16 @@ txrequest txrequests txt tz +ubuntu ui uid umask un unabbreviated unclaim +unclaimedbrdicts unconfigure +unexpectedsuccesses ungrouped unhandled unicast @@ -829,6 +1395,7 @@ unicodify unique'd unittest unix +unixpassworddatabase unparsable unparseable unregister @@ -843,7 +1410,19 @@ unsubstantiated untarring upcall updatable +updatebuilderlist +updatebuildsummarypolicy +updatefromkwargs +updateinterval +updatenum updateof +updatesession +updatesummary +updatesummary's +updatetarballage +updateuser +uploaddirectory +uploadfile uppercased uri url @@ -853,7 +1432,14 @@ urlopen urlparse urls usa +usageerror +usechange +uselog +useprocgroup +usepty +usererrors username +usetestcasenames usr utc utf @@ -861,22 +1447,41 @@ util utils uuid validator +valuefromstring vc vcs +vcsrevision +vcx vda +verifymessage +verifymessages +versioned versioning viewspec viff virtualenv +visualstudio vm +vms +waitforbuilderlist +waitforfinish +waituntilavailable wal wamp wannabuild +wantdata +wantdb +wantmq warner +warningextractor +warningpattern +warnonfailure +warnonwarnings wb weakref webclient webserver +wehn wfb wget whatever's @@ -891,19 +1496,28 @@ workdirs workerbuilddir workerdest workerdir +workerenvironment workerforbuilder workerforbuilders +workerlock workermanager workername workernames workersrc workersrcs +workerversion workerworker +worststatus +writesourcedata +writestdin ws www +xbsd xda xhtml xml xxab xxx +yieldmetricsvalue +zadka zope diff --git a/master/buildbot/buildbot_net_usage_data.py b/master/buildbot/buildbot_net_usage_data.py index eb41046ae452..07e2a3a02c78 100644 --- a/master/buildbot/buildbot_net_usage_data.py +++ b/master/buildbot/buildbot_net_usage_data.py @@ -71,8 +71,8 @@ def get_distro(): elif system == "Darwin": dist = platform.mac_ver() return "{}".format(dist[0]) - else: - return ":".join(platform.uname()[0:1]) + # else: + return ":".join(platform.uname()[0:1]) def getName(obj): diff --git a/master/buildbot/changes/gerritchangesource.py b/master/buildbot/changes/gerritchangesource.py index 78e768b9c17f..25f4540c0b19 100644 --- a/master/buildbot/changes/gerritchangesource.py +++ b/master/buildbot/changes/gerritchangesource.py @@ -156,8 +156,7 @@ def getGroupingPolicyFromEvent(self, event): if event['type'] in ('patchset-created',): return "%s/%s" % (event_change["branch"], event_change['number']) - else: - return event_change["branch"] + return event_change["branch"] def addChangeFromEvent(self, properties, event): diff --git a/master/buildbot/changes/github.py b/master/buildbot/changes/github.py index 1d1e118e511d..f5f8901ed139 100644 --- a/master/buildbot/changes/github.py +++ b/master/buildbot/changes/github.py @@ -250,7 +250,7 @@ def _processChanges(self, github_result): failures[0].raiseException() [files, email] = [r[1] for r in results] - if email is not None and email is not "null": + if email is not None and email != "null": author += " <" + str(email) + ">" properties = self.extractProperties(pr) diff --git a/master/buildbot/changes/gitpoller.py b/master/buildbot/changes/gitpoller.py index 932819b6c416..99499a3fb0de 100644 --- a/master/buildbot/changes/gitpoller.py +++ b/master/buildbot/changes/gitpoller.py @@ -80,7 +80,7 @@ def __init__(self, repourl, branches=None, branch=None, branches = [branch] elif not branches: if only_tags: - branches = lambda ref: ref.startswith('refs/tags/') + branches = lambda ref: ref.startswith('refs/tags/') # noqa: E731 else: branches = ['master'] @@ -231,8 +231,7 @@ def process(git_output): 'gitpoller: caught exception converting output \'%s\' to timestamp' % git_output) raise e return stamp - else: - return None + return None return d def _get_commit_files(self, rev): @@ -261,7 +260,7 @@ def _get_commit_author(self, rev): @d.addCallback def process(git_output): git_output = self._decode(git_output) - if len(git_output) == 0: + if not git_output: raise EnvironmentError('could not get commit author for rev') return git_output return d @@ -307,7 +306,7 @@ def _process_changes(self, newRev, branch): revList = results.split() revList.reverse() - if rebuild and len(revList) == 0: + if rebuild and not revList: revList = [newRev] self.changeCount = len(revList) diff --git a/master/buildbot/changes/mail.py b/master/buildbot/changes/mail.py index 51d42f8f997e..0c4465d8f494 100644 --- a/master/buildbot/changes/mail.py +++ b/master/buildbot/changes/mail.py @@ -416,7 +416,8 @@ def parse(self, m, prefix=None): # https://code.launchpad.net/~knielsen/maria/tmp-buildbot-test # # You are subscribed to branch lp:~knielsen/maria/tmp-buildbot-test. -# To unsubscribe from this branch go to https://code.launchpad.net/~knielsen/maria/tmp-buildbot-test/+edit-subscription. +# To unsubscribe from this branch go to +# https://code.launchpad.net/~knielsen/maria/tmp-buildbot-test/+edit-subscription. # # [end of mail] @@ -532,8 +533,7 @@ def gobble_renamed(s): comments=d['comments'], when=when, revision=rev, branch=branch, repository=repository or '')) - else: - return None + return None def parseLaunchpadDate(datestr, tz_sign, tz_hours, tz_minutes): diff --git a/master/buildbot/changes/pb.py b/master/buildbot/changes/pb.py index 0e2cf9f1ec79..6ff0817270dd 100644 --- a/master/buildbot/changes/pb.py +++ b/master/buildbot/changes/pb.py @@ -172,8 +172,7 @@ def _unregister(self): reg = self.registration self.registration = None return reg.unregister() - else: - return defer.succeed(None) + return defer.succeed(None) def getPerspective(self, mind, username): assert username == self.user diff --git a/master/buildbot/changes/svnpoller.py b/master/buildbot/changes/svnpoller.py index 982f3d34c66f..8134e3866b04 100644 --- a/master/buildbot/changes/svnpoller.py +++ b/master/buildbot/changes/svnpoller.py @@ -54,8 +54,7 @@ def split_file_branches(path): return (None, '/'.join(pieces[1:])) elif len(pieces) > 2 and pieces[0] == 'branches': return ('/'.join(pieces[0:2]), '/'.join(pieces[2:])) - else: - return None + return None def split_file_projects_branches(path): @@ -402,7 +401,8 @@ def create_changes(self, new_logentries): branch]['number_of_directories'] number_of_files_changed = len(files) - if action == u'D' and number_of_directories_changed == 1 and number_of_files_changed == 1 and files[0] == '': + if (action == u'D' and number_of_directories_changed == 1 and + number_of_files_changed == 1 and files[0] == ''): log.msg("Ignoring deletion of branch '%s'" % branch) else: chdict = dict( diff --git a/master/buildbot/data/base.py b/master/buildbot/data/base.py index 89d0555ec7eb..61485f14821e 100644 --- a/master/buildbot/data/base.py +++ b/master/buildbot/data/base.py @@ -161,10 +161,9 @@ def __eq__(self, other): and self.offset == other.offset \ and self.total == other.total \ and self.limit == other.limit - else: - return self.data == other \ - and self.offset == self.limit is None \ - and (self.total is None or self.total == len(other)) + return self.data == other \ + and self.offset == self.limit is None \ + and (self.total is None or self.total == len(other)) def __ne__(self, other): return not (self == other) diff --git a/master/buildbot/data/resultspec.py b/master/buildbot/data/resultspec.py index d54456463239..adb831754fb7 100644 --- a/master/buildbot/data/resultspec.py +++ b/master/buildbot/data/resultspec.py @@ -114,8 +114,7 @@ def __lt__(self, other): return True elif other.value is None: return False - else: - return self.value < other.value + return self.value < other.value def __eq__(self, other): return self.value == other.value @@ -130,8 +129,7 @@ def __gt_(self, other): return False elif other.value is None: return True - else: - return self.value < other.value + return self.value < other.value class ReverseComparator(object): @@ -175,8 +173,8 @@ def __init__(self, filters=None, fields=None, properties=None, order=None, def __repr__(self): return ("ResultSpec(**{{'filters': {}, 'fields': {}, 'properties': {}, " "'order': {}, 'limit': {}, 'offset': {}").format( - self.filters, self.fields, self.properties, self.order, - self.limit, self.offset) + "})" + self.filters, self.fields, self.properties, self.order, + self.limit, self.offset) + "})" def __eq__(self, b): for i in ['filters', 'fields', 'properties', 'order', 'limit', 'offset']: diff --git a/master/buildbot/data/types.py b/master/buildbot/data/types.py index 36d7ec63a4d3..162bff618e37 100644 --- a/master/buildbot/data/types.py +++ b/master/buildbot/data/types.py @@ -50,8 +50,7 @@ def cmp(self, val, arg): return -1 elif val == argVal: return 0 - else: - return 1 + return 1 def validate(self, name, object): raise NotImplementedError @@ -172,7 +171,7 @@ def __init__(self, len=None, **kwargs): def valueFromString(self, arg): val = util.bytes2unicode(arg) - if not self.identRe.match(val) or not 0 < len(val) <= self.len: + if not self.identRe.match(val) or len(val) > self.len or not val: raise TypeError return val @@ -390,4 +389,9 @@ def getSpec(self): def toRaml(self): return {'type': "object", - 'properties': dict([(maybeNoneOrList(k, v), {'type': v.ramlname, 'description': ''}) for k, v in iteritems(self.fields)])} + 'properties': dict([ + ( + maybeNoneOrList(k, v), + {'type': v.ramlname, 'description': ''} + ) + for k, v in iteritems(self.fields)])} diff --git a/master/buildbot/db/base.py b/master/buildbot/db/base.py index 0787b45565e3..f4121a959a05 100644 --- a/master/buildbot/db/base.py +++ b/master/buildbot/db/base.py @@ -97,8 +97,7 @@ def encode(x): return b'\xf5' elif isinstance(x, text_type): return x.encode('utf-8') - else: - return str(x).encode('utf-8') + return str(x).encode('utf-8') return hashlib.sha1(b'\0'.join(map(encode, args))).hexdigest() diff --git a/master/buildbot/db/builders.py b/master/buildbot/db/builders.py index 4a920a30b69d..c65d8b8ce162 100644 --- a/master/buildbot/db/builders.py +++ b/master/buildbot/db/builders.py @@ -41,9 +41,8 @@ def updateBuilderInfo(self, builderid, description, tags): def toTagid(tag): if isinstance(tag, type(1)): return defer.succeed(tag) - else: - ssConnector = self.master.db.tags - return ssConnector.findTagId(tag) + ssConnector = self.master.db.tags + return ssConnector.findTagId(tag) tagsids = [r[1] for r in (yield defer.DeferredList( [toTagid(tag) for tag in tags], @@ -79,8 +78,7 @@ def getBuilder(self, builderid): def first(bldrs): if bldrs: return bldrs[0] - else: - return None + return None return d def addBuilderMaster(self, builderid=None, masterid=None): @@ -97,8 +95,8 @@ def removeBuilderMaster(self, builderid=None, masterid=None): def thd(conn, no_recurse=False): tbl = self.db.model.builder_masters conn.execute(tbl.delete( - whereclause=((tbl.c.builderid == builderid) - & (tbl.c.masterid == masterid)))) + whereclause=((tbl.c.builderid == builderid) & + (tbl.c.masterid == masterid)))) return self.db.pool.do(thd) def getBuilders(self, masterid=None, _builderid=None): diff --git a/master/buildbot/db/buildsets.py b/master/buildbot/db/buildsets.py index 5b8cef89e919..fd1048fac91b 100644 --- a/master/buildbot/db/buildsets.py +++ b/master/buildbot/db/buildsets.py @@ -59,9 +59,8 @@ def addBuildset(self, sourcestamps, reason, properties, builderids, def toSsid(sourcestamp): if isinstance(sourcestamp, integer_types): return defer.succeed(sourcestamp) - else: - ssConnector = self.master.db.sourcestamps - return ssConnector.findSourceStampId(**sourcestamp) + ssConnector = self.master.db.sourcestamps + return ssConnector.findSourceStampId(**sourcestamp) sourcestamps = yield defer.DeferredList( [toSsid(ss) for ss in sourcestamps], fireOnOneErrback=True, consumeErrors=True) diff --git a/master/buildbot/db/logs.py b/master/buildbot/db/logs.py index 35ff160b2c06..596aa077c0cd 100644 --- a/master/buildbot/db/logs.py +++ b/master/buildbot/db/logs.py @@ -245,8 +245,7 @@ def _splitBigChunk(self, content, logid): i = content.find(b'\n', self.MAX_CHUNK_SIZE) if i == -1: return truncline, None - else: - return truncline, content[i + 1:] + return truncline, content[i + 1:] def finishLog(self, logid): def thdfinishLog(conn): diff --git a/master/buildbot/db/schedulers.py b/master/buildbot/db/schedulers.py index 217d5dfe029d..fcd577fdfc15 100644 --- a/master/buildbot/db/schedulers.py +++ b/master/buildbot/db/schedulers.py @@ -45,13 +45,13 @@ def thd(conn): tbl = self.db.model.scheduler_changes ins_q = tbl.insert() upd_q = tbl.update( - ((tbl.c.schedulerid == schedulerid) - & (tbl.c.changeid == sa.bindparam('wc_changeid')))) + ((tbl.c.schedulerid == schedulerid) & + (tbl.c.changeid == sa.bindparam('wc_changeid')))) for changeid, important in iteritems(classifications): transaction = conn.begin() # convert the 'important' value into an integer, since that # is the column type - imp_int = important and 1 or 0 + imp_int = int(bool(important)) try: conn.execute(ins_q, schedulerid=schedulerid, diff --git a/master/buildbot/locks.py b/master/buildbot/locks.py index aa29e13d85e5..4f09c58ba6ba 100644 --- a/master/buildbot/locks.py +++ b/master/buildbot/locks.py @@ -29,7 +29,8 @@ if False: # for debugging pylint: disable=using-constant-test debuglog = log.msg else: - debuglog = lambda m: None + def debuglog(m): + pass class BaseLock: @@ -96,9 +97,8 @@ def isAvailable(self, requester, access): # Wants counting access return num_excl == 0 and num_counting + len(ahead) < self.maxCount \ and all([w[1].mode == 'counting' for w in ahead]) - else: - # Wants exclusive access - return num_excl == 0 and num_counting == 0 and len(ahead) == 0 + # else Wants exclusive access + return num_excl == 0 and num_counting == 0 and not ahead def claim(self, owner, access): """ Claim the lock (lock must be available) """ diff --git a/master/buildbot/monkeypatches/python14653.py b/master/buildbot/monkeypatches/python14653.py index ba02bb47957c..169b14187f2a 100644 --- a/master/buildbot/monkeypatches/python14653.py +++ b/master/buildbot/monkeypatches/python14653.py @@ -24,9 +24,8 @@ def fixed_mktime_tz(data): if data[9] is None: # No zone info, so localtime is better assumption than GMT return time.mktime(data[:8] + (-1,)) - else: - t = calendar.timegm(data) - return t - data[9] + t = calendar.timegm(data) + return t - data[9] def patch(): diff --git a/master/buildbot/pbmanager.py b/master/buildbot/pbmanager.py index 727fc14d38b5..c55e2663b12c 100644 --- a/master/buildbot/pbmanager.py +++ b/master/buildbot/pbmanager.py @@ -208,6 +208,5 @@ def check(matched): return failure.Failure(error.UnauthorizedLogin()) return creds.username return d - else: - log.msg("invalid login from unknown user '%s'" % creds.username) - return defer.fail(error.UnauthorizedLogin()) + log.msg("invalid login from unknown user '%s'" % creds.username) + return defer.fail(error.UnauthorizedLogin()) diff --git a/master/buildbot/plugins/db.py b/master/buildbot/plugins/db.py index 0d16d1cf9b0a..cf2480be777b 100644 --- a/master/buildbot/plugins/db.py +++ b/master/buildbot/plugins/db.py @@ -149,7 +149,7 @@ def load(self): def add(self, name, entry): assert isinstance(name, string_types) and isinstance(entry, - _PluginEntry) + _PluginEntry) self._add(name, entry) def _add(self, name, entry): @@ -183,8 +183,7 @@ def __getattr__(self, name): if isinstance(child, _PluginEntry): return child.value - else: - return child + return child def info(self, name): assert isinstance(name, string_types) diff --git a/master/buildbot/process/botmaster.py b/master/buildbot/process/botmaster.py index a1d821e1f721..23da5dce6de0 100644 --- a/master/buildbot/process/botmaster.py +++ b/master/buildbot/process/botmaster.py @@ -103,7 +103,7 @@ def cleanShutdown(self, quickMode=False, stopReactor=True, _reactor=reactor): for builder in self.builders.values(): for build in builder.building: l.append(build.waitUntilFinished()) - if len(l) == 0: + if not l: log.msg("No running jobs, starting shutdown immediately") else: log.msg("Waiting for %i build(s) to finish" % len(l)) diff --git a/master/buildbot/process/build.py b/master/buildbot/process/build.py index d2ea301b6909..a9de8b3f211b 100644 --- a/master/buildbot/process/build.py +++ b/master/buildbot/process/build.py @@ -673,8 +673,7 @@ def getSummaryStatistic(self, name, summary_fn, initial_value=_sentinel): if st.hasStatistic(name)] if initial_value is self._sentinel: return reduce(summary_fn, step_stats_list) - else: - return reduce(summary_fn, step_stats_list, initial_value) + return reduce(summary_fn, step_stats_list, initial_value) @defer.inlineCallbacks def getUrl(self): diff --git a/master/buildbot/process/builder.py b/master/buildbot/process/builder.py index 1dd92c00d8c1..1b81ec39b1d3 100644 --- a/master/buildbot/process/builder.py +++ b/master/buildbot/process/builder.py @@ -333,7 +333,7 @@ def _startBuildFor(self, workerforbuilder, buildrequests): # set up locks build.setLocks(self.config.locks) - if len(self.config.env) > 0: + if self.config.env: build.setWorkerEnvironment(self.config.env) # append the build to self.building @@ -374,7 +374,7 @@ def _startBuildFor(self, workerforbuilder, buildrequests): def setupProperties(self, props): props.setProperty("buildername", self.name, "Builder") - if len(self.config.properties) > 0: + if self.config.properties: for propertyname in self.config.properties: props.setProperty(propertyname, self.config.properties[propertyname], diff --git a/master/buildbot/process/buildrequest.py b/master/buildbot/process/buildrequest.py index 607b9789ae3a..03f837e56343 100644 --- a/master/buildbot/process/buildrequest.py +++ b/master/buildbot/process/buildrequest.py @@ -309,8 +309,7 @@ def mergeSourceStampsWith(self, others): for other in others: if codebase in other.sources: all_sources.append(other.sources[codebase]) - assert len( - all_sources) > 0, "each codebase should have atleast one sourcestamp" + assert all_sources, "each codebase should have atleast one sourcestamp" # TODO: select the sourcestamp that best represents the merge, # preferably the latest one. This used to be accomplished by diff --git a/master/buildbot/process/buildstep.py b/master/buildbot/process/buildstep.py index e99cc93e2f77..5f01595e94d1 100644 --- a/master/buildbot/process/buildstep.py +++ b/master/buildbot/process/buildstep.py @@ -742,8 +742,7 @@ def isNewStyle(self): # **temporary** method until new-style steps are the only supported style if PY3: return self.run.__func__ is not BuildStep.run - else: - return self.run.im_func is not BuildStep.run.im_func + return self.run.im_func is not BuildStep.run.im_func def start(self): # New-style classes implement 'run'. @@ -1067,8 +1066,7 @@ def getText(self, cmd, results): return self.describe(True) + ["exception"] elif results == CANCELLED: return self.describe(True) + ["cancelled"] - else: - return self.describe(True) + ["failed"] + return self.describe(True) + ["failed"] # TODO: delete def getText2(self, cmd, results): diff --git a/master/buildbot/process/log.py b/master/buildbot/process/log.py index cd7323ae5a9b..757454dbf1de 100644 --- a/master/buildbot/process/log.py +++ b/master/buildbot/process/log.py @@ -53,8 +53,7 @@ def _decoderFromString(cfg): """ if isinstance(cfg, (bytes, str)): return lambda s: s.decode(cfg, 'replace') - else: - return cfg + return cfg @classmethod def new(cls, master, name, type, logid, logEncoding): diff --git a/master/buildbot/process/metrics.py b/master/buildbot/process/metrics.py index 40816981f7ba..c1a60de499ac 100644 --- a/master/buildbot/process/metrics.py +++ b/master/buildbot/process/metrics.py @@ -173,7 +173,7 @@ def append(self, o): self._calc() def _calc(self): - if len(self) == 0: + if not self: self.average = 0 else: self.average = float(sum(self)) / len(self) diff --git a/master/buildbot/process/properties.py b/master/buildbot/process/properties.py index f7e4dbd3fbc0..01e4e2ca1040 100644 --- a/master/buildbot/process/properties.py +++ b/master/buildbot/process/properties.py @@ -246,8 +246,7 @@ def colon_minus(mo): return self.temp_vals[prop] elif prop in properties: return properties[prop] - else: - return repl + return repl def colon_tilde(mo): # %(prop:~repl)s @@ -258,8 +257,7 @@ def colon_tilde(mo): return self.temp_vals[prop] elif prop in properties and properties[prop]: return properties[prop] - else: - return repl + return repl def colon_plus(mo): # %(prop:+repl)s @@ -267,8 +265,7 @@ def colon_plus(mo): prop, repl = mo.group(1, 2) if prop in properties or prop in self.temp_vals: return repl - else: - return '' + return '' for regexp, fn in [ (self.colon_minus_re, colon_minus), @@ -478,8 +475,7 @@ def getRenderingFor(self, build): ss = build.getBuild().getSourceStamp(self.codebase) if ss: return ss.asDict() - else: - return {} + return {} @implementer(IRenderable) @@ -547,8 +543,7 @@ def __repr__(self): return 'Interpolate(%r, *%r)' % (self.fmtstring, self.args) elif self.kwargs: return 'Interpolate(%r, **%r)' % (self.fmtstring, self.kwargs) - else: - return 'Interpolate(%r)' % (self.fmtstring,) + return 'Interpolate(%r)' % (self.fmtstring,) @staticmethod def _parse_prop(arg): @@ -620,8 +615,7 @@ def _parseSubstitution(self, fmt): if not fn: config.error("invalid Interpolate selector '%s'" % key) return None - else: - return fn(arg) + return fn(arg) @staticmethod def _splitBalancedParen(delim, arg): @@ -704,12 +698,11 @@ def getRenderingFor(self, build): d = props.render(self.args) d.addCallback(lambda args: self.fmtstring % tuple(args)) - return d else: d = props.render(self.interpolations) d.addCallback(lambda res: self.fmtstring % res) - return d + return d @implementer(IRenderable) @@ -744,14 +737,12 @@ def getRenderingFor(self, props): def checkDefault(rv): if rv: return rv - else: - return props.render(self.default) - return d - else: - if props.hasProperty(self.key): - return props.render(props.getProperty(self.key)) - else: return props.render(self.default) + return d + + if props.hasProperty(self.key): + return props.render(props.getProperty(self.key)) + return props.render(self.default) @implementer(IRenderable) diff --git a/master/buildbot/process/remotecommand.py b/master/buildbot/process/remotecommand.py index b4d7871bf3e9..035608223744 100644 --- a/master/buildbot/process/remotecommand.py +++ b/master/buildbot/process/remotecommand.py @@ -365,8 +365,7 @@ def __init__(self, workdir, command, env=None, def obfuscate(arg): if isinstance(arg, tuple) and len(arg) == 3 and arg[0] == 'obfuscated': return arg[2] - else: - return arg + return arg self.fake_command = [obfuscate(c) for c in self.command] if env is not None: diff --git a/master/buildbot/process/results.py b/master/buildbot/process/results.py index 2ac8dfd15ff1..0b2e0b896ac2 100644 --- a/master/buildbot/process/results.py +++ b/master/buildbot/process/results.py @@ -27,8 +27,7 @@ def statusToString(status): return "not finished" if status < 0 or status >= len(Results): return "Invalid status" - else: - return Results[status] + return Results[status] def worst_status(a, b): diff --git a/master/buildbot/reporters/gerrit.py b/master/buildbot/reporters/gerrit.py index dcc66e3a571c..c418556a7185 100644 --- a/master/buildbot/reporters/gerrit.py +++ b/master/buildbot/reporters/gerrit.py @@ -74,10 +74,9 @@ def _old_add_label(label, value): return ["--verified %d" % int(value)] elif label == GERRIT_LABEL_REVIEWED: return ["--code-review %d" % int(value)] - else: - warnings.warn('Gerrit older than 2.6 does not support custom labels. ' - 'Setting %s is ignored.' % label) - return [] + warnings.warn('Gerrit older than 2.6 does not support custom labels. ' + 'Setting %s is ignored.' % label) + return [] def _new_add_label(label, value): @@ -237,8 +236,9 @@ def processVersion(self, gerrit_version, func): def callWithVersion(self, func): command = self._gerritCmd("version") - callback = lambda gerrit_version: self.processVersion( - gerrit_version, func) + + def callback(gerrit_version): + return self.processVersion(gerrit_version, func) self.spawnProcess(self.VersionPP(callback), command[0], command, env=None) @@ -295,7 +295,8 @@ def buildComplete(self, key, build): return yield self.getBuildDetails(build) if self.isBuildReported(build): - result = yield self.reviewCB(build['builder']['name'], build, build['results'], self.master, self.reviewArg) + result = yield self.reviewCB(build['builder']['name'], build, build['results'], + self.master, self.reviewArg) result = _handleLegacyResult(result) self.sendCodeReviews(build, result) @@ -336,7 +337,8 @@ def getBuildInfo(build): 'result': result, 'resultText': resultText, 'text': build['state_string'], - 'url': utils.getURLForBuild(self.master, build['builder']['builderid'], build['number']), + 'url': utils.getURLForBuild(self.master, build['builder']['builderid'], + build['number']), 'build': build } buildInfoList = sorted( diff --git a/master/buildbot/reporters/gerrit_verify_status.py b/master/buildbot/reporters/gerrit_verify_status.py index 4c5145c66642..ee8561538441 100644 --- a/master/buildbot/reporters/gerrit_verify_status.py +++ b/master/buildbot/reporters/gerrit_verify_status.py @@ -163,8 +163,7 @@ def formatDuration(self, duration): hours, minutes, seconds) elif hours: return '{}h {}m {}s'.format(hours, minutes, seconds) - else: - return '{}m {}s'.format(minutes, seconds) + return '{}m {}s'.format(minutes, seconds) @staticmethod def getGerritChanges(props): diff --git a/master/buildbot/reporters/words.py b/master/buildbot/reporters/words.py index 03d68e46af63..bcf87ddc9e39 100644 --- a/master/buildbot/reporters/words.py +++ b/master/buildbot/reporters/words.py @@ -88,8 +88,7 @@ def maybeColorize(text, color, useColors): if useColors: return "%c%d%s%c" % (3, irc_colors.index(color), text, 15) - else: - return text + return text class UsageError(ValueError): @@ -114,11 +113,11 @@ class ForceOptions(usage.Options): def parseArgs(self, *args): args = list(args) - if len(args) > 0: + if args: if self['builder'] is not None: raise UsageError("--builder provided in two ways") self['builder'] = args.pop(0) - if len(args) > 0: + if args: # args might be modified above if self['reason'] is not None: raise UsageError("--reason provided in two ways") self['reason'] = " ".join(args) @@ -336,7 +335,7 @@ def command_LIST(self, args): @defer.inlineCallbacks def command_STATUS(self, args): args = self.splitArgs(args) - if len(args) == 0: + if not args: which = "all" elif len(args) == 1: which = args[0] @@ -351,7 +350,9 @@ def command_STATUS(self, args): command_STATUS.usage = "status [] - List status of a builder (or all builders)" def validate_notification_event(self, event): - if not re.compile("^(started|finished|success|failure|exception|warnings|(success|warnings|exception|failure)To(Failure|Success|Warnings|Exception))$").match(event): + if not re.compile("^(started|finished|success|failure|exception|warnings|" + "(success|warnings|exception|failure)To" + "(Failure|Success|Warnings|Exception))$").match(event): raise UsageError("try 'notify on|off '") def list_notified_events(self): @@ -437,7 +438,10 @@ def command_NOTIFY(self, args): else: raise UsageError("try 'notify on|off|list []'") - command_NOTIFY.usage = "notify on|off|list [] ... - Notify me about build events. event should be one or more of: 'started', 'finished', 'failure', 'success', 'exception' or 'xToY' (where x and Y are one of success, warnings, failure, exception, but Y is capitalized)" + command_NOTIFY.usage = ("notify on|off|list [] ... - Notify me about build events." + " event should be one or more of: 'started', 'finished', 'failure'," + " 'success', 'exception' or 'xToY' (where x and Y are one of success," + " warnings, failure, exception, but Y is capitalized)") def getRunningBuilds(self, builderid): d = self.master.data.get(('builds',), @@ -567,7 +571,7 @@ def buildFinished(self, build): # if self.bot.showBlameList and buildResult != SUCCESS and len(build.changes) != 0: # r += ' blamelist: ' + ', '.join(list(set([c.who for c in build.changes]))) r += " - %s" % utils.getURLForBuild( - self.master, builder['builderid'], buildNumber) + self.master, builder['builderid'], buildNumber) self.send(r) results_descriptions = { @@ -590,13 +594,15 @@ def notify_for_finished(self, build): if self.notify_for(self.results_descriptions.get(build['results'])[0].lower()): defer.returnValue(True) - prevBuild = yield self.master.data.get(('builders', build['builderid'], 'builds', build['number'] - 1)) + prevBuild = yield self.master.data.get( + ('builders', build['builderid'], 'builds', build['number'] - 1)) if prevBuild: prevResult = prevBuild['results'] - required_notification_control_string = ''.join((self.results_descriptions.get(prevResult)[0].lower(), - 'To', - self.results_descriptions.get(build['results'])[0].capitalize())) + required_notification_control_string = ''.join( + (self.results_descriptions.get(prevResult)[0].lower(), + 'To', + self.results_descriptions.get(build['results'])[0].capitalize())) if (self.notify_for(required_notification_control_string)): defer.returnValue(True) @@ -632,7 +638,7 @@ def watchedBuildFinished(self, build): results[1], self.useColors) r += " - %s" % utils.getURLForBuild( - self.master, builder['builderid'], buildnum) + self.master, builder['builderid'], buildnum) self.send(r) @@ -703,15 +709,18 @@ def command_FORCE(self, args): # For now, we just use # this as the id. scheduler=u"status.words", - sourcestamps=[{'codebase': codebase, 'branch': branch, - 'revision': revision, 'project': project, 'repository': "null"}], + sourcestamps=[{ + 'codebase': codebase, 'branch': branch, + 'revision': revision, 'project': project, + 'repository': "null"}], reason=reason, properties=properties.asDict(), waited_for=False) except AssertionError as e: self.send("I can't: " + str(e)) - command_FORCE.usage = "force build [--codebase=CODEBASE] [--branch=branch] [--revision=revision] [--props=prop1=val1,prop2=val2...] - Force a build" + command_FORCE.usage = ("force build [--codebase=CODEBASE] [--branch=branch] [--revision=revision]" + "[--props=prop1=val1,prop2=val2...] - Force a build") @defer.inlineCallbacks def command_STOP(self, args): @@ -734,7 +743,8 @@ def command_STOP(self, args): for bdict in builds: num = bdict['number'] - yield self.master.data.control('stop', {'reason': r}, ('builders', builder['builderid'], 'builds', num)) + yield self.master.data.control('stop', {'reason': r}, + ('builders', builder['builderid'], 'builds', num)) if self.useRevisions: revisions = yield self.getRevisionsForBuild(bdict) @@ -797,7 +807,7 @@ def command_LAST(self, args): # FIXME: NEED TO THINK ABOUT! args = self.splitArgs(args) - if len(args) == 0: + if not args: builders = yield self.getAllBuilders() elif len(args) == 1: builder = yield self.getBuilder(buildername=args[0]) @@ -880,7 +890,8 @@ def command_HELP(self, args): else: self.send( "No usage info for " + ' '.join(["'%s'" % arg for arg in args])) - command_HELP.usage = "help [ [ ...]] - Give help for or one of it's arguments" + command_HELP.usage = ("help [ [ ...]] - " + "Give help for or one of it's arguments") def command_SOURCE(self, args): self.send("My source can be found at " diff --git a/master/buildbot/revlinks.py b/master/buildbot/revlinks.py index 5c9341964e15..5da5f88f300c 100644 --- a/master/buildbot/revlinks.py +++ b/master/buildbot/revlinks.py @@ -23,7 +23,7 @@ class RevlinkMatch(object): def __init__(self, repo_urls, revlink): - if isinstance(repo_urls, str) or isinstance(repo_urls, text_type): + if isinstance(repo_urls, (str, text_type)): repo_urls = [repo_urls] self.repo_urls = [re.compile(url) for url in repo_urls] self.revlink = revlink diff --git a/master/buildbot/schedulers/basic.py b/master/buildbot/schedulers/basic.py index 2ff8ae75db94..8c02a6607a8e 100644 --- a/master/buildbot/schedulers/basic.py +++ b/master/buildbot/schedulers/basic.py @@ -227,8 +227,7 @@ def gotChange(self, change, important): def getCodebaseDict(self, codebase): if self.createAbsoluteSourceStamps: return AbsoluteSourceStampsMixin.getCodebaseDict(self, codebase) - else: - return self.codebases[codebase] + return self.codebases[codebase] def getChangeFilter(self, branch, branches, change_filter, categories): if branch is NotABranch and not change_filter: diff --git a/master/buildbot/schedulers/forcesched.py b/master/buildbot/schedulers/forcesched.py index 51930b24eebc..fcdb068d0aa8 100644 --- a/master/buildbot/schedulers/forcesched.py +++ b/master/buildbot/schedulers/forcesched.py @@ -56,8 +56,8 @@ def collectValidationErrors(self, name, fn, *args, **kwargs): try: res = yield defer.maybeDeferred(fn, *args, **kwargs) except CollectedValidationError as e: - for name, e in iteritems(e.errors): - self.errors[name] = e + for error_name, e in iteritems(e.errors): + self.errors[error_name] = e except ValueError as e: self.errors[name] = str(e) defer.returnValue(res) @@ -150,7 +150,7 @@ def getFromKwargs(self, kwargs): if not arg.strip(): args.remove(arg) - if len(args) == 0: + if not args: if self.required: raise ValidationError( "'%s' needs to be specified" % (self.label)) @@ -187,8 +187,7 @@ def parse_from_args(self, l): a validated value into a single property value""" if self.multiple: return [self.parse_from_arg(arg) for arg in l] - else: - return self.parse_from_arg(l[0]) + return self.parse_from_arg(l[0]) def parse_from_arg(self, s): return s @@ -673,19 +672,22 @@ def __init__(self, name, builderNames, if codebases is None: codebases = [CodebaseParameter(codebase='')] elif not codebases: - config.error("ForceScheduler '%s': 'codebases' cannot be empty; use [CodebaseParameter(codebase='', hide=True)] if needed: %r " % ( - name, codebases)) + config.error("ForceScheduler '%s': 'codebases' cannot be empty;" + " use [CodebaseParameter(codebase='', hide=True)] if needed: %r " % ( + name, codebases)) elif not isinstance(codebases, list): - config.error("ForceScheduler '%s': 'codebases' should be a list of strings or CodebaseParameter, not %s" % ( - name, type(codebases))) + config.error("ForceScheduler '%s': 'codebases' should be a list of strings or CodebaseParameter," + " not %s" % ( + name, type(codebases))) codebase_dict = {} for codebase in codebases: if isinstance(codebase, string_types): codebase = CodebaseParameter(codebase=codebase) elif not isinstance(codebase, CodebaseParameter): - config.error("ForceScheduler '%s': 'codebases' must be a list of strings or CodebaseParameter objects: %r" % ( - name, codebases)) + config.error("ForceScheduler '%s': 'codebases' must be a list of strings" + " or CodebaseParameter objects: %r" % ( + name, codebases)) self.forcedProperties.append(codebase) codebase_dict[codebase.codebase] = dict( diff --git a/master/buildbot/schedulers/timed.py b/master/buildbot/schedulers/timed.py index 3b8206dc4287..d131bf944ce8 100644 --- a/master/buildbot/schedulers/timed.py +++ b/master/buildbot/schedulers/timed.py @@ -180,8 +180,7 @@ def startBuild(self): def getCodebaseDict(self, codebase): if self.createAbsoluteSourceStamps: return AbsoluteSourceStampsMixin.getCodebaseDict(self, codebase) - else: - return self.codebases[codebase] + return self.codebases[codebase] # Timed methods @@ -279,8 +278,7 @@ def __init__(self, name, builderNames, periodicBuildTimer, def getNextBuildTime(self, lastActuated): if lastActuated is None: return defer.succeed(self.now()) # meaning "ASAP" - else: - return defer.succeed(lastActuated + self.periodicBuildTimer) + return defer.succeed(lastActuated + self.periodicBuildTimer) class NightlyBase(Timed): diff --git a/master/buildbot/scripts/base.py b/master/buildbot/scripts/base.py index 52e4a90e5c45..32c6b838cc18 100644 --- a/master/buildbot/scripts/base.py +++ b/master/buildbot/scripts/base.py @@ -171,8 +171,7 @@ def getConfigFileFromTac(basedir, quiet=False): config = getConfigFromTac(basedir, quiet=quiet) if config: return config.get("configfile", "master.cfg") - else: - return "master.cfg" + return "master.cfg" class SubcommandOptions(usage.Options): @@ -293,7 +292,7 @@ class BasedirMixin(object): extraActions=[usage.CompleteDirs(descr="buildbot base directory")]) def parseArgs(self, *args): - if len(args) > 0: + if args: self['basedir'] = args[0] else: # Use the current directory if no basedir was specified. diff --git a/master/buildbot/steps/mtrlogobserver.py b/master/buildbot/steps/mtrlogobserver.py index 35e1b5d29ea0..5122a83a4485 100644 --- a/master/buildbot/steps/mtrlogobserver.py +++ b/master/buildbot/steps/mtrlogobserver.py @@ -53,8 +53,7 @@ def __init__(self, *args, **kwargs): def __eq__(self, other): if isinstance(other, EqConnectionPool): return self._eqKey == other._eqKey - else: - return False + return False def __ne__(self, other): return not self.__eq__(other) @@ -149,8 +148,7 @@ def outLineReceived(self, line): self._line_re5.search(stripLine) or stripLine == "Test suite timeout! Terminating..." or stripLine.startswith("mysql-test-run: *** ERROR: Not all tests completed") or - (stripLine.startswith("------------------------------------------------------------") - and self.testFail is not None)): + (stripLine.startswith("-" * 60) and self.testFail is not None)): self.closeTestFail() else: self.addTestFailOutput(stripLine + "\n") @@ -391,8 +389,7 @@ def runQuery(txn, *args, **kw): def registerInDB(self): if self.dbpool: return self.runInteractionWithRetry(self.doRegisterInDB) - else: - return defer.succeed(0) + return defer.succeed(0) # The real database work is done in a thread in a synchronous way. def doRegisterInDB(self, txn): diff --git a/master/buildbot/steps/python.py b/master/buildbot/steps/python.py index 3033ec385c95..306cbea17daa 100644 --- a/master/buildbot/steps/python.py +++ b/master/buildbot/steps/python.py @@ -346,10 +346,8 @@ def evaluateCommand(self, cmd): if self.success: if not self.warnings: return SUCCESS - else: - return WARNINGS - else: - return FAILURE + return WARNINGS + return FAILURE def describe(self, done=False): if not done: diff --git a/master/buildbot/steps/shell.py b/master/buildbot/steps/shell.py index be7bd0b73db6..ff0d383ada66 100644 --- a/master/buildbot/steps/shell.py +++ b/master/buildbot/steps/shell.py @@ -145,8 +145,8 @@ def __init__(self, workdir=None, invalid_args.append(arg) # Raise Configuration error in case invalid arguments are present if invalid_args: - config.error("Invalid argument(s) passed to RemoteShellCommand: " - + ', '.join(invalid_args)) + config.error("Invalid argument(s) passed to RemoteShellCommand: " + + ', '.join(invalid_args)) # everything left over goes to the RemoteShellCommand kwargs['usePTY'] = usePTY @@ -365,9 +365,9 @@ def describe(self, done=False): return ["%d properties set" % len(self.property_changes)] elif len(self.property_changes) == 1: return ["property '%s' set" % list(self.property_changes)[0]] - else: - # let ShellCommand describe - return ShellCommand.describe(self, done) + # else: + # let ShellCommand describe + return ShellCommand.describe(self, done) SetProperty = SetPropertyFromCommand @@ -496,13 +496,13 @@ def warningLogConsumer(self): wre = re.compile(wre) directoryEnterRe = self.directoryEnterPattern - if (directoryEnterRe is not None - and isinstance(directoryEnterRe, string_types)): + if (directoryEnterRe is not None and + isinstance(directoryEnterRe, string_types)): directoryEnterRe = re.compile(directoryEnterRe) directoryLeaveRe = self.directoryLeavePattern - if (directoryLeaveRe is not None - and isinstance(directoryLeaveRe, string_types)): + if (directoryLeaveRe is not None and + isinstance(directoryLeaveRe, string_types)): directoryLeaveRe = re.compile(directoryLeaveRe) # Check if each line in the output from this command matched our diff --git a/master/buildbot/steps/source/bzr.py b/master/buildbot/steps/source/bzr.py index 6f446fac075c..2e2e23fa8e20 100644 --- a/master/buildbot/steps/source/bzr.py +++ b/master/buildbot/steps/source/bzr.py @@ -84,8 +84,7 @@ def checkInstall(bzrInstalled): def checkPatched(patched): if patched: return self._dovccmd(['clean-tree', '--ignored', '--force']) - else: - return 0 + return 0 d.addCallback(self._getAttrGroupMember('mode', self.mode)) @@ -247,8 +246,7 @@ def evaluateCommand(_): raise buildstep.BuildStepFailed() if collectStdout: return cmd.stdout - else: - return cmd.rc + return cmd.rc return d def checkBzr(self): diff --git a/master/buildbot/steps/source/cvs.py b/master/buildbot/steps/source/cvs.py index 90ac86ca38ad..f6df7726acad 100644 --- a/master/buildbot/steps/source/cvs.py +++ b/master/buildbot/steps/source/cvs.py @@ -81,8 +81,7 @@ def checkInstall(cvsInstalled): def checkPatched(patched): if patched: return self.purge(False) - else: - return 0 + return 0 d.addCallback(self._getAttrGroupMember('mode', self.mode)) if patch: diff --git a/master/buildbot/steps/source/darcs.py b/master/buildbot/steps/source/darcs.py index cc591dc27fb7..3aa1f840c444 100644 --- a/master/buildbot/steps/source/darcs.py +++ b/master/buildbot/steps/source/darcs.py @@ -85,8 +85,7 @@ def checkInstall(darcsInstalled): def checkPatched(patched): if patched: return self.copy() - else: - return 0 + return 0 d.addCallback(self._getAttrGroupMember('mode', self.mode)) @@ -247,8 +246,7 @@ def evaluateCommand(_): raise buildstep.BuildStepFailed() if collectStdout: return cmd.stdout - else: - return cmd.rc + return cmd.rc return d def _sourcedirIsUpdatable(self): diff --git a/master/buildbot/steps/source/mercurial.py b/master/buildbot/steps/source/mercurial.py index ffbe81c65d23..17535d293d0c 100644 --- a/master/buildbot/steps/source/mercurial.py +++ b/master/buildbot/steps/source/mercurial.py @@ -154,9 +154,8 @@ def _cmd(updatable): if updatable: yield self._dovccmd(self.getHgPullCommand()) return - else: - yield self._clone() - return + yield self._clone() + return d.addCallback(_cmd) d.addCallback(self._checkBranchChange) @@ -263,8 +262,7 @@ def evaluateCommand(_): raise buildstep.BuildStepFailed() if collectStdout: return cmd.stdout - else: - return cmd.rc + return cmd.rc return d def computeSourceRevision(self, changes): @@ -283,13 +281,12 @@ def computeSourceRevision(self, changes): def _getCurrentBranch(self): if self.branchType == 'dirname': return defer.succeed(self.branch) - else: - d = self._dovccmd(['identify', '--branch'], collectStdout=True) + d = self._dovccmd(['identify', '--branch'], collectStdout=True) - @d.addCallback - def _getbranch(stdout): - return stdout.strip() - return d + @d.addCallback + def _getbranch(stdout): + return stdout.strip() + return d def _getMethod(self): if self.method is not None and self.mode != 'incremental': @@ -313,7 +310,7 @@ def parseAndRemove(stdout): for filename in stdout.splitlines(): filename = self.workdir + '/' + filename files.append(filename) - if len(files) == 0: + if not files: d = defer.succeed(0) else: if self.workerVersionIsOlderThan('rmdir', '2.14'): diff --git a/master/buildbot/steps/source/mtn.py b/master/buildbot/steps/source/mtn.py index c7fa1063791a..e44dc99cab08 100644 --- a/master/buildbot/steps/source/mtn.py +++ b/master/buildbot/steps/source/mtn.py @@ -181,13 +181,13 @@ def clean(self, ignore_ignored=True): for cmd in commands: stdout = yield self._dovccmd(cmd, workdir=self.workdir, collectStdout=True) - if len(stdout) == 0: + if not stdout: continue for filename in stdout.strip().split('\n'): filename = self.workdir + '/' + str(filename) files.append(filename) - if len(files) == 0: + if not files: rc = 0 else: if self.workerVersionIsOlderThan('rmdir', '2.14'): diff --git a/master/buildbot/steps/source/p4.py b/master/buildbot/steps/source/p4.py index dd9df1bbaed2..b4c8eafe81a1 100644 --- a/master/buildbot/steps/source/p4.py +++ b/master/buildbot/steps/source/p4.py @@ -168,7 +168,8 @@ def mode_full(self, _): if debug_logging: log.msg("P4: full() sync command based on :base:%s changeset:%d", self._getP4BaseForLog(), int(self.revision)) - yield self._dovccmd(['sync', '%s...@%d' % (self._getP4BaseForCommand(), int(self.revision))], collectStdout=True) + yield self._dovccmd(['sync', '%s...@%d' % ( + self._getP4BaseForCommand(), int(self.revision))], collectStdout=True) else: if debug_logging: log.msg( @@ -239,8 +240,7 @@ def encodeArg(arg): # If a tuple, then the second element is the argument that will # be used when executing the command. return (arg[0], util.encodeString(arg[1]), arg[2]) - else: - return util.encodeString(arg) + return util.encodeString(arg) command = [encodeArg(c) for c in command] return command @@ -272,8 +272,7 @@ def evaluateCommand(_): raise buildstep.BuildStepFailed() if collectStdout: return cmd.stdout - else: - return cmd.rc + return cmd.rc return d def _getMethod(self): diff --git a/master/buildbot/steps/source/svn.py b/master/buildbot/steps/source/svn.py index 1fffcb6d0948..549828f87352 100644 --- a/master/buildbot/steps/source/svn.py +++ b/master/buildbot/steps/source/svn.py @@ -101,8 +101,7 @@ def checkInstall(svnInstalled): def checkPatched(patched): if patched: return self.purge(False) - else: - return 0 + return 0 d.addCallback(self._getAttrGroupMember('mode', self.mode)) @@ -201,7 +200,8 @@ def copy(self): export_cmd.extend([checkout_dir, self.workdir]) cmd = remotecommand.RemoteShellCommand('', export_cmd, - env=self.env, logEnviron=self.logEnviron, timeout=self.timeout) + env=self.env, logEnviron=self.logEnviron, + timeout=self.timeout) cmd.useLog(self.stdio_log, False) yield self.runCommand(cmd) @@ -251,8 +251,7 @@ def evaluateCommand(_): return cmd.stdout elif collectStderr: return cmd.stderr - else: - return cmd.rc + return cmd.rc return d def _getMethod(self): @@ -272,7 +271,8 @@ def _sourcedirIsUpdatable(self): return # then run 'svn info --xml' to check that the URL matches our repourl - stdout, stderr = yield self._dovccmd(['info', '--xml'], collectStdout=True, collectStderr=True, abandonOnFailure=False) + stdout, stderr = yield self._dovccmd(['info', '--xml'], collectStdout=True, + collectStderr=True, abandonOnFailure=False) # svn: E155037: Previous operation has not finished; run 'cleanup' if # it was interrupted @@ -355,7 +355,7 @@ def parseAndRemove(stdout): for filename in self.getUnversionedFiles(stdout, self.keep_on_purge): filename = self.workdir + '/' + str(filename) files.append(filename) - if len(files) == 0: + if not files: d = defer.succeed(0) else: if self.workerVersionIsOlderThan('rmdir', '2.14'): @@ -428,9 +428,11 @@ def svnUriCanonicalize(uri): 'svn': '3690'} relative_schemes = ['http', 'https', 'svn'] - quote = lambda uri: urlquote(uri, "!$&'()*+,-./:=@_~", encoding="latin-1") - if len(uri) == 0 or uri == '/': + def quote(uri): + return urlquote(uri, "!$&'()*+,-./:=@_~", encoding="latin-1") + + if not uri or uri == '/': return uri (scheme, authority, path, parameters, query, fragment) = urlparse(uri) @@ -463,8 +465,7 @@ def svnUriCanonicalize(uri): return canonical_uri elif canonical_uri[-1] == '/' and canonical_uri[-2] != '/': return canonical_uri[:-1] - else: - return canonical_uri + return canonical_uri def _checkout(self): checkout_cmd = ['checkout', self.repourl, '.'] diff --git a/master/buildbot/steps/transfer.py b/master/buildbot/steps/transfer.py index 44b1f2663aff..8c8cf4fd1df6 100644 --- a/master/buildbot/steps/transfer.py +++ b/master/buildbot/steps/transfer.py @@ -41,8 +41,7 @@ def makeStatusRemoteCommand(step, remote_command, args): self = remotecommand.RemoteCommand( remote_command, args, decodeRC={None: SUCCESS, 0: SUCCESS}) - callback = lambda arg: step.step_status.addLog('stdio') - self.useLogDelayed('stdio', callback, True) + self.useLogDelayed('stdio', lambda arg: step.step_status.addLog('stdio'), True) return self @@ -128,7 +127,8 @@ def __init__(self, workersrc=None, masterdest=None, self.urlText = urlText def finished(self, results): - log.msg("File '%s' upload finished with results %s" % (os.path.basename(self.workersrc), str(results))) + log.msg("File '{}' upload finished with results {}".format( + os.path.basename(self.workersrc), str(results))) self.step_status.setText(self.descriptionDone) _TransferBuildStep.finished(self, results) @@ -368,8 +368,7 @@ def checkStat(_): return self.uploadDirectory(source, masterdest) elif stat.S_ISREG(s[stat.ST_MODE]): return self.uploadFile(source, masterdest) - else: - return defer.fail('%r is neither a regular file, nor a directory' % source) + return defer.fail('%r is neither a regular file, nor a directory' % source) @d.addCallback def uploadDone(result): diff --git a/master/buildbot/steps/vstudio.py b/master/buildbot/steps/vstudio.py index b66b606ff58e..26eb5e0f31a4 100644 --- a/master/buildbot/steps/vstudio.py +++ b/master/buildbot/steps/vstudio.py @@ -134,13 +134,13 @@ def __init__(self, self.config = config self.useenv = useenv self.project = project - if len(INCLUDE) > 0: + if INCLUDE: self.INCLUDE = INCLUDE self.useenv = True - if len(LIB) > 0: + if LIB: self.LIB = LIB self.useenv = True - if len(PATH) > 0: + if PATH: self.PATH = PATH # always upcall ! ShellCommand.__init__(self, **kwargs) @@ -200,8 +200,7 @@ def evaluateCommand(self, cmd): return FAILURE if self.logobserver.nbWarnings > 0: return WARNINGS - else: - return SUCCESS + return SUCCESS def finished(self, result): self.getLog("warnings").finish() diff --git a/master/buildbot/test/fake/fakedb.py b/master/buildbot/test/fake/fakedb.py index 884995edd7e8..534057b67aff 100644 --- a/master/buildbot/test/fake/fakedb.py +++ b/master/buildbot/test/fake/fakedb.py @@ -121,14 +121,12 @@ def __init__(self, **kwargs): def __eq__(self, other): if self.__class__ != other.__class__: return False - else: - return self.values == other.values + return self.values == other.values def __ne__(self, other): if self.__class__ != other.__class__: return True - else: - return self.values != other.values + return self.values != other.values def __lt__(self, other): if self.__class__ != other.__class__: @@ -169,8 +167,7 @@ def encode(x): return b'\xf5' elif isinstance(x, text_type): return x.encode('utf-8') - else: - return str(x).encode('utf-8') + return str(x).encode('utf-8') return hashlib.sha1(b'\0'.join(map(encode, args))).hexdigest() @@ -757,8 +754,7 @@ def getChangeSource(self, changesourceid): # is active rv['masterid'] = self.changesource_masters.get(changesourceid) return defer.succeed(rv) - else: - return None + return None def getChangeSources(self, active=None, masterid=None): d = defer.DeferredList([ @@ -933,8 +929,7 @@ def getChangeFromSSid(self, ssid): self.changes) if v['sourcestampid'] == ssid] if chdicts: return defer.succeed(chdicts[0]) - else: - return defer.succeed(None) + return defer.succeed(None) def _chdict(self, row): chdict = row.copy() @@ -1086,8 +1081,7 @@ def getScheduler(self, schedulerid): # is active rv['masterid'] = self.scheduler_masters.get(schedulerid) return defer.succeed(rv) - else: - return None + return None def getSchedulers(self, active=None, masterid=None): d = defer.DeferredList([ @@ -1403,8 +1397,7 @@ def getBuildsetProperties(self, key, no_cache=False): if key in self.buildsets: return defer.succeed( self.buildsets[key]['properties']) - else: - return defer.succeed({}) + return defer.succeed({}) # fake methods @@ -1966,8 +1959,7 @@ def finishBuild(self, buildid, results, _reactor=reactor): def getBuildProperties(self, bid): if bid in self.builds: return defer.succeed(self.builds[bid]['properties']) - else: - return defer.succeed({}) + return defer.succeed({}) def setBuildProperty(self, bid, name, value, source): assert bid in self.builds diff --git a/master/buildbot/test/fake/hyper.py b/master/buildbot/test/fake/hyper.py index 872d16256b23..6aa8a62d2dce 100644 --- a/master/buildbot/test/fake/hyper.py +++ b/master/buildbot/test/fake/hyper.py @@ -33,7 +33,7 @@ def start(self, container): def close(self): # we should never close if we have live containers - assert len(self._containers) == 0, self._containers + assert not self._containers, self._containers Client.instance = None def stop(self, id): diff --git a/master/buildbot/test/fake/secrets.py b/master/buildbot/test/fake/secrets.py index dd92026c39dd..a5a9715ad73c 100644 --- a/master/buildbot/test/fake/secrets.py +++ b/master/buildbot/test/fake/secrets.py @@ -14,5 +14,4 @@ def reconfigService(self, secretdict={}): def get(self, key): if key in self.allsecrets: return self.allsecrets[key] - else: - return None + return None diff --git a/master/buildbot/test/integration/test_worker_comm.py b/master/buildbot/test/integration/test_worker_comm.py index 32f56d5c19d8..e26c07d386b7 100644 --- a/master/buildbot/test/integration/test_worker_comm.py +++ b/master/buildbot/test/integration/test_worker_comm.py @@ -62,10 +62,9 @@ def __init__(self, callWhenBuilderListSet): def waitForDetach(self): if self._detached: return defer.succeed(None) - else: - d = defer.Deferred() - self._detach_deferreds.append(d) - return d + d = defer.Deferred() + self._detach_deferreds.append(d) + return d def setMasterPerspective(self, persp): self.master_persp = persp @@ -262,11 +261,10 @@ def logged_in(persp): if not waitForBuilderList: return login_d - else: - d = defer.DeferredList([login_d, setBuilderList_d], - consumeErrors=True, fireOnOneErrback=True) - d.addCallback(lambda _: workerworker) - return d + d = defer.DeferredList([login_d, setBuilderList_d], + consumeErrors=True, fireOnOneErrback=True) + d.addCallback(lambda _: workerworker) + return d def workerSideDisconnect(self, worker): """Disconnect from the worker side""" diff --git a/master/buildbot/test/unit/test_data_resultspec.py b/master/buildbot/test/unit/test_data_resultspec.py index 7563c7836951..7a4a72a87b45 100644 --- a/master/buildbot/test/unit/test_data_resultspec.py +++ b/master/buildbot/test/unit/test_data_resultspec.py @@ -31,8 +31,7 @@ def mklist(fld, *values): if isinstance(fld, tuple): return [dict(zip(fld, val)) for val in values] - else: - return [{fld: val} for val in values] + return [{fld: val} for val in values] class Filter(unittest.TestCase): @@ -322,7 +321,7 @@ def test_noneComparator(self): self.assertLess(NoneComparator(datetime.datetime(1, 1, 1)), NoneComparator(datetime.datetime(1, 1, 2))) self.assertEqual(NoneComparator(datetime.datetime(1, 1, 1)), - NoneComparator(datetime.datetime(1, 1, 1))) + NoneComparator(datetime.datetime(1, 1, 1))) self.assertGreater(NoneComparator(datetime.datetime(1, 1, 2)), NoneComparator(datetime.datetime(1, 1, 1))) self.assertEqual(NoneComparator(None), diff --git a/master/buildbot/test/unit/test_process_builder.py b/master/buildbot/test/unit/test_process_builder.py index e3cda5e1b768..9c6122fb1a45 100644 --- a/master/buildbot/test/unit/test_process_builder.py +++ b/master/buildbot/test/unit/test_process_builder.py @@ -169,9 +169,11 @@ def test_maybeStartBuild_failsToStart(self): @defer.inlineCallbacks def do_test_getCollapseRequestsFn(self, builder_param=None, global_param=None, expected=0): - cble = lambda: None - builder_param = builder_param == 'callable' and cble or builder_param - global_param = global_param == 'callable' and cble or global_param + def cble(): + pass + + builder_param = cble if builder_param == 'callable' else builder_param + global_param = cble if global_param == 'callable' else global_param # omit the constructor parameter if None was given if builder_param is None: diff --git a/master/buildbot/test/unit/test_process_buildrequestdistributor.py b/master/buildbot/test/unit/test_process_buildrequestdistributor.py index 9cde6cab14e8..62d0b1883cc5 100644 --- a/master/buildbot/test/unit/test_process_buildrequestdistributor.py +++ b/master/buildbot/test/unit/test_process_buildrequestdistributor.py @@ -298,8 +298,7 @@ def do_test_sortBuilders(self, prioritizeBuilders, oldestRequestTimes, def mklambda(t): # work around variable-binding issues if returnDeferred: return lambda: defer.succeed(t) - else: - return lambda: t + return lambda: t for n, t in iteritems(oldestRequestTimes): if t is not None: @@ -545,7 +544,8 @@ def _canStartBuild(worker, breq): submitted_at=140000), ] yield self.do_test_maybeStartBuildsOnBuilder(rows=rows, - exp_claims=[10, 11], exp_builds=[('test-worker1', [10]), ('test-worker3', [11])]) + exp_claims=[10, 11], exp_builds=[ + ('test-worker1', [10]), ('test-worker3', [11])]) self.assertEqual( workers_attempted, ['test-worker3', 'test-worker2', 'test-worker1']) @@ -560,7 +560,8 @@ def _canStartBuild(worker, breq): ('test-worker3', 11), ('test-worker2', 12)]) - @mock.patch('buildbot.process.buildrequestdistributor.BuildRequestDistributor.BuildChooser', SkipWorkerThatCantGetLock) + @mock.patch('buildbot.process.buildrequestdistributor.BuildRequestDistributor.BuildChooser', + SkipWorkerThatCantGetLock) @defer.inlineCallbacks def test_limited_by_canStartBuild_deferreds(self): """Another variant that: @@ -633,7 +634,8 @@ def _canStartWithWorkerForBuilder(workerforbuilder): submitted_at=135000), ] yield self.do_test_maybeStartBuildsOnBuilder(rows=rows, - exp_claims=[10, 11], exp_builds=[('test-worker3', [10]), ('test-worker2', [11])]) + exp_claims=[10, 11], exp_builds=[ + ('test-worker3', [10]), ('test-worker2', [11])]) self.assertEqual(workers_attempted, ['test-worker3', 'test-worker2']) @@ -649,7 +651,8 @@ def test_unlimited(self): ] yield self.do_test_maybeStartBuildsOnBuilder(rows=rows, exp_claims=[10, 11], - exp_builds=[('test-worker2', [10]), ('test-worker1', [11])]) + exp_builds=[ + ('test-worker2', [10]), ('test-worker1', [11])]) @defer.inlineCallbacks def test_bldr_maybeStartBuild_fails_always(self): @@ -672,7 +675,8 @@ def maybeStartBuild(worker, builds): yield self.do_test_maybeStartBuildsOnBuilder(rows=rows, # reclaimed so none taken! exp_claims=[], - exp_builds=[('test-worker2', [10]), ('test-worker1', [11])]) + exp_builds=[ + ('test-worker2', [10]), ('test-worker1', [11])]) @defer.inlineCallbacks def test_bldr_maybeStartBuild_fails_once(self): diff --git a/master/buildbot/test/unit/test_schedulers_timed_Periodic.py b/master/buildbot/test/unit/test_schedulers_timed_Periodic.py index 33a6eb96ca57..1c744be23658 100644 --- a/master/buildbot/test/unit/test_schedulers_timed_Periodic.py +++ b/master/buildbot/test/unit/test_schedulers_timed_Periodic.py @@ -54,8 +54,7 @@ def addBuildsetForSourceStampsWithDefaults(reason, sourcestamps, d = defer.Deferred() self.clock.callLater(firstBuildDuration, d.callback, None) return d - else: - return defer.succeed(None) + return defer.succeed(None) sched.addBuildsetForSourceStampsWithDefaults = addBuildsetForSourceStampsWithDefaults # handle state locally diff --git a/master/buildbot/test/unit/test_steps_source_darcs.py b/master/buildbot/test/unit/test_steps_source_darcs.py index 2662d8be575a..5b7b906ae258 100644 --- a/master/buildbot/test/unit/test_steps_source_darcs.py +++ b/master/buildbot/test/unit/test_steps_source_darcs.py @@ -61,23 +61,23 @@ def test_mode_full_clobber(self): mode='full', method='clobber')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='.', command=['darcs', 'get', '--verbose', '--lazy', - '--repo-name', 'wkdir', 'http://localhost/darcs']) - + 0, + '--repo-name', 'wkdir', 'http://localhost/darcs']) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -90,29 +90,29 @@ def test_mode_full_copy(self): mode='full', method='copy')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('rmdir', dict(dir='wkdir', logEnviron=True, - timeout=1200)) - + 0, + timeout=1200)) + + 0, Expect('stat', dict(file='source/_darcs', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='source', - command=['darcs', 'pull', '--all', '--verbose']) - + 0, + command=['darcs', 'pull', '--all', '--verbose']) + + 0, Expect('cpdir', {'fromdir': 'source', 'todir': 'build', - 'logEnviron': True, 'timeout': 1200}) - + 0, + 'logEnviron': True, 'timeout': 1200}) + + 0, ExpectShell(workdir='build', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -125,29 +125,29 @@ def test_mode_full_no_method(self): mode='full')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('rmdir', dict(dir='wkdir', logEnviron=True, - timeout=1200)) - + 0, + timeout=1200)) + + 0, Expect('stat', dict(file='source/_darcs', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='source', - command=['darcs', 'pull', '--all', '--verbose']) - + 0, + command=['darcs', 'pull', '--all', '--verbose']) + + 0, Expect('cpdir', {'fromdir': 'source', 'todir': 'build', - 'logEnviron': True, 'timeout': 1200}) - + 0, + 'logEnviron': True, 'timeout': 1200}) + + 0, ExpectShell(workdir='build', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -160,22 +160,22 @@ def test_mode_incremental(self): mode='incremental')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('stat', dict(file='wkdir/_darcs', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'pull', '--all', '--verbose']) - + 0, + command=['darcs', 'pull', '--all', '--verbose']) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -188,36 +188,36 @@ def test_mode_incremental_patched(self): mode='incremental')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, Expect('rmdir', dict(dir='wkdir', logEnviron=True, - timeout=1200)) - + 0, + timeout=1200)) + + 0, Expect('stat', dict(file='source/_darcs', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='source', - command=['darcs', 'pull', '--all', '--verbose']) - + 0, + command=['darcs', 'pull', '--all', '--verbose']) + + 0, Expect('cpdir', {'fromdir': 'source', 'todir': 'build', - 'logEnviron': True, 'timeout': 1200}) - + 0, + 'logEnviron': True, 'timeout': 1200}) + + 0, Expect('stat', dict(file='build/_darcs', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='build', - command=['darcs', 'pull', '--all', '--verbose']) - + 0, + command=['darcs', 'pull', '--all', '--verbose']) + + 0, ExpectShell(workdir='build', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -231,41 +231,41 @@ def test_mode_incremental_patch(self): patch=(1, 'patch')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('stat', dict(file='wkdir/_darcs', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'pull', '--all', '--verbose']) - + 0, + command=['darcs', 'pull', '--all', '--verbose']) + + 0, Expect('downloadFile', dict(blocksize=16384, maxsize=None, reader=ExpectRemoteRef( remotetransfer.StringFileReader), workerdest='.buildbot-diff', workdir='wkdir', - mode=None)) - + 0, + mode=None)) + + 0, Expect('downloadFile', dict(blocksize=16384, maxsize=None, reader=ExpectRemoteRef( remotetransfer.StringFileReader), workerdest='.buildbot-patched', workdir='wkdir', - mode=None)) - + 0, + mode=None)) + + 0, ExpectShell(workdir='wkdir', command=['patch', '-p1', '--remove-empty-files', - '--force', '--forward', '-i', '.buildbot-diff']) - + 0, + '--force', '--forward', '-i', '.buildbot-diff']) + + 0, Expect('rmdir', dict(dir='wkdir/.buildbot-diff', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -278,37 +278,37 @@ def test_mode_full_clobber_retry(self): mode='full', method='clobber', retry=(0, 2))) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='.', command=['darcs', 'get', '--verbose', '--lazy', - '--repo-name', 'wkdir', 'http://localhost/darcs']) - + 1, + '--repo-name', 'wkdir', 'http://localhost/darcs']) + + 1, Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='.', command=['darcs', 'get', '--verbose', '--lazy', - '--repo-name', 'wkdir', 'http://localhost/darcs']) - + 1, + '--repo-name', 'wkdir', 'http://localhost/darcs']) + + 1, Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, ExpectShell(workdir='.', command=['darcs', 'get', '--verbose', '--lazy', - '--repo-name', 'wkdir', 'http://localhost/darcs']) - + 0, + '--repo-name', 'wkdir', 'http://localhost/darcs']) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -322,30 +322,30 @@ def test_mode_full_clobber_revision(self): dict(revision='abcdef01')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, Expect('downloadFile', dict(blocksize=16384, maxsize=None, reader=ExpectRemoteRef( remotetransfer.StringFileReader), workerdest='.darcs-context', workdir='wkdir', - mode=None)) - + 0, + mode=None)) + + 0, ExpectShell(workdir='.', command=['darcs', 'get', '--verbose', '--lazy', '--repo-name', 'wkdir', '--context', - '.darcs-context', 'http://localhost/darcs']) - + 0, + '.darcs-context', 'http://localhost/darcs']) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -360,30 +360,30 @@ def test_mode_full_clobber_revision_worker_2_16(self): worker_version={'*': '2.16'}) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('rmdir', dict(dir='wkdir', - logEnviron=True)) - + 0, + logEnviron=True)) + + 0, Expect('downloadFile', dict(blocksize=16384, maxsize=None, reader=ExpectRemoteRef( remotetransfer.StringFileReader), slavedest='.darcs-context', workdir='wkdir', - mode=None)) - + 0, + mode=None)) + + 0, ExpectShell(workdir='.', command=['darcs', 'get', '--verbose', '--lazy', '--repo-name', 'wkdir', '--context', - '.darcs-context', 'http://localhost/darcs']) - + 0, + '.darcs-context', 'http://localhost/darcs']) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -396,23 +396,23 @@ def test_mode_incremental_no_existing_repo(self): mode='incremental')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + 0, + command=['darcs', '--version']) + + 0, Expect('stat', dict(file='wkdir/.buildbot-patched', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, Expect('stat', dict(file='wkdir/_darcs', - logEnviron=True)) - + 1, + logEnviron=True)) + + 1, ExpectShell(workdir='.', command=['darcs', 'get', '--verbose', '--lazy', - '--repo-name', 'wkdir', 'http://localhost/darcs']) - + 0, + '--repo-name', 'wkdir', 'http://localhost/darcs']) + + 0, ExpectShell(workdir='wkdir', - command=['darcs', 'changes', '--max-count=1']) - + ExpectShell.log('stdio', - stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') - + 0, + command=['darcs', 'changes', '--max-count=1']) + + ExpectShell.log('stdio', + stdout='Tue Aug 20 09:18:41 IST 2013 abc@gmail.com') + + 0, ) self.expectOutcome(result=SUCCESS) self.expectProperty( @@ -425,8 +425,8 @@ def test_worker_connection_lost(self): mode='full', method='clobber')) self.expectCommands( ExpectShell(workdir='wkdir', - command=['darcs', '--version']) - + ('err', error.ConnectionLost()), + command=['darcs', '--version']) + + ('err', error.ConnectionLost()), ) self.expectOutcome(result=RETRY, state_string="update (retry)") return self.runStep() diff --git a/master/buildbot/test/unit/test_util_httpclientservice.py b/master/buildbot/test/unit/test_util_httpclientservice.py index a324928af96f..3e267563faf0 100644 --- a/master/buildbot/test/unit/test_util_httpclientservice.py +++ b/master/buildbot/test/unit/test_util_httpclientservice.py @@ -211,8 +211,7 @@ def decode(x): for a, b in iteritems(x): newArgs[decode(a)] = decode(b) return newArgs - else: - return x + return x args = decode(request.args) content_type = request.getHeader(b'content-type') diff --git a/master/buildbot/test/unit/test_util_lru.py b/master/buildbot/test/unit/test_util_lru.py index fa89d76fd174..ba4316c5ab71 100644 --- a/master/buildbot/test/unit/test_util_lru.py +++ b/master/buildbot/test/unit/test_util_lru.py @@ -116,8 +116,7 @@ def test_simple_lru_expulsion_maxsize_1_null_result(self): def miss_fn(k): if k == 'b': return None - else: - return short(k) + return short(k) self.lru = lru.LRUCache(miss_fn, 1) val = self.lru.get('a') self.check_result(val, short('a'), 0, 1) @@ -367,8 +366,7 @@ def test_simple_lru_expulsion_maxsize_1_null_result(self): def miss_fn(k): if k == 'b': return defer.succeed(None) - else: - return defer.succeed(short(k)) + return defer.succeed(short(k)) self.lru = lru.AsyncLRUCache(miss_fn, 1) d = defer.succeed(None) diff --git a/master/buildbot/test/unit/test_worker_marathon.py b/master/buildbot/test/unit/test_worker_marathon.py index 5224911fe624..7188ddea639e 100644 --- a/master/buildbot/test/unit/test_worker_marathon.py +++ b/master/buildbot/test/unit/test_worker_marathon.py @@ -31,8 +31,7 @@ class FakeBuild(object): def render(self, r): if isinstance(r, str): return "rendered:" + r - else: - return r + return r class FakeBot(object): diff --git a/master/buildbot/test/util/db.py b/master/buildbot/test/util/db.py index 00eaa4edeb88..4c8be0aa936d 100644 --- a/master/buildbot/test/util/db.py +++ b/master/buildbot/test/util/db.py @@ -213,8 +213,7 @@ def setUpRealDatabase(self, table_names=[], basedir='basedir', def tearDownRealDatabase(self): if self.__want_pool: return self.db_pool.do(self.__thd_clean_database) - else: - return defer.succeed(None) + return defer.succeed(None) def insertTestData(self, rows): """Insert test data into the database for use during the test. diff --git a/master/buildbot/test/util/gpo.py b/master/buildbot/test/util/gpo.py index 24d1e2fee1de..b54e69a27421 100644 --- a/master/buildbot/test/util/gpo.py +++ b/master/buildbot/test/util/gpo.py @@ -85,11 +85,9 @@ def cb(res): stdout, stderr, exit = res if errortoo: return defer.succeed(stdout + stderr) - else: - if stderr: - return defer.fail(IOError("got stderr: %r" % (stderr,))) - else: - return defer.succeed(stdout) + if stderr: + return defer.fail(IOError("got stderr: %r" % (stderr,))) + return defer.succeed(stdout) return d def patched_getProcessOutputAndValue(self, bin, args, env=None, diff --git a/master/buildbot/test/util/interfaces.py b/master/buildbot/test/util/interfaces.py index 6b9d5f9cb835..94c8dc10084b 100644 --- a/master/buildbot/test/util/interfaces.py +++ b/master/buildbot/test/util/interfaces.py @@ -68,9 +68,8 @@ def filter_argspec(func): if PY3: return filter( inspect.getfullargspec(remove_decorators(func))) - else: - return filter( - inspect.getargspec(remove_decorators(func))) + return filter( + inspect.getargspec(remove_decorators(func))) def assert_same_argspec(expected, actual): if expected != actual: diff --git a/master/buildbot/util/__init__.py b/master/buildbot/util/__init__.py index a8b4d9715f45..029bb5db2fca 100644 --- a/master/buildbot/util/__init__.py +++ b/master/buildbot/util/__init__.py @@ -97,8 +97,7 @@ def flatten(l, types=(list, )): def now(_reactor=None): if _reactor and hasattr(_reactor, "seconds"): return _reactor.seconds() - else: - return time.time() + return time.time() def formatInterval(eta): @@ -213,8 +212,7 @@ def safeTranslate(s): def encodeString(s, encoding='utf-8'): if isinstance(s, text_type): return s.encode(encoding) - else: - return s + return s def none_or_str(x): @@ -255,7 +253,7 @@ def bytes2NativeString(x, encoding='utf-8', errors='strict'): @param encoding: an optional codec, default: 'utf-8' @return: a string of type C{str} """ - if isinstance(x, bytes) and type("") != type(b""): + if isinstance(x, bytes) and PY3: # On Python 3 and higher, type("") != type(b"") # so we need to decode() to return a native string. return x.decode(encoding, errors) @@ -277,7 +275,7 @@ def unicode2NativeString(x, encoding='utf-8', errors='strict'): @param encoding: an optional codec, default: 'utf-8' @return: a string of type C{str} """ - if isinstance(x, text_type) and type(u"") != type(""): + if isinstance(x, text_type) and not PY3: # On Python 2 and lower, type(u"") != type("") # so we need to encode() to return a native string. return x.encode(encoding, errors) @@ -357,8 +355,7 @@ def human_readable_delta(start, end): if result: return ', '.join(result) - else: - return 'super fast' + return 'super fast' def makeList(input): @@ -366,8 +363,7 @@ def makeList(input): return [input] elif input is None: return [] - else: - return list(input) + return list(input) def in_reactor(f): @@ -422,7 +418,8 @@ def check_functional_environment(config): except KeyError: config.error("\n".join([ "Your environment has incorrect locale settings. This means python cannot handle strings safely.", - "Please check 'LANG', 'LC_CTYPE', 'LC_ALL' and 'LANGUAGE' are either unset or set to a valid locale.", + "Please check 'LANG', 'LC_CTYPE', 'LC_ALL' and 'LANGUAGE'" + "are either unset or set to a valid locale.", ])) @@ -438,8 +435,7 @@ def stripUrlPassword(url): def join_list(maybeList): if isinstance(maybeList, (list, tuple)): return u' '.join(ascii2unicode(s) for s in maybeList) - else: - return ascii2unicode(maybeList) + return ascii2unicode(maybeList) def command_to_string(command): diff --git a/master/buildbot/util/croniter.py b/master/buildbot/util/croniter.py index 1c8674b320b3..6e67cf64c1b7 100644 --- a/master/buildbot/util/croniter.py +++ b/master/buildbot/util/croniter.py @@ -76,7 +76,7 @@ def __init__(self, expr_format, start_time=time()): e_list = expr.split(',') res = [] - while len(e_list) > 0: + while e_list: e = e_list.pop() t = re.sub(r'^\*(/.+)$', r'%d-%d\1' % (self.RANGES[i][0], self.RANGES[i][1]), @@ -92,8 +92,8 @@ def __init__(self, expr_format, start_time=time()): if not any_int_re.search(high): high = self.ALPHACONV[i][high.lower()] - if (not low or not high or int(low) > int(high) - or not only_int_re.search(str(step))): + if (not low or not high or int(low) > int(high) or + not only_int_re.search(str(step))): raise ValueError( "[%s] is not acceptable" % expr_format) @@ -165,7 +165,7 @@ def _calc(self, now, expanded, is_prev): nearest_diff_method = self._get_next_nearest_diff sign = 1 - offset = len(expanded) == 6 and 1 or 60 + offset = 1 if len(expanded) == 6 else 60 dst = now = datetime.fromtimestamp(now + sign * offset) # BUILDBOT: unused 'day' omitted due to pyflakes warning diff --git a/master/buildbot/util/httpclientservice.py b/master/buildbot/util/httpclientservice.py index 849db873ecd7..91a2b61da94a 100644 --- a/master/buildbot/util/httpclientservice.py +++ b/master/buildbot/util/httpclientservice.py @@ -134,8 +134,7 @@ def startService(self): def stopService(self): if self._session: return self._session.close() - else: - return self._pool.closeCachedConnections() + return self._pool.closeCachedConnections() def _prepareRequest(self, ep, kwargs): assert ep == "" or ep.startswith("/"), "ep should start with /: " + ep diff --git a/master/buildbot/util/identifiers.py b/master/buildbot/util/identifiers.py index 687be8c2705a..73da67f5858f 100644 --- a/master/buildbot/util/identifiers.py +++ b/master/buildbot/util/identifiers.py @@ -28,12 +28,12 @@ trailing_digits_re = re.compile('_([0-9]+)$') -def isIdentifier(maxLength, object): - if not isinstance(object, text_type): +def isIdentifier(maxLength, obj): + if not isinstance(obj, text_type): return False - elif not ident_re.match(object): + elif not ident_re.match(obj): return False - elif not 0 < len(object) <= maxLength: + elif not obj or len(obj) > maxLength: return False return True diff --git a/master/buildbot/util/poll.py b/master/buildbot/util/poll.py index a2e382cea350..f1db76080f36 100644 --- a/master/buildbot/util/poll.py +++ b/master/buildbot/util/poll.py @@ -86,8 +86,7 @@ def stop(self): d = defer.Deferred() self.stopDeferreds.append(d) return d - else: - return defer.succeed(None) + return defer.succeed(None) class _Descriptor(object): diff --git a/master/buildbot/util/service.py b/master/buildbot/util/service.py index 97ce65c92bb0..73e3e3e7e2cf 100644 --- a/master/buildbot/util/service.py +++ b/master/buildbot/util/service.py @@ -108,8 +108,7 @@ def addService(self, service): # It may be too late for that, but we will do our best service.privilegedStartService() return service.startService() - else: - return defer.succeed(None) + return defer.succeed(None) class MasterService(AsyncMultiService): diff --git a/master/buildbot/wamp/connector.py b/master/buildbot/wamp/connector.py index 92e856959cc4..9ec4c25aed6e 100644 --- a/master/buildbot/wamp/connector.py +++ b/master/buildbot/wamp/connector.py @@ -75,10 +75,9 @@ def onUserError(self, e, msg): def make(config): if config: return MasterService(config) - else: - # if no config given, return a description of this WAMPlet .. - return {'label': 'Buildbot master wamplet', - 'description': 'This contains all the wamp methods provided by a buildbot master'} + # if no config given, return a description of this WAMPlet .. + return {'label': 'Buildbot master wamplet', + 'description': 'This contains all the wamp methods provided by a buildbot master'} class WampConnector(service.ReconfigurableServiceMixin, service.AsyncMultiService): diff --git a/master/buildbot/worker/base.py b/master/buildbot/worker/base.py index d0fac6f4130d..09d2c78b958f 100644 --- a/master/buildbot/worker/base.py +++ b/master/buildbot/worker/base.py @@ -333,8 +333,8 @@ def updateWorker(self): accepted the new builders and/or released the old ones.""" if self.conn: return self.sendBuilderList() - else: - return defer.succeed(None) + # else: + return defer.succeed(None) @defer.inlineCallbacks def attached(self, conn): diff --git a/master/buildbot/worker/ec2.py b/master/buildbot/worker/ec2.py index 00e020cac689..84097a40cd6e 100644 --- a/master/buildbot/worker/ec2.py +++ b/master/buildbot/worker/ec2.py @@ -384,8 +384,7 @@ def start_instance(self, build): raise ValueError('instance active') if self.spot_instance: return threads.deferToThread(self._request_spot_instance) - else: - return threads.deferToThread(self._start_instance) + return threads.deferToThread(self._start_instance) def _remove_none_opts(self, *args, **opts): if args: @@ -413,7 +412,7 @@ def _start_instance(self): self.instance = reservations[0] instance_id, start_time = self._wait_for_instance() if None not in [instance_id, image.id, start_time]: - if len(self.tags) > 0: + if self.tags: self.instance.create_tags(Tags=[{"Key": k, "Value": v} for k, v in self.tags.items()]) return [instance_id, image.id, start_time] @@ -556,7 +555,7 @@ def _wait_for_instance(self): self.elastic_ip.associate(InstanceId=self.instance.id) start_time = '%02d:%02d:%02d' % ( minutes // 60, minutes % 60, seconds) - if len(self.volumes) > 0: + if self.volumes: self._attach_volumes() return self.instance.id, start_time else: diff --git a/master/buildbot/www/hooks/base.py b/master/buildbot/www/hooks/base.py index 378e67da8130..dfc4c747e6ca 100644 --- a/master/buildbot/www/hooks/base.py +++ b/master/buildbot/www/hooks/base.py @@ -40,8 +40,7 @@ def firstOrNothing(value): """ if (isinstance(value, type([]))): return value[0] - else: - return value + return value args = request.args # first, convert files, links and properties diff --git a/master/buildbot/www/ldapuserinfo.py b/master/buildbot/www/ldapuserinfo.py index 5856d85fc194..5bc0640bad76 100644 --- a/master/buildbot/www/ldapuserinfo.py +++ b/master/buildbot/www/ldapuserinfo.py @@ -94,8 +94,8 @@ def thd(): pattern = self.accountPattern % dict(username=username) res = self.search(c, self.accountBase, pattern, attributes=[ - self.accountEmail, self.accountFullName] - + self.accountExtraFields) + self.accountEmail, self.accountFullName] + + self.accountExtraFields) if len(res) != 1: raise KeyError( "ldap search \"%s\" returned %d results" % (pattern, len(res))) @@ -143,10 +143,10 @@ def thd(): pattern = self.avatarPattern % dict(email=user_email) res = self.search(c, self.accountBase, pattern, attributes=[self.avatarData]) - if len(res) == 0: + if not res: return None ldap_infos = res[0]['raw_attributes'] - if self.avatarData in ldap_infos and len(ldap_infos[self.avatarData]) > 0: + if self.avatarData in ldap_infos and ldap_infos[self.avatarData]: data = ldap_infos[self.avatarData][0] return self.findAvatarMime(data) return None diff --git a/requirements-ci.txt b/requirements-ci.txt index b4958f34f872..b1712b418f5e 100644 --- a/requirements-ci.txt +++ b/requirements-ci.txt @@ -1,7 +1,7 @@ alabaster==0.7.10 appdirs==1.4.3 asn1crypto==0.22.0 -astroid==1.4.9 +astroid==1.5.2 attrs==17.1.0 autobahn==17.5.1 Automat==0.6.0 diff --git a/worker/buildbot_worker/__init__.py b/worker/buildbot_worker/__init__.py index 3b9f6fcdf289..8cff13c60907 100644 --- a/worker/buildbot_worker/__init__.py +++ b/worker/buildbot_worker/__init__.py @@ -64,9 +64,9 @@ def getVersion(init_file): if isinstance(version, str): # Python 2 return version - else: - # Python 3 - return version.decode("utf-8") + # else: + # Python 3 + return version.decode("utf-8") except OSError: pass diff --git a/worker/buildbot_worker/commands/fs.py b/worker/buildbot_worker/commands/fs.py index dc9b8a007ac4..3f2beff37195 100644 --- a/worker/buildbot_worker/commands/fs.py +++ b/worker/buildbot_worker/commands/fs.py @@ -71,7 +71,7 @@ def start(self): self.maxTime = args.get('maxTime', None) self.rc = 0 if isinstance(dirnames, list): - assert len(dirnames) != 0 + assert dirnames for dirname in dirnames: res = yield self.removeSingleDir(dirname) # Even if single removal of single file/dir consider it as diff --git a/worker/buildbot_worker/commands/transfer.py b/worker/buildbot_worker/commands/transfer.py index 81e17d6e8b85..d2f252e34f1a 100644 --- a/worker/buildbot_worker/commands/transfer.py +++ b/worker/buildbot_worker/commands/transfer.py @@ -176,7 +176,7 @@ def _writeBlock(self): if self.debug: log.msg('WorkerFileUploadCommand._writeBlock(): ' + 'allowed=%d readlen=%d' % (length, len(data))) - if len(data) == 0: + if not data: log.msg("EOF: callRemote(close)") return True @@ -223,7 +223,8 @@ def start(self): else: mode = 'w' # TODO: Use 'with' when depending on Python 2.7 - # Not possible with older versions: exceptions.AttributeError: 'TarFile' object has no attribute '__exit__' + # Not possible with older versions: + # exceptions.AttributeError: 'TarFile' object has no attribute '__exit__' archive = tarfile.open(mode=mode, fileobj=self.fp) archive.add(self.path, '') archive.close() @@ -373,7 +374,7 @@ def _writeData(self, data): if self.debug: log.msg('WorkerFileDownloadCommand._readBlock(): readlen=%d' % len(data)) - if len(data) == 0: + if not data: return True if self.bytes_remaining is not None: diff --git a/worker/buildbot_worker/monkeypatches/bug4881.py b/worker/buildbot_worker/monkeypatches/bug4881.py index 2f3d5b47afdd..555e1b4fba48 100644 --- a/worker/buildbot_worker/monkeypatches/bug4881.py +++ b/worker/buildbot_worker/monkeypatches/bug4881.py @@ -140,8 +140,7 @@ def _getImplementation(self): self.listdir("/dev/fd") if self._checkDevFDSanity(): # FreeBSD support :-) return self._devFDImplementation - else: - return self._fallbackFDImplementation + return self._fallbackFDImplementation except Exception: # changed in Buildbot to avoid bare 'except' try: self.listdir("/proc/%d/fd" % (self.getpid(),)) diff --git a/worker/buildbot_worker/runprocess.py b/worker/buildbot_worker/runprocess.py index 4626835d2340..46585d8aae98 100644 --- a/worker/buildbot_worker/runprocess.py +++ b/worker/buildbot_worker/runprocess.py @@ -82,15 +82,15 @@ def shell_quote(cmd_list, unicode_encoding='utf-8'): if runtime.platformType == 'win32': return win32_batch_quote(cmd_list, unicode_encoding) - else: - import pipes - def quote(e): - if not e: - return '""' - e = bytes2NativeString(e, unicode_encoding) - return pipes.quote(e) - return " ".join([quote(e) for e in cmd_list]) + import pipes # only available on unix + + def quote(e): + if not e: + return '""' + e = bytes2NativeString(e, unicode_encoding) + return pipes.quote(e) + return " ".join([quote(e) for e in cmd_list]) class LogFileWatcher(object): @@ -211,14 +211,14 @@ def outReceived(self, data): if self.debug: log.msg("RunProcessPP.outReceived") data = bytes2NativeString( - data, self.command.builder.unicode_encoding) + data, self.command.builder.unicode_encoding) self.command.addStdout(data) def errReceived(self, data): if self.debug: log.msg("RunProcessPP.errReceived") data = bytes2NativeString( - data, self.command.builder.unicode_encoding) + data, self.command.builder.unicode_encoding) self.command.addStderr(data) def processEnded(self, status_object): @@ -481,9 +481,9 @@ def _startCommand(self): # So, for .exe's that we have absolute paths to, we can call directly # Otherwise, we should run under COMSPEC (usually cmd.exe) to # handle path searching, etc. - if runtime.platformType == 'win32' and not \ - (bytes2NativeString(self.command[0]).lower().endswith(".exe") - and os.path.isabs(self.command[0])): + if (runtime.platformType == 'win32' and + not (bytes2NativeString(self.command[0]).lower().endswith(".exe") and + os.path.isabs(self.command[0]))): # allow %COMSPEC% to have args argv = os.environ['COMSPEC'].split() if '/c' not in argv: @@ -596,9 +596,8 @@ def _spawnProcess(self, processProtocol, executable, args=(), env={}, if self.using_comspec: return self._spawnAsBatch(processProtocol, executable, args, env, path, usePTY=usePTY) - else: - return reactor.spawnProcess(processProtocol, executable, args, env, - path, usePTY=usePTY) + return reactor.spawnProcess(processProtocol, executable, args, env, + path, usePTY=usePTY) def _spawnAsBatch(self, processProtocol, executable, args, env, path, usePTY): @@ -700,7 +699,7 @@ def _sendBuffers(self): # Chunkify the log data to make sure we're not sending more than # CHUNK_LIMIT at a time for chunk in self._chunkForSend(data): - if len(chunk) == 0: + if not chunk: continue logdata.append(chunk) msg_size += len(chunk) @@ -858,7 +857,7 @@ def sendSig(self, interruptSignal): log.msg("trying to kill process group %d" % (self.process.pgid,)) try: - os.kill(-self.process.pgid, sig) + os.killpg(self.process.pgid, sig) log.msg(" signal %s sent successfully" % sig) self.process.pgid = None hit = 1 @@ -942,7 +941,8 @@ def doBackupTimeout(self): self.failed(RuntimeError(signalName + " failed to kill process")) def _cancelTimers(self): - for timerName in ('ioTimeoutTimer', 'killTimer', 'maxTimeoutTimer', 'sendBuffersTimer', 'sigtermTimer'): + for timerName in ('ioTimeoutTimer', 'killTimer', 'maxTimeoutTimer', + 'sendBuffersTimer', 'sigtermTimer'): timer = getattr(self, timerName, None) if timer: timer.cancel() diff --git a/worker/buildbot_worker/scripts/runner.py b/worker/buildbot_worker/scripts/runner.py index 0e3594b24ae6..2bfd17c69074 100644 --- a/worker/buildbot_worker/scripts/runner.py +++ b/worker/buildbot_worker/scripts/runner.py @@ -58,7 +58,7 @@ class MakerBase(usage.Options): opt_h = usage.Options.opt_help def parseArgs(self, *args): - if len(args) > 0: + if args: self['basedir'] = args[0] else: # Use the current directory if no basedir was specified. diff --git a/worker/buildbot_worker/test/unit/test_commands_transfer.py b/worker/buildbot_worker/test/unit/test_commands_transfer.py index b6c6db0746d7..8e997346bc42 100644 --- a/worker/buildbot_worker/test/unit/test_commands_transfer.py +++ b/worker/buildbot_worker/test/unit/test_commands_transfer.py @@ -86,13 +86,12 @@ def remote_read(self, length): if not self.data: return '' - slice, self.data = self.data[:length], self.data[length:] + _slice, self.data = self.data[:length], self.data[length:] if self.delay_read: d = defer.Deferred() - reactor.callLater(0.01, d.callback, slice) + reactor.callLater(0.01, d.callback, _slice) return d - else: - return slice + return _slice def remote_unpack(self): self.add_update('unpack') diff --git a/worker/buildbot_worker/util/__init__.py b/worker/buildbot_worker/util/__init__.py index 2abda159af20..aa716a89328c 100644 --- a/worker/buildbot_worker/util/__init__.py +++ b/worker/buildbot_worker/util/__init__.py @@ -46,8 +46,7 @@ def remove_userpassword(url): def now(_reactor=None): if _reactor and hasattr(_reactor, "seconds"): return _reactor.seconds() - else: - return time.time() + return time.time() class Obfuscated(object): @@ -73,8 +72,7 @@ def __eq__(self, other): def to_text(s): if isinstance(s, string_types): return s - else: - return str(s) + return str(s) @staticmethod def get_real(command):