forked from DonJayamanne/pythonVSCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtopackage.py
More file actions
32 lines (27 loc) · 1.24 KB
/
topackage.py
File metadata and controls
32 lines (27 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import rope.refactor.importutils
from rope.base.change import ChangeSet, ChangeContents, MoveResource, \
CreateFolder
class ModuleToPackage(object):
def __init__(self, project, resource):
self.project = project
self.resource = resource
def get_changes(self):
changes = ChangeSet('Transform <%s> module to package' %
self.resource.path)
new_content = self._transform_relatives_to_absolute(self.resource)
if new_content is not None:
changes.add_change(ChangeContents(self.resource, new_content))
parent = self.resource.parent
name = self.resource.name[:-3]
changes.add_change(CreateFolder(parent, name))
parent_path = parent.path + '/'
if not parent.path:
parent_path = ''
new_path = parent_path + '%s/__init__.py' % name
if self.resource.project == self.project:
changes.add_change(MoveResource(self.resource, new_path))
return changes
def _transform_relatives_to_absolute(self, resource):
pymodule = self.project.get_pymodule(resource)
import_tools = rope.refactor.importutils.ImportTools(self.project)
return import_tools.relatives_to_absolutes(pymodule)