# 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.

[build-system]
requires = ["setuptools>=61", "wheel", "setuptools_scm>=8.0"]
build-backend = "setuptools.build_meta"

[project]
name = "osm_common"
description = "OSM common utilities"
readme = "README.rst"
authors = [
  {name = "ETSI OSM", email = "osmsupport@etsi.com"}
]
maintainers = [
  {name = "ETSI OSM", email = "osmsupport@etsi.com"}
]
license = "Apache-2.0"
dynamic = ["dependencies", "version"]

[tool.setuptools_scm]
write_to = "src/osm_common/_version.py"
version_scheme = "guess-next-dev"
local_scheme = "node-and-date"

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.dynamic]
dependencies = { file = ["./requirements.txt"] }

