Source code for smdc_perftests.helper

# Copyright (c) 2015,Vienna University of Technology,
# Department of Geodesy and Geoinformation
# All rights reserved.

# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL VIENNA UNIVERSITY OF TECHNOLOGY,
# DEPARTMENT OF GEODESY AND GEOINFORMATION BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

'''
Helper functions
Created on Wed Apr  1 14:50:18 2015

@author: christoph.paulik@geo.tuwien.ac.at
'''

import random
from datetime import timedelta


[docs]def generate_date_list(minimum, maximum, n=500, max_spread=30, min_spread=None): """ Parameters ---------- minimum: datetime minimum datetime maximum: datetime maximum datetime n: int number of dates to generate max_spread: int, optional maximum spread between dates min_spread: int, optional minimum spread between dates Returns ------- date_list: list list of start, end lists The format is a list of lists e.g. [[datetime(2007,1,1), datetime(2007,1,1)], [datetime(2007,1,1), datetime(2007,12,31)]] """ if min_spread is None: min_spread = max_spread random.seed(3000) date_list = [] for i in range(n): delta_days = (maximum - minimum).days day_range = range(delta_days) day_start = random.choice(day_range) start_date = minimum + timedelta(days=day_start) end_date = start_date + \ timedelta(days=random.randint(min_spread, max_spread)) if end_date > maximum: end_date = maximum date_list.append([start_date, end_date]) return date_list