<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def filter_and_date(local_root, conf_rel_paths, commits):
 """Get commit Unix timestamps and first matching conf.py path. Exclude commits with no conf.py file. :raise CalledProcessError: Unhandled git command failure. :raise GitError: A commit SHA has not been fetched. :param str local_root: Local path to git root directory. :param iter conf_rel_paths: List of possible relative paths (to git root) of Sphinx conf.py (e.g. docs/conf.py). :param iter commits: List of commit SHAs. :return: Commit time (seconds since Unix epoch) for each commit and conf.py path. SHA keys and [int, str] values. :rtype: dict """

    dates_paths = dict()

    # Filter without docs.
    for commit in commits:
        if commit in dates_paths:
            continue
        command = ['git', 'ls-tree', '--name-only', '-r', commit] + conf_rel_paths
        try:
            output = run_command(local_root, command)
        except CalledProcessError as exc:
            raise GitError('Git ls-tree failed on {0}'.format(commit), exc.output)
        if output:
            dates_paths[commit] = [None, output.splitlines()[0].strip()]

    # Get timestamps by groups of 50.
    command_prefix = ['git', 'show', '--no-patch', '--pretty=format:%ct']
    for commits_group in chunk(dates_paths, 50):
        command = command_prefix + commits_group
        output = run_command(local_root, command)
        timestamps = [int(i) for i in RE_UNIX_TIME.findall(output)]
        for i, commit in enumerate(commits_group):
            dates_paths[commit][0] = timestamps[i]

    # Done.
    return dates_paths