madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged.
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
import subprocess
import copy
import subprocess
import copy
-from .task import Task, TaskQuerySet
+from .task import Task, TaskQuerySet, ReadOnlyDictView
from .filters import TaskWarriorFilter
from .serializing import local_zone
from .filters import TaskWarriorFilter
from .serializing import local_zone
self._config = None
self.version = self._get_version()
self._config = None
self.version = self._get_version()
'confirmation': 'no',
'dependency.confirmation': 'no', # See TW-1483 or taskrc man page
'recurrence.confirmation': 'no', # Necessary for modifying R tasks
'confirmation': 'no',
'dependency.confirmation': 'no', # See TW-1483 or taskrc man page
'recurrence.confirmation': 'no', # Necessary for modifying R tasks
data_location = os.path.expanduser(data_location)
if create and not os.path.exists(data_location):
os.makedirs(data_location)
data_location = os.path.expanduser(data_location)
if create and not os.path.exists(data_location):
os.makedirs(data_location)
- self.config['data.location'] = data_location
+ self.overrides['data.location'] = data_location
self.tasks = TaskQuerySet(self)
def _get_command_args(self, args, config_override=None):
command_args = ['task', 'rc:{0}'.format(self.taskrc_location)]
self.tasks = TaskQuerySet(self)
def _get_command_args(self, args, config_override=None):
command_args = ['task', 'rc:{0}'.format(self.taskrc_location)]
- config = self.config.copy()
- config.update(config_override or dict())
- for item in config.items():
+ overrides = self.overrides.copy()
+ overrides.update(config_override or dict())
+ for item in overrides.items():
command_args.append('rc.{0}={1}'.format(*item))
command_args.extend(map(six.text_type, args))
return command_args
command_args.append('rc.{0}={1}'.format(*item))
command_args.extend(map(six.text_type, args))
return command_args
def config(self):
# First, check if memoized information is available
if self._config:
def config(self):
# First, check if memoized information is available
if self._config:
- return copy.deepcopy(self._config)
# If not, fetch the config using the 'show' command
raw_output = self.execute_command(
# If not, fetch the config using the 'show' command
raw_output = self.execute_command(
config[match.group('key')] = match.group('value').strip()
# Memoize the config dict
config[match.group('key')] = match.group('value').strip()
# Memoize the config dict
+ self._config = ReadOnlyDictView(config)
- return copy.deepcopy(config)
def execute_command(self, args, config_override=None, allow_failure=True,
return_all=False):
def execute_command(self, args, config_override=None, allow_failure=True,
return_all=False):