Skip to content

Commit 519312f

Browse files
authored
Merge pull request #91 from PokhodenkoSA/tools/black
Add black formatter for Python code
2 parents 9fcbaa5 + c9ab60a commit 519312f

17 files changed

+586
-512
lines changed

.git-blame-ignore-revs

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# $ git config blame.ignoreRevsFile .git-blame-ignore-revs
2+
3+
# Migrate code style to Black
4+
41ccd65e2e659aa0add0e5ab59f1a46e32cc4c46

.github/workflows/black.yml

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# This is a workflow to format Python code with black formatter
2+
3+
name: black
4+
5+
# Controls when the action will run. Triggers the workflow on push or pull request
6+
# events but only for the master branch
7+
on:
8+
push:
9+
branches: [master]
10+
pull_request:
11+
branches: [master]
12+
13+
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
14+
jobs:
15+
# This workflow contains a single job called "black"
16+
black:
17+
# The type of runner that the job will run on
18+
runs-on: ubuntu-latest
19+
20+
# Steps represent a sequence of tasks that will be executed as part of the job
21+
steps:
22+
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
23+
- uses: actions/checkout@v2
24+
# Set up a Python environment for use in actions
25+
- uses: actions/setup-python@v2
26+
27+
# Run black code formatter
28+
- uses: psf/black@stable

CONTRIBUTING.md

+10-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,10 @@
1-
Coming soon
1+
# Python code style
2+
3+
## black
4+
5+
We use [black](https://black.readthedocs.io/en/stable/) code formatter.
6+
7+
- Revision: `20.8b1` or branch `stable`.
8+
- See configuration in `pyproject.toml`.
9+
10+
Run before each commit: `black .`

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com./psf/black)
2+
13
What?
24
====
35
A lightweight Python package exposing a subset of OpenCL and SYCL

dpctl/__init__.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
## This top-level dpctl module.
2323
##
2424
##===----------------------------------------------------------------------===##
25-
'''
25+
"""
2626
Data Parallel Control (dpCtl)
2727
2828
dpCtl provides a lightweight Python abstraction over DPC++/SYCL and
@@ -43,12 +43,13 @@
4343
4444
Please use `pydoc dpctl.ocldrv` to look at the current API for dpctl.ocldrv.
4545
46-
'''
46+
"""
4747
__author__ = "Intel Corp."
4848

4949
from ._sycl_core import *
5050
from ._version import get_versions
5151

52+
5253
def get_include():
5354
"""
5455
Return the directory that contains the dpCtl *.h header files.
@@ -57,7 +58,9 @@ def get_include():
5758
this function to locate the appropriate include directory.
5859
"""
5960
import os.path
60-
return os.path.join(os.path.dirname(__file__), 'include')
6161

62-
__version__ = get_versions()['version']
62+
return os.path.join(os.path.dirname(__file__), "include")
63+
64+
65+
__version__ = get_versions()["version"]
6366
del get_versions

dpctl/_version.py

+95-59
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
# This file helps to compute a version number in source trees obtained from
32
# git-archive tarball (such as those provided by githubs download-from-tag
43
# feature). Distribution tarballs (built by setup.py sdist) and build
@@ -58,28 +57,32 @@ class NotThisMethod(Exception):
5857

5958
def register_vcs_handler(vcs, method): # decorator
6059
"""Decorator to mark a method as the handler for a particular VCS."""
60+
6161
def decorate(f):
6262
"""Store f in HANDLERS[vcs][method]."""
6363
if vcs not in HANDLERS:
6464
HANDLERS[vcs] = {}
6565
HANDLERS[vcs][method] = f
6666
return f
67+
6768
return decorate
6869

6970

70-
def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
71-
env=None):
71+
def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None):
7272
"""Call the given command(s)."""
7373
assert isinstance(commands, list)
7474
p = None
7575
for c in commands:
7676
try:
7777
dispcmd = str([c] + args)
7878
# remember shell=False, so use git.cmd on windows, not just git
79-
p = subprocess.Popen([c] + args, cwd=cwd, env=env,
80-
stdout=subprocess.PIPE,
81-
stderr=(subprocess.PIPE if hide_stderr
82-
else None))
79+
p = subprocess.Popen(
80+
[c] + args,
81+
cwd=cwd,
82+
env=env,
83+
stdout=subprocess.PIPE,
84+
stderr=(subprocess.PIPE if hide_stderr else None),
85+
)
8386
break
8487
except EnvironmentError:
8588
e = sys.exc_info()[1]
@@ -116,16 +119,22 @@ def versions_from_parentdir(parentdir_prefix, root, verbose):
116119
for i in range(3):
117120
dirname = os.path.basename(root)
118121
if dirname.startswith(parentdir_prefix):
119-
return {"version": dirname[len(parentdir_prefix):],
120-
"full-revisionid": None,
121-
"dirty": False, "error": None, "date": None}
122+
return {
123+
"version": dirname[len(parentdir_prefix) :],
124+
"full-revisionid": None,
125+
"dirty": False,
126+
"error": None,
127+
"date": None,
128+
}
122129
else:
123130
rootdirs.append(root)
124131
root = os.path.dirname(root) # up a level
125132

126133
if verbose:
127-
print("Tried directories %s but none started with prefix %s" %
128-
(str(rootdirs), parentdir_prefix))
134+
print(
135+
"Tried directories %s but none started with prefix %s"
136+
% (str(rootdirs), parentdir_prefix)
137+
)
129138
raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
130139

131140

@@ -181,7 +190,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
181190
# starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
182191
# just "foo-1.0". If we see a "tag: " prefix, prefer those.
183192
TAG = "tag: "
184-
tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)])
193+
tags = set([r[len(TAG) :] for r in refs if r.startswith(TAG)])
185194
if not tags:
186195
# Either we're using git < 1.8.3, or there really are no tags. We use
187196
# a heuristic: assume all version tags have a digit. The old git %d
@@ -190,27 +199,34 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
190199
# between branches and tags. By ignoring refnames without digits, we
191200
# filter out many common branch names like "release" and
192201
# "stabilization", as well as "HEAD" and "master".
193-
tags = set([r for r in refs if re.search(r'\d', r)])
202+
tags = set([r for r in refs if re.search(r"\d", r)])
194203
if verbose:
195204
print("discarding '%s', no digits" % ",".join(refs - tags))
196205
if verbose:
197206
print("likely tags: %s" % ",".join(sorted(tags)))
198207
for ref in sorted(tags):
199208
# sorting will prefer e.g. "2.0" over "2.0rc1"
200209
if ref.startswith(tag_prefix):
201-
r = ref[len(tag_prefix):]
210+
r = ref[len(tag_prefix) :]
202211
if verbose:
203212
print("picking %s" % r)
204-
return {"version": r,
205-
"full-revisionid": keywords["full"].strip(),
206-
"dirty": False, "error": None,
207-
"date": date}
213+
return {
214+
"version": r,
215+
"full-revisionid": keywords["full"].strip(),
216+
"dirty": False,
217+
"error": None,
218+
"date": date,
219+
}
208220
# no suitable tags, so version is "0+unknown", but full hex is still there
209221
if verbose:
210222
print("no suitable tags, using unknown + full revision id")
211-
return {"version": "0+unknown",
212-
"full-revisionid": keywords["full"].strip(),
213-
"dirty": False, "error": "no suitable tags", "date": None}
223+
return {
224+
"version": "0+unknown",
225+
"full-revisionid": keywords["full"].strip(),
226+
"dirty": False,
227+
"error": "no suitable tags",
228+
"date": None,
229+
}
214230

215231

216232
@register_vcs_handler("git", "pieces_from_vcs")
@@ -225,19 +241,27 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
225241
if sys.platform == "win32":
226242
GITS = ["git.cmd", "git.exe"]
227243

228-
out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root,
229-
hide_stderr=True)
244+
out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True)
230245
if rc != 0:
231246
if verbose:
232247
print("Directory %s not under git control" % root)
233248
raise NotThisMethod("'git rev-parse --git-dir' returned error")
234249

235250
# if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
236251
# if there isn't one, this yields HEX[-dirty] (no NUM)
237-
describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty",
238-
"--always", "--long",
239-
"--match", "%s*" % tag_prefix],
240-
cwd=root)
252+
describe_out, rc = run_command(
253+
GITS,
254+
[
255+
"describe",
256+
"--tags",
257+
"--dirty",
258+
"--always",
259+
"--long",
260+
"--match",
261+
"%s*" % tag_prefix,
262+
],
263+
cwd=root,
264+
)
241265
# --long was added in git-1.5.5
242266
if describe_out is None:
243267
raise NotThisMethod("'git describe' failed")
@@ -260,17 +284,16 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
260284
dirty = git_describe.endswith("-dirty")
261285
pieces["dirty"] = dirty
262286
if dirty:
263-
git_describe = git_describe[:git_describe.rindex("-dirty")]
287+
git_describe = git_describe[: git_describe.rindex("-dirty")]
264288

265289
# now we have TAG-NUM-gHEX or HEX
266290

267291
if "-" in git_describe:
268292
# TAG-NUM-gHEX
269-
mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe)
293+
mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe)
270294
if not mo:
271295
# unparseable. Maybe git-describe is misbehaving?
272-
pieces["error"] = ("unable to parse git-describe output: '%s'"
273-
% describe_out)
296+
pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out
274297
return pieces
275298

276299
# tag
@@ -279,10 +302,12 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
279302
if verbose:
280303
fmt = "tag '%s' doesn't start with prefix '%s'"
281304
print(fmt % (full_tag, tag_prefix))
282-
pieces["error"] = ("tag '%s' doesn't start with prefix '%s'"
283-
% (full_tag, tag_prefix))
305+
pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % (
306+
full_tag,
307+
tag_prefix,
308+
)
284309
return pieces
285-
pieces["closest-tag"] = full_tag[len(tag_prefix):]
310+
pieces["closest-tag"] = full_tag[len(tag_prefix) :]
286311

287312
# distance: number of commits since tag
288313
pieces["distance"] = int(mo.group(2))
@@ -293,13 +318,13 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
293318
else:
294319
# HEX: no tags
295320
pieces["closest-tag"] = None
296-
count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"],
297-
cwd=root)
321+
count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
298322
pieces["distance"] = int(count_out) # total number of commits
299323

300324
# commit date: see ISO-8601 comment in git_versions_from_keywords()
301-
date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"],
302-
cwd=root)[0].strip()
325+
date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[
326+
0
327+
].strip()
303328
pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
304329

305330
return pieces
@@ -330,8 +355,7 @@ def render_pep440(pieces):
330355
rendered += ".dirty"
331356
else:
332357
# exception #1
333-
rendered = "0+untagged.%d.g%s" % (pieces["distance"],
334-
pieces["short"])
358+
rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"])
335359
if pieces["dirty"]:
336360
rendered += ".dirty"
337361
return rendered
@@ -445,11 +469,13 @@ def render_git_describe_long(pieces):
445469
def render(pieces, style):
446470
"""Render the given version pieces into the requested style."""
447471
if pieces["error"]:
448-
return {"version": "unknown",
449-
"full-revisionid": pieces.get("long"),
450-
"dirty": None,
451-
"error": pieces["error"],
452-
"date": None}
472+
return {
473+
"version": "unknown",
474+
"full-revisionid": pieces.get("long"),
475+
"dirty": None,
476+
"error": pieces["error"],
477+
"date": None,
478+
}
453479

454480
if not style or style == "default":
455481
style = "pep440" # the default
@@ -469,9 +495,13 @@ def render(pieces, style):
469495
else:
470496
raise ValueError("unknown style '%s'" % style)
471497

472-
return {"version": rendered, "full-revisionid": pieces["long"],
473-
"dirty": pieces["dirty"], "error": None,
474-
"date": pieces.get("date")}
498+
return {
499+
"version": rendered,
500+
"full-revisionid": pieces["long"],
501+
"dirty": pieces["dirty"],
502+
"error": None,
503+
"date": pieces.get("date"),
504+
}
475505

476506

477507
def get_versions():
@@ -485,8 +515,7 @@ def get_versions():
485515
verbose = cfg.verbose
486516

487517
try:
488-
return git_versions_from_keywords(get_keywords(), cfg.tag_prefix,
489-
verbose)
518+
return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, verbose)
490519
except NotThisMethod:
491520
pass
492521

@@ -495,13 +524,16 @@ def get_versions():
495524
# versionfile_source is the relative path from the top of the source
496525
# tree (where the .git directory might live) to this file. Invert
497526
# this to find the root from __file__.
498-
for i in cfg.versionfile_source.split('/'):
527+
for i in cfg.versionfile_source.split("/"):
499528
root = os.path.dirname(root)
500529
except NameError:
501-
return {"version": "0+unknown", "full-revisionid": None,
502-
"dirty": None,
503-
"error": "unable to find root of source tree",
504-
"date": None}
530+
return {
531+
"version": "0+unknown",
532+
"full-revisionid": None,
533+
"dirty": None,
534+
"error": "unable to find root of source tree",
535+
"date": None,
536+
}
505537

506538
try:
507539
pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose)
@@ -515,6 +547,10 @@ def get_versions():
515547
except NotThisMethod:
516548
pass
517549

518-
return {"version": "0+unknown", "full-revisionid": None,
519-
"dirty": None,
520-
"error": "unable to compute version", "date": None}
550+
return {
551+
"version": "0+unknown",
552+
"full-revisionid": None,
553+
"dirty": None,
554+
"error": "unable to compute version",
555+
"date": None,
556+
}

0 commit comments

Comments
 (0)