Add pairwise_longest tools

This commit is contained in:
Cédric Krier committed 2023-10-18 23:11:07 +02:00
1 parent 7e2c1f8cbd
commit 420e0a48d6
10 files changed
+43 -50

No files matched your search

+2 -8
View File
@@ -1,6 +1,5 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from itertools import tee, zip_longest
from dateutil.relativedelta import relativedelta
@@ -18,15 +17,10 @@ from trytond.modules.currency.fields import Monetary
from trytond.modules.product import price_digits
from trytond.pool import Pool
from trytond.pyson import Eval, If
from trytond.tools import pairwise_longest
from trytond.transaction import Transaction
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return zip_longest(a, b)
class Agent(ModelView, ModelSQL):
"Commission Reporting per Agent"
__name__ = 'commission.reporting.agent'
@@ -121,7 +115,7 @@ class Agent(ModelView, ModelSQL):
@property
def time_series_all(self):
delta = self._period_delta()
for ts, next_ts in pairwise(self.time_series or []):
for ts, next_ts in pairwise_longest(self.time_series or []):
yield ts
if delta and next_ts:
date = ts.date + delta
+2 -8
View File
@@ -1,6 +1,5 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from itertools import tee, zip_longest
try:
import pygal
@@ -17,15 +16,10 @@ from trytond.model import ModelSQL, ModelView, fields
from trytond.modules.currency.fields import Monetary
from trytond.pool import Pool
from trytond.pyson import Eval, If
from trytond.tools import pairwise_longest
from trytond.transaction import Transaction
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return zip_longest(a, b)
class Abstract(ModelSQL):
company = fields.Many2One(
@@ -122,7 +116,7 @@ class Abstract(ModelSQL):
@property
def time_series_all(self):
delta = self._period_delta()
for ts, next_ts in pairwise(self.time_series or []):
for ts, next_ts in pairwise_longest(self.time_series or []):
yield ts
if delta and next_ts:
date = ts.date + delta
+2 -9
View File
@@ -2,7 +2,6 @@
# this repository contains the full copyright notices and license terms.
from collections import defaultdict
from decimal import Decimal
from itertools import tee, zip_longest
try:
import pygal
@@ -20,17 +19,11 @@ from trytond.model import ModelSQL, ModelView, UnionMixin, fields, sum_tree
from trytond.modules.currency.fields import Monetary
from trytond.pool import Pool
from trytond.pyson import Eval, If
from trytond.tools import grouped_slice, reduce_ids
from trytond.tools import grouped_slice, pairwise_longest, reduce_ids
from trytond.transaction import Transaction
from trytond.wizard import StateAction, StateTransition, Wizard
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return zip_longest(a, b)
class Abstract(ModelSQL):
company = fields.Many2One(
@@ -190,7 +183,7 @@ class Abstract(ModelSQL):
@property
def time_series_all(self):
delta = self._period_delta()
for ts, next_ts in pairwise(self.time_series or []):
for ts, next_ts in pairwise_longest(self.time_series or []):
yield ts
if delta and next_ts:
date = ts.date + delta
@@ -1,8 +1,6 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from itertools import tee, zip_longest
from dateutil.relativedelta import relativedelta
from sql import Literal, Null, With
from sql.aggregate import Count, Min, Sum
@@ -19,15 +17,10 @@ from trytond.model import ModelSQL, ModelView, fields
from trytond.modules.currency.fields import Monetary
from trytond.pool import Pool
from trytond.pyson import Eval, If
from trytond.tools import pairwise_longest
from trytond.transaction import Transaction
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return zip_longest(a, b)
class Abstract(ModelSQL):
company = fields.Many2One(
@@ -201,7 +194,7 @@ class Abstract(ModelSQL):
@property
def time_series_all(self):
delta = self._period_delta()
for ts, next_ts in pairwise(self.time_series or []):
for ts, next_ts in pairwise_longest(self.time_series or []):
yield ts
if delta and next_ts:
date = ts.date + delta
+2 -9
View File
@@ -3,7 +3,6 @@
from collections import defaultdict
from decimal import Decimal
from itertools import tee, zip_longest
from sql import Literal, Null, With
from sql.aggregate import Max, Min, Sum
@@ -21,16 +20,10 @@ from trytond.model import ModelSQL, ModelView, fields, sum_tree
from trytond.modules.currency.fields import Monetary
from trytond.pool import Pool
from trytond.pyson import Eval, If
from trytond.tools import grouped_slice, reduce_ids
from trytond.tools import grouped_slice, pairwise_longest, reduce_ids
from trytond.transaction import Transaction
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return zip_longest(a, b)
class Abstract(ModelSQL, ModelView):
company = fields.Many2One(
@@ -211,7 +204,7 @@ class Abstract(ModelSQL, ModelView):
@property
def time_series_all(self):
delta = self._period_delta()
for ts, next_ts in pairwise(self.time_series or []):
for ts, next_ts in pairwise_longest(self.time_series or []):
yield ts
if delta and next_ts:
date = ts.date + delta