Skip to content

Commit

Permalink
Merge pull request #606 from python-rope/remove-data-files-compression
Browse files Browse the repository at this point in the history
Remove .ropeproject/history and .ropeproject/objectdb compression
  • Loading branch information
lieryan committed Dec 16, 2022
2 parents 0eb895b + f9f1d1e commit 4544731
Show file tree
Hide file tree
Showing 9 changed files with 67 additions and 50 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# **Upcoming release**

- #604 Fix test that sometimes leaves files behind in the current working directory (@lieryan)
- #606 Deprecate compress_objectdb and compress_history

# Release 1.6.0

Expand Down
2 changes: 1 addition & 1 deletion docs/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Will be used if [tool.rope] is configured.
.. code-block:: toml
[tool.rope]
compress_objectdb = true
split_imports = true
config.py
---------
Expand Down
2 changes: 0 additions & 2 deletions docs/default_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ def set_prefs(prefs):
# Should rope save object information or not.
#
# prefs["save_objectdb"] = True
# prefs["compress_objectdb"] = False

# If `True`, rope analyzes each module when it is being saved.
#
Expand All @@ -81,7 +80,6 @@ def set_prefs(prefs):
# Shows whether to save history across sessions.
#
# prefs["save_history"] = True
# prefs["compress_history"] = False

# Set the number spaces used for indenting. According to
# :PEP:`8`, it is best to use 4 spaces. Since most of rope's
Expand Down
11 changes: 5 additions & 6 deletions rope/base/history.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from rope.base import exceptions, change, taskhandle
from rope.base import exceptions, change, taskhandle, utils


class History:
Expand All @@ -15,9 +15,7 @@ def __init__(self, project, maxundos=None):

def _load_history(self):
if self.save:
result = self.project.data_files.read_data(
"history", compress=self.compress, import_=True
)
result = self.project.data_files.read_data("history", import_=True)
if result is not None:
to_change = change.DataToChange(self.project)
for data in result[0]:
Expand Down Expand Up @@ -152,7 +150,7 @@ def write(self):
self._remove_extra_items()
data.append([to_data(change_) for change_ in self.undo_list])
data.append([to_data(change_) for change_ in self.redo_list])
self.project.data_files.write_data("history", data, compress=self.compress)
self.project.data_files.write_data("history", data)

def get_file_undo_list(self, resource):
return [
Expand Down Expand Up @@ -193,8 +191,9 @@ def save(self):
return self.project.prefs.get("save_history", False)

@property
@utils.deprecated("compress_history is no longer supported")
def compress(self):
return self.project.prefs.get("compress_history", False)
return False

def clear(self):
"""Forget all undo and redo information"""
Expand Down
10 changes: 5 additions & 5 deletions rope/base/oi/memorydb.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from rope.base.oi import objectdb
from rope.base import utils


class MemoryDB(objectdb.FileDict):
Expand All @@ -12,9 +13,7 @@ def __init__(self, project, persist=None):
def _load_files(self):
self._files = {}
if self.persist:
result = self.project.data_files.read_data(
"objectdb", compress=self.compress, import_=True
)
result = self.project.data_files.read_data("objectdb", import_=True)
if result is not None:
self._files = result

Expand Down Expand Up @@ -50,11 +49,12 @@ def __delitem__(self, file):

def write(self):
if self.persist:
self.project.data_files.write_data("objectdb", self._files, self.compress)
self.project.data_files.write_data("objectdb", self._files)

@property
@utils.deprecated("compress_objectdb is no longer supported")
def compress(self):
return self.project.prefs.get("compress_objectdb", False)
return False

@property
def persist(self):
Expand Down
8 changes: 6 additions & 2 deletions rope/base/prefs.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ class Prefs:
save_objectdb: bool = field(
default=False, description="Should rope save object information or not."
)
compress_objectdb: bool = False
compress_objectdb: bool = field(
default=False, description="Deprecated. This has no effect",
)
automatic_soa: bool = field(
True, "If `True`, rope analyzes each module when it is being saved."
)
Expand All @@ -92,7 +94,9 @@ class Prefs:
save_history: bool = field(
default=True, description="Shows whether to save history across sessions."
)
compress_history: bool = False
compress_history: bool = field(
default=False, description="Deprecated. This has no effect",
)

indent_size: int = field(
default=4,
Expand Down
44 changes: 10 additions & 34 deletions rope/base/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,16 +379,14 @@ def __init__(self, project):
self.project = project
self.hooks = []

def read_data(self, name, compress=False, import_=False):
def read_data(self, name, import_=False):
if self.project.ropefolder is None:
return None
compress = compress and self._can_compress()
opener = self._get_opener(compress)
file = self._get_file(name, compress)
if not compress and import_:
file = self._get_file(name)
if import_:
self._import_old_files(name)
if file.exists():
input = opener(file.real_path, "rb")
input = open(file.real_path, "rb")
try:
result = []
try:
Expand All @@ -403,12 +401,10 @@ def read_data(self, name, compress=False, import_=False):
finally:
input.close()

def write_data(self, name, data, compress=False):
def write_data(self, name, data):
if self.project.ropefolder is not None:
compress = compress and self._can_compress()
file = self._get_file(name, compress)
opener = self._get_opener(compress)
output = opener(file.real_path, "wb")
file = self._get_file(name)
output = open(file.real_path, "wb")
try:
pickle.dump(data, output, 2)
finally:
Expand All @@ -421,34 +417,14 @@ def write(self):
for hook in self.hooks:
hook()

def _can_compress(self):
try:
import gzip # noqa

return True
except ImportError:
return False

def _import_old_files(self, name):
old = self._get_file(name + ".pickle", False)
new = self._get_file(name, False)
old = self._get_file(name + ".pickle")
new = self._get_file(name)
if old.exists() and not new.exists():
shutil.move(old.real_path, new.real_path)

def _get_opener(self, compress):
if compress:
try:
import gzip

return gzip.open
except ImportError:
pass
return open

def _get_file(self, name, compress):
def _get_file(self, name):
path = self.project.ropefolder.path + "/" + name
if compress:
path += ".gz"
return self.project.get_file(path)


Expand Down
12 changes: 12 additions & 0 deletions rope/contrib/findit.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,18 @@ def __init__(self, occurrence):
self.unsure = occurrence.is_unsure()
self.lineno = occurrence.lineno

def __repr__(self):
pymod = self.resource.project.get_pymodule(self.resource)
return '<{}.{} "{}:{} ({}-{})" at {}>'.format(
self.__class__.__module__,
self.__class__.__name__,
self.resource.path,
self.lineno,
self.region[0],
self.region[1],
hex(id(self)),
)


def _find_locations(finder, resources, job_set):
result = []
Expand Down
27 changes: 27 additions & 0 deletions ropetest/reprtest.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import pathlib
import tempfile
from textwrap import dedent
from unittest.mock import MagicMock

import pytest

from rope.base import libutils, resources, pyobjectsdef
from rope.base.project import Project
from rope.contrib import findit
from rope.refactor import occurrences
from ropetest import testutils


Expand Down Expand Up @@ -123,3 +127,26 @@ def test_repr_pyobjectsdef_pycomprehension_without_associated_resource(project):
assert repr(obj).startswith(
'<rope.base.pyobjectsdef.PyComprehension "::<comprehension>" at 0x'
)


def test_repr_findit_location(project, mod1):
code = dedent("""\
a = 10
b = 20
c = 30
""")
mod1.write(code)

occurrence = MagicMock(
occurrences.Occurrence,
resource=project.get_resource("pkg1/mod1.py"),
lineno=2,
)
occurrence.get_word_range.return_value = (11, 13)
occurrence.is_unsure.return_value = True

obj = findit.Location(occurrence=occurrence)

assert repr(obj).startswith(
'<rope.contrib.findit.Location "pkg1/mod1.py:2 (11-13)" at 0x'
)

0 comments on commit 4544731

Please sign in to comment.