Skip to content

Commit bed6f2e

Browse files
committed
Style by pre-commit run
Note: the changes were selected manually since there were many that break the style that we want :(
1 parent 1dd850a commit bed6f2e

File tree

3 files changed

+239
-142
lines changed

3 files changed

+239
-142
lines changed

readthedocs/doc_builder/environments.py

Lines changed: 96 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,45 @@
22

33
"""Documentation Builder Environments."""
44

5-
from __future__ import absolute_import
6-
from builtins import str
7-
from builtins import object
5+
from __future__ import (
6+
absolute_import, division, print_function, unicode_literals)
7+
8+
import logging
89
import os
910
import re
10-
import sys
11-
import logging
11+
import socket
1212
import subprocess
13+
import sys
1314
import traceback
14-
import socket
1515
from datetime import datetime
1616

17+
import six
18+
from builtins import object, str
1719
from django.conf import settings
1820
from django.utils.translation import ugettext_lazy as _
1921
from docker import APIClient
20-
from docker.errors import APIError as DockerAPIError, DockerException
22+
from docker.errors import APIError as DockerAPIError
23+
from docker.errors import DockerException
24+
from requests.exceptions import ConnectionError
2125
from slumber.exceptions import HttpClientError
2226

2327
from readthedocs.builds.constants import BUILD_STATE_FINISHED
2428
from readthedocs.builds.models import BuildCommandResultMixin
2529
from readthedocs.core.utils import slugify
2630
from readthedocs.projects.constants import LOG_TEMPLATE
2731
from readthedocs.restapi.client import api as api_v2
28-
from requests.exceptions import ConnectionError
2932

30-
from .exceptions import (BuildEnvironmentException, BuildEnvironmentError,
31-
BuildEnvironmentWarning, BuildEnvironmentCreationFailed, VersionLockedError, ProjectBuildsSkippedError, YAMLParseError, BuildTimeoutError)
32-
from .constants import (DOCKER_SOCKET, DOCKER_VERSION, DOCKER_IMAGE,
33-
DOCKER_LIMITS, DOCKER_TIMEOUT_EXIT_CODE,
34-
DOCKER_OOM_EXIT_CODE, SPHINX_TEMPLATE_DIR,
35-
MKDOCS_TEMPLATE_DIR, DOCKER_HOSTNAME_MAX_LEN)
36-
import six
33+
from .constants import (
34+
DOCKER_HOSTNAME_MAX_LEN, DOCKER_IMAGE, DOCKER_LIMITS, DOCKER_OOM_EXIT_CODE,
35+
DOCKER_SOCKET, DOCKER_TIMEOUT_EXIT_CODE, DOCKER_VERSION,
36+
MKDOCS_TEMPLATE_DIR, SPHINX_TEMPLATE_DIR)
37+
from .exceptions import (
38+
BuildEnvironmentCreationFailed, BuildEnvironmentError,
39+
BuildEnvironmentException, BuildEnvironmentWarning, BuildTimeoutError,
40+
ProjectBuildsSkippedError, VersionLockedError, YAMLParseError)
3741

3842
log = logging.getLogger(__name__)
3943

40-
4144
__all__ = (
4245
'api_v2',
4346
'BuildCommand',
@@ -220,8 +223,12 @@ def run(self):
220223
:type cmd_input: str
221224
:param combine_output: combine STDERR into STDOUT
222225
"""
223-
log.info("Running in container %s: '%s' [%s]",
224-
self.build_env.container_id, self.get_command(), self.cwd)
226+
log.info(
227+
"Running in container %s: '%s' [%s]",
228+
self.build_env.container_id,
229+
self.get_command(),
230+
self.cwd,
231+
)
225232

226233
self.start_time = datetime.utcnow()
227234
client = self.build_env.get_client()
@@ -230,7 +237,7 @@ def run(self):
230237
container=self.build_env.container_id,
231238
cmd=self.get_wrapped_command(),
232239
stdout=True,
233-
stderr=True
240+
stderr=True,
234241
)
235242

236243
output = client.exec_start(exec_id=exec_cmd['Id'], stream=False)
@@ -439,10 +446,13 @@ def __enter__(self):
439446
def __exit__(self, exc_type, exc_value, tb):
440447
ret = self.handle_exception(exc_type, exc_value, tb)
441448
self.update_build(BUILD_STATE_FINISHED)
442-
log.info(LOG_TEMPLATE
443-
.format(project=self.project.slug,
444-
version=self.version.slug,
445-
msg='Build finished'))
449+
log.info(
450+
LOG_TEMPLATE.format(
451+
project=self.project.slug,
452+
version=self.version.slug,
453+
msg='Build finished',
454+
)
455+
)
446456
return ret
447457

448458
def handle_exception(self, exc_type, exc_value, _):
@@ -479,7 +489,8 @@ def handle_exception(self, exc_type, exc_value, _):
479489
'project': self.project.slug,
480490
'version': self.version.slug,
481491
},
482-
})
492+
},
493+
)
483494
self.failure = exc_value
484495
return True
485496

@@ -488,11 +499,13 @@ def record_command(self, command):
488499

489500
def _log_warning(self, msg):
490501
# :'(
491-
log.warning(LOG_TEMPLATE.format(
492-
project=self.project.slug,
493-
version=self.version.slug,
494-
msg=msg,
495-
))
502+
log.warning(
503+
LOG_TEMPLATE.format(
504+
project=self.project.slug,
505+
version=self.version.slug,
506+
msg=msg,
507+
)
508+
)
496509

497510
def run(self, *cmd, **kwargs):
498511
kwargs.update({
@@ -550,15 +563,18 @@ def update_build(self, state=None):
550563

551564
# TODO drop exit_code and provide a more meaningful UX for error
552565
# reporting
553-
if self.failure and isinstance(self.failure,
554-
BuildEnvironmentException):
566+
if self.failure and isinstance(
567+
self.failure,
568+
BuildEnvironmentException,
569+
):
555570
self.build['exit_code'] = self.failure.status_code
556571
elif self.commands:
557-
self.build['exit_code'] = max([cmd.exit_code
558-
for cmd in self.commands])
572+
self.build['exit_code'] = max([
573+
cmd.exit_code for cmd in self.commands
574+
])
559575

560-
self.build['setup'] = self.build['setup_error'] = ""
561-
self.build['output'] = self.build['error'] = ""
576+
self.build['setup'] = self.build['setup_error'] = ''
577+
self.build['output'] = self.build['error'] = ''
562578

563579
if self.start_time:
564580
build_length = (datetime.utcnow() - self.start_time)
@@ -567,9 +583,13 @@ def update_build(self, state=None):
567583
if self.failure is not None:
568584
# Surface a generic error if the class is not a
569585
# BuildEnvironmentError
570-
if not isinstance(self.failure,
571-
(BuildEnvironmentException,
572-
BuildEnvironmentWarning)):
586+
if not isinstance(
587+
self.failure,
588+
(
589+
BuildEnvironmentException,
590+
BuildEnvironmentWarning,
591+
),
592+
):
573593
log.error(
574594
'Build failed with unhandled exception: %s',
575595
str(self.failure),
@@ -585,7 +605,7 @@ def update_build(self, state=None):
585605
self.failure = BuildEnvironmentError(
586606
BuildEnvironmentError.GENERIC_WITH_BUILD_ID.format(
587607
build_id=self.build['id'],
588-
)
608+
),
589609
)
590610
self.build['error'] = str(self.failure)
591611

@@ -608,11 +628,11 @@ def update_build(self, state=None):
608628
api_v2.build(self.build['id']).put(self.build)
609629
except HttpClientError as e:
610630
log.exception(
611-
"Unable to update build: id=%d",
631+
'Unable to update build: id=%d',
612632
self.build['id'],
613633
)
614634
except Exception:
615-
log.exception("Unknown build exception")
635+
log.exception('Unknown build exception')
616636

617637

618638
class LocalBuildEnvironment(BuildEnvironment):
@@ -653,7 +673,7 @@ def __init__(self, *args, **kwargs):
653673
build=self.build.get('id'),
654674
project_id=self.project.pk,
655675
project_name=self.project.slug,
656-
)[:DOCKER_HOSTNAME_MAX_LEN]
676+
)[:DOCKER_HOSTNAME_MAX_LEN],
657677
)
658678
if self.config and self.config.build_image:
659679
self.container_image = self.config.build_image
@@ -675,18 +695,25 @@ def __enter__(self):
675695
if state is not None:
676696
if state.get('Running') is True:
677697
exc = BuildEnvironmentError(
678-
_('A build environment is currently '
679-
'running for this version'))
698+
_(
699+
'A build environment is currently '
700+
'running for this version',
701+
),
702+
)
680703
self.failure = exc
681704
self.build['state'] = BUILD_STATE_FINISHED
682705
raise exc
683706
else:
684-
log.warning(LOG_TEMPLATE
685-
.format(
686-
project=self.project.slug,
687-
version=self.version.slug,
688-
msg=("Removing stale container {0}"
689-
.format(self.container_id))))
707+
log.warning(
708+
LOG_TEMPLATE.format(
709+
project=self.project.slug,
710+
version=self.version.slug,
711+
msg=(
712+
'Removing stale container {0}'
713+
.format(self.container_id)
714+
),
715+
)
716+
)
690717
client = self.get_client()
691718
client.remove_container(self.container_id)
692719
except (DockerAPIError, ConnectionError):
@@ -731,8 +758,7 @@ def __exit__(self, exc_type, exc_value, tb):
731758
# request. These errors should not surface to the user.
732759
except (DockerAPIError, ConnectionError):
733760
log.exception(
734-
LOG_TEMPLATE
735-
.format(
761+
LOG_TEMPLATE.format(
736762
project=self.project.slug,
737763
version=self.version.slug,
738764
msg="Couldn't remove container",
@@ -772,7 +798,7 @@ def get_client(self):
772798
raise BuildEnvironmentError(
773799
BuildEnvironmentError.GENERIC_WITH_BUILD_ID.format(
774800
build_id=self.build['id'],
775-
)
801+
),
776802
)
777803

778804
def get_container_host_config(self):
@@ -851,14 +877,18 @@ def update_build_from_container_state(self):
851877
if state is not None and state.get('Running') is False:
852878
if state.get('ExitCode') == DOCKER_TIMEOUT_EXIT_CODE:
853879
self.failure = BuildEnvironmentError(
854-
_('Build exited due to time out'))
880+
_('Build exited due to time out'),
881+
)
855882
elif state.get('OOMKilled', False):
856883
self.failure = BuildEnvironmentError(
857-
_('Build exited due to excessive memory consumption'))
884+
_('Build exited due to excessive memory consumption'),
885+
)
858886
elif state.get('Error'):
859-
self.failure = BuildEnvironmentError(
860-
(_('Build exited due to unknown error: {0}')
861-
.format(state.get('Error'))))
887+
self.failure = BuildEnvironmentError((
888+
_('Build exited due to unknown error: {0}')
889+
.format(state.get('Error'))
890+
),
891+
)
862892

863893
def create_container(self):
864894
"""Create docker container."""
@@ -870,9 +900,12 @@ def create_container(self):
870900
)
871901
self.container = client.create_container(
872902
image=self.container_image,
873-
command=('/bin/sh -c "sleep {time}; exit {exit}"'
874-
.format(time=self.container_time_limit,
875-
exit=DOCKER_TIMEOUT_EXIT_CODE)),
903+
command=(
904+
'/bin/sh -c "sleep {time}; exit {exit}"'.format(
905+
time=self.container_time_limit,
906+
exit=DOCKER_TIMEOUT_EXIT_CODE,
907+
)
908+
),
876909
name=self.container_id,
877910
hostname=self.container_id,
878911
host_config=self.get_container_host_config(),
@@ -897,12 +930,11 @@ def create_container(self):
897930
raise BuildEnvironmentError(
898931
BuildEnvironmentError.GENERIC_WITH_BUILD_ID.format(
899932
build_id=self.build['id'],
900-
)
933+
),
901934
)
902935
except DockerAPIError as e:
903936
log.exception(
904-
LOG_TEMPLATE
905-
.format(
937+
LOG_TEMPLATE.format(
906938
project=self.project.slug,
907939
version=self.version.slug,
908940
msg=e.explanation,

readthedocs/doc_builder/exceptions.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
# -*- coding: utf-8 -*-
12
"""Exceptions raised when building documentation."""
23

4+
from __future__ import division, print_function, unicode_literals
5+
36
from django.utils.translation import ugettext_noop
47

58

@@ -19,30 +22,24 @@ def get_default_message(self):
1922
class BuildEnvironmentError(BuildEnvironmentException):
2023

2124
GENERIC_WITH_BUILD_ID = ugettext_noop(
22-
"There was a problem with Read the Docs while building your documentation. "
23-
"Please report this to us with your build id ({build_id})."
25+
'There was a problem with Read the Docs while building your documentation. '
26+
'Please report this to us with your build id ({build_id}).',
2427
)
2528

2629

2730
class BuildEnvironmentCreationFailed(BuildEnvironmentError):
2831

29-
message = ugettext_noop(
30-
"Build environment creation failed"
31-
)
32+
message = ugettext_noop('Build environment creation failed')
3233

3334

3435
class VersionLockedError(BuildEnvironmentError):
3536

36-
message = ugettext_noop(
37-
'Version locked, retrying in 5 minutes.',
38-
)
37+
message = ugettext_noop('Version locked, retrying in 5 minutes.')
3938

4039

4140
class ProjectBuildsSkippedError(BuildEnvironmentError):
4241

43-
message = ugettext_noop(
44-
'Builds for this project are temporarily disabled',
45-
)
42+
message = ugettext_noop('Builds for this project are temporarily disabled')
4643

4744

4845
class YAMLParseError(BuildEnvironmentError):
@@ -54,9 +51,7 @@ class YAMLParseError(BuildEnvironmentError):
5451

5552
class BuildTimeoutError(BuildEnvironmentError):
5653

57-
message = ugettext_noop(
58-
'Build exited due to time out',
59-
)
54+
message = ugettext_noop('Build exited due to time out')
6055

6156

6257
class BuildEnvironmentWarning(BuildEnvironmentException):

0 commit comments

Comments
 (0)