Skip to content

Commit d2599ba

Browse files
committed
Merge linting branches into py3 work
Conflicts: readthedocs/profiles/views.py readthedocs/restapi/client.py readthedocs/restapi/permissions.py readthedocs/restapi/serializers.py readthedocs/restapi/signals.py readthedocs/restapi/urls.py readthedocs/restapi/utils.py readthedocs/restapi/views/core_views.py readthedocs/restapi/views/footer_views.py readthedocs/restapi/views/integrations.py readthedocs/restapi/views/model_views.py readthedocs/restapi/views/search_views.py readthedocs/restapi/views/task_views.py requirements/lint.txt
2 parents 027f734 + 0ab73a3 commit d2599ba

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+262
-232
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
*.db
22
*.egg-info
3+
*.log
34
*.pyc
45
*.swp
56
.DS_Store

prospector-more.yml

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,39 @@
11
inherits: prospector
22

3-
strictness: medium
3+
strictness: high
44

55
ignore-paths:
6-
- restapi/
6+
- constants.py
7+
- urls.py
8+
- wsgi.py
9+
- acl
10+
- api
11+
- betterversion
12+
- bookmarks
13+
- builds
14+
- cdn
15+
- comments
16+
- core
17+
- djangome
18+
- doc_builder
19+
- donate
20+
- gold
21+
- integrations
22+
- locale
23+
- notifications
24+
- oauth
25+
- payments
26+
- privacy
27+
- profiles
28+
- projects
29+
- redirects
30+
- restapi
31+
- rtd_tests
32+
- search
33+
- settings
34+
- tastyapi
35+
- templates
36+
- vcs_support
737

838
pylint:
939
options:

readthedocs/api/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def is_authenticated(self, request, **kwargs):
162162

163163

164164
class EnhancedModelResource(ModelResource):
165-
def obj_get_list(self, request=None, *_, **kwargs):
165+
def obj_get_list(self, request=None, *_, **kwargs): # pylint: disable=arguments-differ
166166
"""
167167
A ORM-specific implementation of ``obj_get_list``.
168168

readthedocs/bookmarks/views.py

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
class BookmarkExistsView(View):
2626

2727
@method_decorator(csrf_exempt)
28-
def dispatch(self, *args, **kwargs):
29-
return super(BookmarkExistsView, self).dispatch(*args, **kwargs)
28+
def dispatch(self, request, *args, **kwargs):
29+
return super(BookmarkExistsView, self).dispatch(request, *args, **kwargs)
3030

3131
def get(self, request):
3232
return HttpResponse(
@@ -81,8 +81,8 @@ class BookmarkListView(ListView):
8181
model = Bookmark
8282

8383
@method_decorator(login_required)
84-
def dispatch(self, *args, **kwargs):
85-
return super(BookmarkListView, self).dispatch(*args, **kwargs)
84+
def dispatch(self, request, *args, **kwargs):
85+
return super(BookmarkListView, self).dispatch(request, *args, **kwargs)
8686

8787
def get_queryset(self):
8888
return Bookmark.objects.filter(user=self.request.user)
@@ -94,8 +94,8 @@ class BookmarkAddView(View):
9494

9595
@method_decorator(login_required)
9696
@method_decorator(csrf_exempt)
97-
def dispatch(self, *args, **kwargs):
98-
return super(BookmarkAddView, self).dispatch(*args, **kwargs)
97+
def dispatch(self, request, *args, **kwargs):
98+
return super(BookmarkAddView, self).dispatch(request, *args, **kwargs)
9999

100100
def get(self, request):
101101
return HttpResponse(
@@ -157,8 +157,8 @@ class BookmarkRemoveView(View):
157157

158158
@method_decorator(login_required)
159159
@method_decorator(csrf_exempt)
160-
def dispatch(self, *args, **kwargs):
161-
return super(BookmarkRemoveView, self).dispatch(*args, **kwargs)
160+
def dispatch(self, request, *args, **kwargs):
161+
return super(BookmarkRemoveView, self).dispatch(request, *args, **kwargs)
162162

163163
def get(self, request, *args, **kwargs):
164164
return render_to_response(
@@ -176,30 +176,29 @@ def post(self, request, *args, **kwargs):
176176
bookmark = get_object_or_404(Bookmark, pk=kwargs['bookmark_pk'])
177177
bookmark.delete()
178178
return HttpResponseRedirect(reverse('bookmark_list'))
179-
else:
180-
try:
181-
post_json = json.loads(request.body)
182-
project = Project.objects.get(slug=post_json['project'])
183-
version = project.versions.get(slug=post_json['version'])
184-
url = post_json['url']
185-
page = post_json['page']
186-
except KeyError:
187-
return HttpResponseBadRequest(
188-
json.dumps({'error': "Invalid parameters"})
189-
)
190-
191-
bookmark = get_object_or_404(
192-
Bookmark,
193-
user=request.user,
194-
url=url,
195-
project=project,
196-
version=version,
197-
page=page
179+
try:
180+
post_json = json.loads(request.body)
181+
project = Project.objects.get(slug=post_json['project'])
182+
version = project.versions.get(slug=post_json['version'])
183+
url = post_json['url']
184+
page = post_json['page']
185+
except KeyError:
186+
return HttpResponseBadRequest(
187+
json.dumps({'error': "Invalid parameters"})
198188
)
199-
bookmark.delete()
200189

201-
return HttpResponse(
202-
json.dumps({'removed': True}),
203-
status=200,
204-
content_type="application/json"
205-
)
190+
bookmark = get_object_or_404(
191+
Bookmark,
192+
user=request.user,
193+
url=url,
194+
project=project,
195+
version=version,
196+
page=page
197+
)
198+
bookmark.delete()
199+
200+
return HttpResponse(
201+
json.dumps({'removed': True}),
202+
status=200,
203+
content_type="application/json"
204+
)

readthedocs/builds/forms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ class Meta(object):
3333
model = Version
3434
fields = ['active', 'privacy_level', 'tags']
3535

36-
def save(self, *args, **kwargs):
37-
obj = super(VersionForm, self).save(*args, **kwargs)
36+
def save(self, commit=True):
37+
obj = super(VersionForm, self).save(commit=commit)
3838
if obj.active and not obj.built and not obj.uploaded:
3939
trigger_build(project=obj.project, version=obj)
4040
return obj

readthedocs/builds/models.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ def commit_name(self):
110110
if self.slug == LATEST:
111111
if self.project.default_branch:
112112
return self.project.default_branch
113-
else:
114-
return self.project.vcs_repo().fallback_branch
113+
return self.project.vcs_repo().fallback_branch
115114

116115
if self.slug == STABLE:
117116
if self.type == BRANCH:
@@ -148,7 +147,7 @@ def get_absolute_url(self):
148147
private = self.privacy_level == PRIVATE
149148
return self.project.get_docs_url(version_slug=self.slug, private=private)
150149

151-
def save(self, *args, **kwargs):
150+
def save(self, *args, **kwargs): # pylint: disable=arguments-differ
152151
"""Add permissions to the Version for all owners on save."""
153152
from readthedocs.projects import tasks
154153
obj = super(Version, self).save(*args, **kwargs)
@@ -161,7 +160,7 @@ def save(self, *args, **kwargs):
161160
broadcast(type='app', task=tasks.symlink_project, args=[self.project.pk])
162161
return obj
163162

164-
def delete(self, *args, **kwargs):
163+
def delete(self, *args, **kwargs): # pylint: disable=arguments-differ
165164
from readthedocs.projects import tasks
166165
log.info('Removing files for version %s', self.slug)
167166
tasks.clear_artifacts.delay(version_pk=self.pk)

readthedocs/comments/models.py

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ def from_hash(self, version_slug, page, node_hash, project_slug=None):
3636
if project_slug:
3737
snapshots = snapshots.filter(node__project__slug=project_slug)
3838

39-
if len(snapshots) == 0:
39+
if not snapshots.exists():
4040
raise DocumentNode.DoesNotExist(
4141
"No node exists on %s with a current hash of %s" % (
4242
page, node_hash))
4343

44-
if len(snapshots) == 1:
44+
if snapshots.count() == 1:
4545
# If we have found only one snapshot, we know we have the correct node.
4646
node = snapshots[0].node
4747
else:
@@ -89,22 +89,20 @@ def latest_commit(self):
8989
def visible_comments(self):
9090
if not self.project.comment_moderation:
9191
return self.comments.all()
92-
else:
93-
# non-optimal SQL warning.
94-
decisions = ModerationAction.objects.filter(
95-
comment__node=self,
96-
decision=1,
97-
date__gt=self.snapshots.latest().date
98-
)
99-
valid_comments = self.comments.filter(moderation_actions__in=decisions).distinct()
100-
return valid_comments
92+
# non-optimal SQL warning.
93+
decisions = ModerationAction.objects.filter(
94+
comment__node=self,
95+
decision=1,
96+
date__gt=self.snapshots.latest().date
97+
)
98+
valid_comments = self.comments.filter(moderation_actions__in=decisions).distinct()
99+
return valid_comments
101100

102101
def update_hash(self, new_hash, commit):
103102
latest_snapshot = self.snapshots.latest()
104103
if latest_snapshot.hash == new_hash and latest_snapshot.commit == commit:
105104
return latest_snapshot
106-
else:
107-
return self.snapshots.create(hash=new_hash, commit=commit)
105+
return self.snapshots.create(hash=new_hash, commit=commit)
108106

109107

110108
class DocumentNodeSerializer(serializers.ModelSerializer):
@@ -190,8 +188,7 @@ def has_been_approved_since_most_recent_node_change(self):
190188
# If we do have an approval action which is newer than the most recent change,
191189
# we'll return True or False commensurate with its "approved" attribute.
192190
return latest_moderation_action.approved()
193-
else:
194-
return False
191+
return False
195192

196193
def is_orphaned(self):
197194
raise NotImplementedError('TODO')

readthedocs/comments/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def get_queryset(self):
185185
return queryset
186186

187187
@method_decorator(login_required)
188-
def create(self, request):
188+
def create(self, request, *args, **kwargs):
189189
project = Project.objects.get(slug=request.data['project'])
190190
comment = project.add_comment(version_slug=request.data['version'],
191191
page=request.data['document_page'],

readthedocs/core/forms.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ def __init__(self, *args, **kwargs):
3232
except AttributeError:
3333
pass
3434

35-
def save(self, *args, **kwargs):
35+
def save(self, commit=True):
3636
first_name = self.cleaned_data.pop('first_name', None)
3737
last_name = self.cleaned_data.pop('last_name', None)
38-
profile = super(UserProfileForm, self).save(*args, **kwargs)
39-
if kwargs.get('commit', True):
38+
profile = super(UserProfileForm, self).save(commit=commit)
39+
if commit:
4040
user = profile.user
4141
user.first_name = first_name
4242
user.last_name = last_name

readthedocs/core/management/commands/import_github.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Command(BaseCommand):
1212
help = __doc__
1313

1414
def handle(self, *args, **options):
15-
if len(args):
15+
if args:
1616
for slug in args:
1717
for service in GitHubService.for_user(
1818
User.objects.get(username=slug)

readthedocs/core/management/commands/pull.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Command(BaseCommand):
1717
help = __doc__
1818

1919
def handle(self, *args, **options):
20-
if len(args):
20+
if args:
2121
for slug in args:
2222
tasks.update_imported_docs(
2323
utils.version_from_slug(slug, LATEST).pk

readthedocs/core/management/commands/update_repos.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def handle(self, *args, **options):
4343
record = options['record']
4444
force = options['force']
4545
version = options['version']
46-
if len(args):
46+
if args:
4747
for slug in args:
4848
if version and version != "all":
4949
log.info("Updating version %s for %s", version, slug)

readthedocs/core/resolver.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,7 @@ def resolve_path(self, project, filename='', version_slug=None,
105105
project_slug = project.slug
106106
subproject_slug = None
107107

108-
if project.single_version or single_version:
109-
single_version = True
110-
else:
111-
single_version = False
108+
single_version = bool(project.single_version or single_version)
112109

113110
return self.base_resolve_path(
114111
project_slug=project_slug,
@@ -130,8 +127,7 @@ def resolve_domain(self, project, private=None):
130127
return domain.domain
131128
elif self._use_subdomain():
132129
return self._get_project_subdomain(canonical_project)
133-
else:
134-
return getattr(settings, 'PRODUCTION_DOMAIN')
130+
return getattr(settings, 'PRODUCTION_DOMAIN')
135131

136132
def resolve(self, project, protocol='http', filename='', private=None,
137133
**kwargs):
@@ -160,8 +156,7 @@ def _get_canonical_project(self, project):
160156
return main_language_project
161157
elif relation:
162158
return relation.parent
163-
else:
164-
return project
159+
return project
165160

166161
def _get_project_subdomain(self, project):
167162
"""Determine canonical project domain as subdomain"""

readthedocs/core/symlink.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,15 +152,15 @@ def symlink_cnames(self, domain=None):
152152
domains = [domain]
153153
else:
154154
domains = Domain.objects.filter(project=self.project)
155-
for domain in domains:
156-
self._log(u"Symlinking CNAME: {0} -> {1}".format(domain.domain, self.project.slug))
155+
for dom in domains:
156+
self._log(u"Symlinking CNAME: {0} -> {1}".format(dom.domain, self.project.slug))
157157

158158
# CNAME to doc root
159-
symlink = os.path.join(self.CNAME_ROOT, domain.domain)
159+
symlink = os.path.join(self.CNAME_ROOT, dom.domain)
160160
run('ln -nsf {0} {1}'.format(self.project_root, symlink))
161161

162162
# Project symlink
163-
project_cname_symlink = os.path.join(self.PROJECT_CNAME_ROOT, domain.domain)
163+
project_cname_symlink = os.path.join(self.PROJECT_CNAME_ROOT, dom.domain)
164164
run('ln -nsf %s %s' % (self.project.doc_path, project_cname_symlink))
165165

166166
def remove_symlink_cname(self, domain):

readthedocs/core/utils/__init__.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@ def run_on_app_servers(command):
3636
if ret != 0:
3737
ret_val = ret
3838
return ret_val
39-
else:
40-
ret = os.system(command)
41-
return ret
39+
ret = os.system(command)
40+
return ret
4241

4342

4443
def broadcast(type, task, args): # pylint: disable=redefined-builtin
@@ -59,8 +58,7 @@ def clean_url(url):
5958
parsed = urlparse(url)
6059
if parsed.scheme or parsed.netloc:
6160
return parsed.netloc
62-
else:
63-
return parsed.path
61+
return parsed.path
6462

6563

6664
def cname_to_slug(host):

readthedocs/core/views/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,8 @@ def wipe_version(request, project_slug, version_slug):
9898
for del_dir in del_dirs:
9999
broadcast(type='build', task=remove_dir, args=[del_dir])
100100
return redirect('project_version_list', project_slug)
101-
else:
102-
return render_to_response('wipe_version.html',
103-
context_instance=RequestContext(request))
101+
return render_to_response('wipe_version.html',
102+
context_instance=RequestContext(request))
104103

105104

106105
def divide_by_zero(request): # pylint: disable=unused-argument

0 commit comments

Comments
 (0)