Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ at licenses/LICENSE-[project].txt.
(ALv2 License) jqclock v2.3.0 (https://github.com/JohnRDOrazio/jQuery-Clock-Plugin)
(ALv2 License) bootstrap3-typeahead v4.0.2 (https://github.com/bassjobsen/Bootstrap-3-Typeahead)
(ALv2 License) connexion v2.7.0 (https://github.com/zalando/connexion)
(ALv2 License) python-daemon v2.3.2(https://pagure.io/python-daemon/)

========================================================================
MIT licenses
Expand Down
2 changes: 1 addition & 1 deletion airflow/_vendor/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ the `_vendor` package.
All Vendored libraries must follow these rules:

1. Vendored libraries must be pure Python--no compiling (so that we do not have to release multi-platform airflow packages on PyPI).
2. Source code for the libary is included in this directory.
2. Source code for the library is included in this directory.
3. License must be included in this repo and in the [LICENSE](../../LICENSE) file and in the
[licenses](../../licenses) folder.
4. Requirements of the library become requirements of airflow core.
Expand Down
52 changes: 52 additions & 0 deletions airflow/_vendor/daemon/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# daemon/__init__.py
# Part of ‘python-daemon’, an implementation of PEP 3143.
#
# This is free software, and you are welcome to redistribute it under
# certain conditions; see the end of this file for copyright
# information, grant of license, and disclaimer of warranty.

""" Library to implement a well-behaved Unix daemon process.

This library implements the well-behaved daemon specification of
:pep:`3143`, “Standard daemon process library”.

A well-behaved Unix daemon process is tricky to get right, but the
required steps are much the same for every daemon program. A
`DaemonContext` instance holds the behaviour and configured
process environment for the program; use the instance as a context
manager to enter a daemon state.

Simple example of usage::

import daemon

from spam import do_main_program

with daemon.DaemonContext():
do_main_program()

Customisation of the steps to become a daemon is available by
setting options on the `DaemonContext` instance; see the
documentation for that class for each option.
"""

from .daemon import DaemonContext


__all__ = ['DaemonContext']


# Copyright © 2009–2022 Ben Finney <ben+python@benfinney.id.au>
# Copyright © 2006 Robert Niederreiter
#
# This is free software: you may copy, modify, and/or distribute this work
# under the terms of the Apache License, version 2.0 as published by the
# Apache Software Foundation.
# No warranty expressed or implied. See the file ‘LICENSE.ASF-2’ for details.


# Local variables:
# coding: utf-8
# mode: python
# End:
# vim: fileencoding=utf-8 filetype=python :
141 changes: 141 additions & 0 deletions airflow/_vendor/daemon/_metadata.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# daemon/_metadata.py
# Part of ‘python-daemon’, an implementation of PEP 3143.
#
# This is free software, and you are welcome to redistribute it under
# certain conditions; see the end of this file for copyright
# information, grant of license, and disclaimer of warranty.

""" Package metadata for the ‘python-daemon’ distribution. """

import datetime
import json

import pkg_resources


distribution_name = "python-daemon"
version_info_filename = "version_info.json"


def get_distribution(name):
""" Get the `Distribution` instance for distribution `name`.

:param name: The distribution name for the query.
:return: The `pkg_resources.Distribution` instance, or
``None`` if the distribution instance is not found.
"""
distribution = None
try:
distribution = pkg_resources.get_distribution(name)
except pkg_resources.DistributionNotFound:
pass

return distribution


def get_distribution_version_info(
distribution, filename=version_info_filename):
""" Get the version info from the installed distribution.

:param distribution: The `pkg_resources.Distribution` instance
representing the Python package to interrogate.
:param filename: Base filename of the version info resource.
:return: The version info as a mapping of fields.

The version info is stored as a metadata file in the
`distribution`.

If the `distribution` is ``None``, or the version info
metadata file is not found, the return value mapping fields
have placeholder values.
"""
version_info = {
'release_date': "UNKNOWN",
'version': "UNKNOWN",
'maintainer': "UNKNOWN",
}

if distribution is not None:
if distribution.has_metadata(filename):
content = distribution.get_metadata(filename)
version_info = json.loads(content)

return version_info


distribution = get_distribution(distribution_name)
version_info = get_distribution_version_info(distribution)

version_installed = version_info['version']


author_name = "Ben Finney"
author_email = "ben+python@benfinney.id.au"
author = "{name} <{email}>".format(name=author_name, email=author_email)


class YearRange:
""" A range of years spanning a period. """

def __init__(self, begin, end=None):
self.begin = begin
self.end = end

def __str__(self):
text = "{range.begin:04d}".format(range=self)
if self.end is not None:
if self.end > self.begin:
text = "{range.begin:04d}–{range.end:04d}".format(range=self)
return text


def make_year_range(begin_year, end_date=None):
""" Construct the year range given a start and possible end date.

:param begin_year: The beginning year (text, 4 digits) for the
range.
:param end_date: The end date (text, ISO-8601 format) for the
range, or a non-date token string.
:return: The range of years as a `YearRange` instance.

If the `end_date` is not a valid ISO-8601 date string, the
range has ``None`` for the end year.
"""
begin_year = int(begin_year)

try:
end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d")
except (TypeError, ValueError):
# Specified end_date value is not a valid date.
end_year = None
else:
end_year = end_date.year

year_range = YearRange(begin=begin_year, end=end_year)

return year_range


copyright_year_begin = "2001"
build_date = version_info['release_date']
copyright_year_range = make_year_range(copyright_year_begin, build_date)

copyright = "Copyright © {year_range} {author} and others".format(
year_range=copyright_year_range, author=author)
license = "Apache-2"
url = "https://pagure.io/python-daemon/"


# Copyright © 2008–2022 Ben Finney <ben+python@benfinney.id.au>
#
# This is free software: you may copy, modify, and/or distribute this work
# under the terms of the Apache License, version 2.0 as published by the
# Apache Software Foundation.
# No warranty expressed or implied. See the file ‘LICENSE.ASF-2’ for details.


# Local variables:
# coding: utf-8
# mode: python
# End:
# vim: fileencoding=utf-8 filetype=python :
Loading