-
Notifications
You must be signed in to change notification settings - Fork 139
Expand file tree
/
Copy pathsetup.py
More file actions
83 lines (66 loc) · 2.76 KB
/
setup.py
File metadata and controls
83 lines (66 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# -*- coding: utf-8 -*-
"""
Copyright 2023 The Dapr Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
import os
import sys
if sys.version_info >= (3, 11):
import tomllib
else:
import tomli as tomllib
from packaging.requirements import Requirement
from setuptools import setup
# Load version in dapr package.
version_info = {}
with open('dapr/ext/fastapi/version.py') as fp:
exec(fp.read(), version_info)
__version__ = version_info['__version__']
def is_release():
return '.dev' not in __version__
name = 'dapr-ext-fastapi'
version = __version__
description = 'The official release of Dapr FastAPI extension.'
long_description = """
This is the FastAPI extension for Dapr.
Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to
build resilient, stateless and stateful microservices that run on the cloud and edge and
embraces the diversity of languages and developer frameworks.
Dapr codifies the best practices for building microservice applications into open,
independent, building blocks that enable you to build portable applications with the language
and framework of your choice. Each building block is independent and you can use one, some,
or all of them in your application.
""".lstrip()
# Get build number from GITHUB_RUN_NUMBER environment variable
build_number = os.environ.get('GITHUB_RUN_NUMBER', '0')
# Read dependencies from pyproject.toml (single source of truth)
with open('pyproject.toml', 'rb') as f:
stable_requires = list(tomllib.load(f)['project']['dependencies'])
setup_kwargs = dict(
name=name,
version=version,
description=description,
long_description=long_description,
install_requires=stable_requires,
)
if not is_release():
dev_version = f'{__version__}{build_number}'
setup_kwargs['name'] += '-dev'
setup_kwargs['version'] = dev_version
setup_kwargs['description'] = 'The developmental release for Dapr FastAPI extension.'
setup_kwargs['long_description'] = (
'This is the developmental release for Dapr FastAPI extension.'
)
setup_kwargs['install_requires'] = [
f'dapr-dev=={dev_version}' if Requirement(r).name == 'dapr' else r for r in stable_requires
]
print(f'package name: {setup_kwargs["name"]}, version: {setup_kwargs["version"]}', flush=True)
setup(**setup_kwargs)