Skip to content

Commit 81dd376

Browse files
committed
Add missing dataclass decorators in handlers configs. Add setup.py in extensions to unify build process
1 parent bbe1d97 commit 81dd376

9 files changed

Lines changed: 185 additions & 325 deletions

File tree

extensions/fine_python_black/fine_python_black/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
from .action import (
2-
BlackFormatHandler,
3-
BlackFormatHandlerConfig,
4-
)
1+
from .action import BlackFormatHandler, BlackFormatHandlerConfig
52

63
__all__ = [
74
"BlackFormatHandler",

extensions/fine_python_black/fine_python_black/action.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import dataclasses
34
import sys
45

56
# import asyncio
@@ -41,6 +42,7 @@ def get_black_mode(config: BlackFormatHandlerConfig) -> Mode:
4142
)
4243

4344

45+
@dataclasses.dataclass
4446
class BlackFormatHandlerConfig(code_action.ActionHandlerConfig):
4547
# TODO: should be set
4648
target_versions: list[

extensions/fine_python_black/poetry.lock

Lines changed: 0 additions & 321 deletions
This file was deleted.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
from setuptools import setup
2+
from setuptools.command.build import build
3+
from setuptools.command.build_ext import build_ext
4+
from setuptools.command.build_py import build_py
5+
from setuptools.command.egg_info import egg_info
6+
import tempfile
7+
import atexit
8+
import shutil
9+
import sys
10+
11+
# Create a single temp directory for all build operations
12+
_TEMP_BUILD_DIR = None
13+
14+
def get_temp_build_dir(pkg_name):
15+
global _TEMP_BUILD_DIR
16+
if _TEMP_BUILD_DIR is None:
17+
_TEMP_BUILD_DIR = tempfile.mkdtemp(prefix=f'{pkg_name}_build_')
18+
atexit.register(lambda: shutil.rmtree(_TEMP_BUILD_DIR, ignore_errors=True))
19+
return _TEMP_BUILD_DIR
20+
21+
class TempDirBuildMixin:
22+
def initialize_options(self):
23+
super().initialize_options()
24+
temp_dir = get_temp_build_dir(self.distribution.get_name())
25+
self.build_base = temp_dir
26+
27+
class TempDirEggInfoMixin:
28+
def initialize_options(self):
29+
super().initialize_options()
30+
temp_dir = get_temp_build_dir(self.distribution.get_name())
31+
self.egg_base = temp_dir
32+
33+
class CustomBuild(TempDirBuildMixin, build):
34+
pass
35+
36+
class CustomBuildPy(TempDirBuildMixin, build_py):
37+
pass
38+
39+
class CustomBuildExt(TempDirBuildMixin, build_ext):
40+
pass
41+
42+
class CustomEggInfo(TempDirEggInfoMixin, egg_info):
43+
def initialize_options(self):
44+
# Don't use temp dir for editable installs
45+
if '--editable' in sys.argv or '-e' in sys.argv:
46+
egg_info.initialize_options(self)
47+
else:
48+
super().initialize_options()
49+
50+
setup(
51+
name="fine_python_black",
52+
cmdclass={
53+
'build': CustomBuild,
54+
'build_py': CustomBuildPy,
55+
'build_ext': CustomBuildExt,
56+
'egg_info': CustomEggInfo,
57+
}
58+
)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
from setuptools import setup
2+
from setuptools.command.build import build
3+
from setuptools.command.build_ext import build_ext
4+
from setuptools.command.build_py import build_py
5+
from setuptools.command.egg_info import egg_info
6+
import tempfile
7+
import atexit
8+
import shutil
9+
import sys
10+
11+
# Create a single temp directory for all build operations
12+
_TEMP_BUILD_DIR = None
13+
14+
def get_temp_build_dir(pkg_name):
15+
global _TEMP_BUILD_DIR
16+
if _TEMP_BUILD_DIR is None:
17+
_TEMP_BUILD_DIR = tempfile.mkdtemp(prefix=f'{pkg_name}_build_')
18+
atexit.register(lambda: shutil.rmtree(_TEMP_BUILD_DIR, ignore_errors=True))
19+
return _TEMP_BUILD_DIR
20+
21+
class TempDirBuildMixin:
22+
def initialize_options(self):
23+
super().initialize_options()
24+
temp_dir = get_temp_build_dir(self.distribution.get_name())
25+
self.build_base = temp_dir
26+
27+
class TempDirEggInfoMixin:
28+
def initialize_options(self):
29+
super().initialize_options()
30+
temp_dir = get_temp_build_dir(self.distribution.get_name())
31+
self.egg_base = temp_dir
32+
33+
class CustomBuild(TempDirBuildMixin, build):
34+
pass
35+
36+
class CustomBuildPy(TempDirBuildMixin, build_py):
37+
pass
38+
39+
class CustomBuildExt(TempDirBuildMixin, build_ext):
40+
pass
41+
42+
class CustomEggInfo(TempDirEggInfoMixin, egg_info):
43+
def initialize_options(self):
44+
# Don't use temp dir for editable installs
45+
if '--editable' in sys.argv or '-e' in sys.argv:
46+
egg_info.initialize_options(self)
47+
else:
48+
super().initialize_options()
49+
50+
setup(
51+
name="fine_python_flake8",
52+
cmdclass={
53+
'build': CustomBuild,
54+
'build_py': CustomBuildPy,
55+
'build_ext': CustomBuildExt,
56+
'egg_info': CustomEggInfo,
57+
}
58+
)

extensions/fine_python_isort/fine_python_isort/action.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import dataclasses
34
from io import StringIO
45
from pathlib import Path
56

@@ -11,6 +12,7 @@
1112
from finecode_extension_api.interfaces import icache, ilogger, iprocessexecutor
1213

1314

15+
@dataclasses.dataclass
1416
class IsortFormatHandlerConfig(code_action.ActionHandlerConfig):
1517
profile: str = ""
1618

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
from setuptools import setup
2+
from setuptools.command.build import build
3+
from setuptools.command.build_ext import build_ext
4+
from setuptools.command.build_py import build_py
5+
from setuptools.command.egg_info import egg_info
6+
import tempfile
7+
import atexit
8+
import shutil
9+
import sys
10+
11+
# Create a single temp directory for all build operations
12+
_TEMP_BUILD_DIR = None
13+
14+
def get_temp_build_dir(pkg_name):
15+
global _TEMP_BUILD_DIR
16+
if _TEMP_BUILD_DIR is None:
17+
_TEMP_BUILD_DIR = tempfile.mkdtemp(prefix=f'{pkg_name}_build_')
18+
atexit.register(lambda: shutil.rmtree(_TEMP_BUILD_DIR, ignore_errors=True))
19+
return _TEMP_BUILD_DIR
20+
21+
class TempDirBuildMixin:
22+
def initialize_options(self):
23+
super().initialize_options()
24+
temp_dir = get_temp_build_dir(self.distribution.get_name())
25+
self.build_base = temp_dir
26+
27+
class TempDirEggInfoMixin:
28+
def initialize_options(self):
29+
super().initialize_options()
30+
temp_dir = get_temp_build_dir(self.distribution.get_name())
31+
self.egg_base = temp_dir
32+
33+
class CustomBuild(TempDirBuildMixin, build):
34+
pass
35+
36+
class CustomBuildPy(TempDirBuildMixin, build_py):
37+
pass
38+
39+
class CustomBuildExt(TempDirBuildMixin, build_ext):
40+
pass
41+
42+
class CustomEggInfo(TempDirEggInfoMixin, egg_info):
43+
def initialize_options(self):
44+
# Don't use temp dir for editable installs
45+
if '--editable' in sys.argv or '-e' in sys.argv:
46+
egg_info.initialize_options(self)
47+
else:
48+
super().initialize_options()
49+
50+
setup(
51+
name="fine_python_isort",
52+
cmdclass={
53+
'build': CustomBuild,
54+
'build_py': CustomBuildPy,
55+
'build_ext': CustomBuildExt,
56+
'egg_info': CustomEggInfo,
57+
}
58+
)

extensions/fine_python_virtualenv/src/fine_python_virtualenv/prepare_envs_handler.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import dataclasses
2+
13
from finecode_extension_api.interfaces import ilogger, ifilemanager
24
import virtualenv
35

46
from finecode_extension_api import code_action
57
from finecode_extension_api.actions import prepare_envs as prepare_envs_action
68

79

10+
@dataclasses.dataclass
811
class VirtualenvPrepareEnvHandlerConfig(code_action.ActionHandlerConfig):
912
...
1013

extensions/fine_python_virtualenv/src/fine_python_virtualenv/prepare_runners_handler.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import dataclasses
2+
13
from finecode_extension_api.interfaces import ilogger, ifilemanager
24
import virtualenv
35

46
from finecode_extension_api import code_action
57
from finecode_extension_api.actions import prepare_runners as prepare_runners_action
68

79

10+
@dataclasses.dataclass
811
class VirtualenvPrepareRunnersHandlerConfig(code_action.ActionHandlerConfig):
912
...
1013

0 commit comments

Comments
 (0)