Skip to content

Commit fc987b5

Browse files
Replace flake8 and black with ruff
1 parent 02ca914 commit fc987b5

388 files changed

Lines changed: 20380 additions & 5961 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ name: "Code formatting"
22

33
on:
44
push:
5-
branches: [ master, 4.* ]
5+
branches: [ master, 5.* ]
66
pull_request:
77
# The branches below must be a subset of the branches above
8-
branches: [ master, 4.* ]
8+
branches: [ master, 5.* ]
99

1010
jobs:
1111
validate:
@@ -27,15 +27,10 @@ jobs:
2727
with:
2828
python-version: ${{matrix.python-version}}
2929

30-
- name: Install flake8 & black
31-
run: pip install $(grep -E '"(flake8|black)==[^"]+"' pyproject.toml | sed -E 's/^[^"]*"//; s/".*$//; s/,//')
30+
- name: Install ruff
31+
run: pip install $(grep "ruff==" pyproject.toml | sed -E 's/^[^"]*"//; s/".*$//; s/,//')
3232

33-
- name: "Check: flake8"
33+
- name: "Check: ruff"
3434
run: |
3535
# stop the build if there are Python syntax errors or undefined names
36-
flake8 geonode --count --select=E9,F63,F7,F82 --show-source --statistics
37-
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
38-
flake8 geonode --count --statistics
39-
40-
- name: "Check: black"
41-
run: black --check geonode
36+
ruff check

create-envfile.py

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,25 +74,47 @@ def _get_vals_to_replace(args):
7474
with open(args.file) as _json_file:
7575
_jsfile = json.load(_json_file)
7676

77-
_vals_to_replace = {key: _jsfile.get(key, val) for key, val in vars(args).items() if key not in _config}
78-
tcp = "https" if ast.literal_eval(f"{_jsfile.get('https', args.https)}".capitalize()) else "http"
77+
_vals_to_replace = {
78+
key: _jsfile.get(key, val)
79+
for key, val in vars(args).items()
80+
if key not in _config
81+
}
82+
tcp = (
83+
"https"
84+
if ast.literal_eval(f"{_jsfile.get('https', args.https)}".capitalize())
85+
else "http"
86+
)
7987

8088
_vals_to_replace["public_port"] = (
81-
"443" if ast.literal_eval(f"{_jsfile.get('https', args.https)}".capitalize()) else "80"
89+
"443"
90+
if ast.literal_eval(f"{_jsfile.get('https', args.https)}".capitalize())
91+
else "80"
92+
)
93+
_vals_to_replace["http_host"] = (
94+
_jsfile.get("hostname", args.hostname) if tcp == "http" else ""
95+
)
96+
_vals_to_replace["https_host"] = (
97+
_jsfile.get("hostname", args.hostname) if tcp == "https" else ""
8298
)
83-
_vals_to_replace["http_host"] = _jsfile.get("hostname", args.hostname) if tcp == "http" else ""
84-
_vals_to_replace["https_host"] = _jsfile.get("hostname", args.hostname) if tcp == "https" else ""
8599

86-
_vals_to_replace["siteurl"] = f"{tcp}://{_jsfile.get('hostname', args.hostname)}"
87-
_vals_to_replace["secret_key"] = _jsfile.get("secret_key", args.secret_key) or "".join(
88-
random.choice(_strong_chars) for _ in range(50)
100+
_vals_to_replace["siteurl"] = (
101+
f"{tcp}://{_jsfile.get('hostname', args.hostname)}"
89102
)
103+
_vals_to_replace["secret_key"] = _jsfile.get(
104+
"secret_key", args.secret_key
105+
) or "".join(random.choice(_strong_chars) for _ in range(50))
90106
_vals_to_replace["letsencrypt_mode"] = (
91107
"disabled"
92108
if not _vals_to_replace.get("https_host")
93-
else "staging" if _jsfile.get("env_type", args.env_type) in ["test"] else "production"
109+
else "staging"
110+
if _jsfile.get("env_type", args.env_type) in ["test"]
111+
else "production"
112+
)
113+
_vals_to_replace["debug"] = (
114+
False
115+
if _jsfile.get("env_type", args.env_type) in ["prod", "test"]
116+
else True
94117
)
95-
_vals_to_replace["debug"] = False if _jsfile.get("env_type", args.env_type) in ["prod", "test"] else True
96118
_vals_to_replace["email"] = _jsfile.get("email", args.email)
97119

98120
if tcp == "https" and not _vals_to_replace["email"]:
@@ -149,9 +171,13 @@ def _get_vals_to_replace(args):
149171
help="absolute path of the file with the configuration. Note: we expect that the keys of the dictionary have the same name as the CLI params",
150172
)
151173
# booleans
152-
parser.add_argument("--https", action="store_true", default=False, help="If provided, https is used")
174+
parser.add_argument(
175+
"--https", action="store_true", default=False, help="If provided, https is used"
176+
)
153177
# strings
154-
parser.add_argument("--email", help="Admin email, this field is required if https is enabled")
178+
parser.add_argument(
179+
"--email", help="Admin email, this field is required if https is enabled"
180+
)
155181

156182
parser.add_argument("--geonodepwd", help="GeoNode admin password")
157183
parser.add_argument("--geoserverpwd", help="Geoserver admin password")
@@ -174,7 +200,9 @@ def _get_vals_to_replace(args):
174200
if not args.confirmation:
175201
generate_env_file(args)
176202
else:
177-
overwrite_env = input("This action will overwrite any existing .env file. Do you wish to continue? (y/n)")
203+
overwrite_env = input(
204+
"This action will overwrite any existing .env file. Do you wish to continue? (y/n)"
205+
)
178206
if overwrite_env not in ["y", "n"]:
179207
logger.error("Please enter a valid response")
180208
if overwrite_env == "y":

geonode/api/api.py

Lines changed: 75 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,11 @@ def get_resources_counts(self, options):
9696
if hasattr(app, "default_model"):
9797
_model = apps.get_model(label, app.default_model)
9898
if issubclass(_model, _type_filter):
99-
subtypes.append(resources.filter(polymorphic_ctype__model=_model.__name__.lower()))
99+
subtypes.append(
100+
resources.filter(
101+
polymorphic_ctype__model=_model.__name__.lower()
102+
)
103+
)
100104

101105
if not isinstance(_type_filter, str):
102106
_type_filter = _type_filter.__name__.lower()
@@ -105,9 +109,19 @@ def get_resources_counts(self, options):
105109
counts = list()
106110
if subtypes:
107111
for subtype in subtypes:
108-
counts.extend(list(subtype.values(options["count_type"]).annotate(count=Count(options["count_type"]))))
112+
counts.extend(
113+
list(
114+
subtype.values(options["count_type"]).annotate(
115+
count=Count(options["count_type"])
116+
)
117+
)
118+
)
109119
else:
110-
counts = list(resources.values(options["count_type"]).annotate(count=Count(options["count_type"])))
120+
counts = list(
121+
resources.values(options["count_type"]).annotate(
122+
count=Count(options["count_type"])
123+
)
124+
)
111125

112126
_counts = {}
113127
for c in counts:
@@ -222,7 +236,9 @@ def dehydrate_thesaurus_identifier(self, bundle):
222236

223237
def dehydrate(self, bundle):
224238
lang = get_language()
225-
label = ThesaurusKeywordLabel.objects.filter(keyword=bundle.data["id"]).filter(lang=lang)
239+
label = ThesaurusKeywordLabel.objects.filter(keyword=bundle.data["id"]).filter(
240+
lang=lang
241+
)
226242
if label.exists():
227243
bundle.data["label_id"] = label.get().id
228244
bundle.data["label"] = label.get().label
@@ -233,7 +249,11 @@ def dehydrate(self, bundle):
233249
return bundle
234250

235251
class Meta:
236-
queryset = ThesaurusKeyword.objects.all().order_by("alt_label").select_related("thesaurus")
252+
queryset = (
253+
ThesaurusKeyword.objects.all()
254+
.order_by("alt_label")
255+
.select_related("thesaurus")
256+
)
237257

238258
resource_name = "thesaurus/keywords"
239259
allowed_methods = ["get"]
@@ -276,10 +296,12 @@ class TopicCategoryResource(TypeFilteredResource):
276296

277297
def dehydrate_datasets_count(self, bundle):
278298
request = bundle.request
279-
obj_with_perms = get_objects_for_user(request.user, "base.view_resourcebase").filter(
280-
polymorphic_ctype__model="dataset"
281-
)
282-
filter_set = bundle.obj.resourcebase_set.filter(id__in=obj_with_perms.values("id")).filter(metadata_only=False)
299+
obj_with_perms = get_objects_for_user(
300+
request.user, "base.view_resourcebase"
301+
).filter(polymorphic_ctype__model="dataset")
302+
filter_set = bundle.obj.resourcebase_set.filter(
303+
id__in=obj_with_perms.values("id")
304+
).filter(metadata_only=False)
283305

284306
if not settings.SKIP_PERMS_FILTER:
285307
filter_set = get_visible_resources(
@@ -345,7 +367,8 @@ def dehydrate(self, bundle):
345367
"""Provide additional resource counts"""
346368
request = bundle.request
347369
counts = _get_resource_counts(
348-
request, resourcebase_filter_kwargs={"group__groupprofile__categories": bundle.obj}
370+
request,
371+
resourcebase_filter_kwargs={"group__groupprofile__categories": bundle.obj},
349372
)
350373
bundle.data.update(resource_counts=counts)
351374
return bundle
@@ -390,7 +413,9 @@ def dehydrate_logo_url(self, bundle):
390413

391414

392415
class GroupResource(ModelResource):
393-
group_profile = fields.ToOneField(GroupProfileResource, "groupprofile", full=True, null=True, blank=True)
416+
group_profile = fields.ToOneField(
417+
GroupProfileResource, "groupprofile", full=True, null=True, blank=True
418+
)
394419
resource_counts = fields.CharField()
395420

396421
class Meta:
@@ -408,7 +433,10 @@ class Meta:
408433
def dehydrate(self, bundle):
409434
"""Provide additional resource counts"""
410435
request = bundle.request
411-
counts = _get_resource_counts(request, resourcebase_filter_kwargs={"group": bundle.obj, "metadata_only": False})
436+
counts = _get_resource_counts(
437+
request,
438+
resourcebase_filter_kwargs={"group": bundle.obj, "metadata_only": False},
439+
)
412440

413441
bundle.data.update(resource_counts=counts)
414442
return bundle
@@ -477,9 +505,9 @@ def dehydrate_email(self, bundle):
477505
return email
478506

479507
def dehydrate_datasets_count(self, bundle):
480-
obj_with_perms = get_objects_for_user(bundle.request.user, "base.view_resourcebase").filter(
481-
polymorphic_ctype__model="dataset"
482-
)
508+
obj_with_perms = get_objects_for_user(
509+
bundle.request.user, "base.view_resourcebase"
510+
).filter(polymorphic_ctype__model="dataset")
483511
return (
484512
bundle.obj.resourcebase_set.filter(id__in=obj_with_perms.values("id"))
485513
.filter(metadata_only=False)
@@ -488,9 +516,9 @@ def dehydrate_datasets_count(self, bundle):
488516
)
489517

490518
def dehydrate_maps_count(self, bundle):
491-
obj_with_perms = get_objects_for_user(bundle.request.user, "base.view_resourcebase").filter(
492-
polymorphic_ctype__model="map"
493-
)
519+
obj_with_perms = get_objects_for_user(
520+
bundle.request.user, "base.view_resourcebase"
521+
).filter(polymorphic_ctype__model="map")
494522
return (
495523
bundle.obj.resourcebase_set.filter(id__in=obj_with_perms.values("id"))
496524
.filter(metadata_only=False)
@@ -499,9 +527,9 @@ def dehydrate_maps_count(self, bundle):
499527
)
500528

501529
def dehydrate_documents_count(self, bundle):
502-
obj_with_perms = get_objects_for_user(bundle.request.user, "base.view_resourcebase").filter(
503-
polymorphic_ctype__model="document"
504-
)
530+
obj_with_perms = get_objects_for_user(
531+
bundle.request.user, "base.view_resourcebase"
532+
).filter(polymorphic_ctype__model="document")
505533
return (
506534
bundle.obj.resourcebase_set.filter(id__in=obj_with_perms.values("id"))
507535
.filter(metadata_only=False)
@@ -521,7 +549,10 @@ def dehydrate_current_user(self, bundle):
521549
def dehydrate_activity_stream_url(self, bundle):
522550
return reverse(
523551
"actstream_actor",
524-
kwargs={"content_type_id": ContentType.objects.get_for_model(bundle.obj).pk, "object_id": bundle.obj.pk},
552+
kwargs={
553+
"content_type_id": ContentType.objects.get_for_model(bundle.obj).pk,
554+
"object_id": bundle.obj.pk,
555+
},
525556
)
526557

527558
def dehydrate(self, bundle):
@@ -556,11 +587,20 @@ def serialize(self, request, data, format, options=None):
556587
return super().serialize(request, data, format, options)
557588

558589
class Meta:
559-
queryset = get_user_model().objects.exclude(Q(username="AnonymousUser") | Q(is_active=False))
590+
queryset = get_user_model().objects.exclude(
591+
Q(username="AnonymousUser") | Q(is_active=False)
592+
)
560593
resource_name = "profiles"
561594
allowed_methods = ["get"]
562595
ordering = ["username", "date_joined"]
563-
excludes = ["is_staff", "password", "is_superuser", "is_active", "last_login", "extra_data"]
596+
excludes = [
597+
"is_staff",
598+
"password",
599+
"is_superuser",
600+
"is_active",
601+
"last_login",
602+
"extra_data",
603+
]
564604

565605
filtering = {
566606
"username": ALL,
@@ -615,7 +655,14 @@ class Meta:
615655
resource_name = "owners"
616656
allowed_methods = ["get"]
617657
ordering = ["username", "date_joined"]
618-
excludes = ["is_staff", "password", "is_superuser", "is_active", "last_login", "extra_data"]
658+
excludes = [
659+
"is_staff",
660+
"password",
661+
"is_superuser",
662+
"is_active",
663+
"last_login",
664+
"extra_data",
665+
]
619666

620667
filtering = {
621668
"username": ALL,
@@ -633,7 +680,9 @@ class GeoserverStyleResource(ModelResource):
633680
# dataset_default_style is polymorphic, so it will have many to many
634681
# relation
635682
layer = fields.ManyToManyField(
636-
"geonode.api.resourcebase_api.LayerResource", attribute="dataset_default_style", null=True
683+
"geonode.api.resourcebase_api.LayerResource",
684+
attribute="dataset_default_style",
685+
null=True,
637686
)
638687
version = fields.CharField(attribute="sld_version", null=True, blank=True)
639688
style_url = fields.CharField(attribute="sld_url")

geonode/api/authentication.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ class OAuthAuthentication(Authentication):
2828
def extract_auth_header(self, request):
2929
auth_header = None
3030
try:
31-
auth_header = request.META.get("HTTP_AUTHORIZATION", request.META.get("HTTP_AUTHORIZATION2"))
31+
auth_header = request.META.get(
32+
"HTTP_AUTHORIZATION", request.META.get("HTTP_AUTHORIZATION2")
33+
)
3234
except KeyError:
3335
pass
3436
return auth_header

0 commit comments

Comments
 (0)