Mercurial > piecrust2
annotate piecrust/sources/list.py @ 1188:a7c43131d871
bake: Fix file write flushing problem with Python 3.8+
Writing the cache files fails in Python 3.8 because it looks like flushing
behaviour has changed. We need to explicitly flush. And even then, in very
rare occurrences, it looks like it can still run into racing conditions,
so we do a very hacky and ugly "retry" loop when fetching cached data :(
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 15 Jun 2021 22:36:23 -0700 |
parents | 8adc27285d93 |
children |
rev | line source |
---|---|
857
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 from piecrust.sources.base import ContentSource |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 class ListSource(ContentSource): |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 def __init__(self, inner_source, items): |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 super().__init__( |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 inner_source.app, inner_source.name, inner_source.config) |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 self.inner_source = inner_source |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 self.items = items |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 def openItem(self, item, mode='r', **kwargs): |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 return self.inner_source.openItem(item, mode, **kwargs) |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 def getItemMtime(self, item): |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 return self.inner_source.getItemMtime(item) |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 def getContents(self, group): |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 return self.items |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
21 def getRelatedContents(self, item, relationship): |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 return self.inner_source.getRelatedContents(item, relationship) |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 |
989
8adc27285d93
bake: Big pass on bake performance.
Ludovic Chabant <ludovic@chabant.com>
parents:
857
diff
changeset
|
24 def findContentFromRoute(self, route_params): |
857
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 # Can't find items... we could find stuff that's not in our list? |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 raise NotImplementedError( |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 "The list source doesn't support finding items.") |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
29 def getSupportedRouteParameters(self): |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 return self.inner_source.getSupportedRouteParameters() |
d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
31 |