Coverage for /usr/local/lib/python3.11/dist-packages/pyrocko/squirrel/tool/commands/persistent.py: 25%
24 statements
« prev ^ index » next coverage.py v6.5.0, created at 2023-10-25 15:33 +0000
« prev ^ index » next coverage.py v6.5.0, created at 2023-10-25 15:33 +0000
1# http://pyrocko.org - GPLv3
2#
3# The Pyrocko Developers, 21st Century
4# ---|P------/S----------~Lg----------
6'''
7Implementation of :app:`squirrel persistent`.
8'''
10from pyrocko.squirrel import error, environment, database, base
12headline = 'Manage persistent selections.'
15def make_subparser(subparsers):
16 return subparsers.add_parser(
17 'persistent',
18 help=headline,
19 description=headline + '''
21Usually, the contents of files given to Squirrel are made available within the
22application through a runtime selection which is discarded again when the
23application quits. Getting the cached meta-data into the runtime selection can
24be a bottleneck for application startup with large datasets. To speed up
25startup of Squirrel-based applications, persistent selections created with the
26``--persistent`` option can be used.
28This command allows to list and delete persistent selections.
29''')
32def setup(parser):
33 parser.add_argument(
34 'action',
35 choices=['list', 'delete'],
36 help='Select action to perform.')
38 parser.add_argument(
39 'names',
40 nargs='*',
41 help='Persistent selection names.')
44def run(parser, args):
45 env = environment.get_environment()
46 db = database.get_database(env.expand_path(env.database_path))
48 available = sorted(db.get_persistent_names())
49 for name in args.names:
50 if name not in available:
51 raise error.SquirrelError(
52 'No such persistent selection: %s' % name)
54 if args.action == 'list':
55 if not args.names:
56 names = available
57 else:
58 names = args.names
60 for name in names:
61 print(name)
63 elif args.action == 'delete':
64 for name in args.names:
65 sq = base.Squirrel(persistent=name)
66 sq.delete()
68 else:
69 raise error.SquirrelError('Invalid action: %s' % args.action)