Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

setup.py 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #!/usr/bin/env python
  2. """
  3. Installation script:
  4. To release a new version to PyPi:
  5. - Ensure the version is correctly set in oscar.__init__.py
  6. - Run: make release
  7. """
  8. import os
  9. import re
  10. import subprocess
  11. import sys
  12. # pylint: disable=deprecated-module
  13. from distutils.command import build as build_module
  14. from setuptools import setup, find_packages
  15. PROJECT_DIR = os.path.dirname(__file__)
  16. sys.path.append(os.path.join(PROJECT_DIR, "src"))
  17. from oscar import get_version # noqa isort:skip
  18. class BuildNPM(build_module.build):
  19. def run(self):
  20. subprocess.check_call(["npm", "install"])
  21. subprocess.check_call(["npm", "run", "build"])
  22. super().run()
  23. install_requires = [
  24. "setuptools>=51.3.3",
  25. "django>=3.2,<4.3",
  26. # PIL is required for image fields, Pillow is the "friendly" PIL fork
  27. "pillow>=6.0",
  28. # We use the ModelFormSetView from django-extra-views for the basket page
  29. "django-extra-views>=0.13,<0.15",
  30. # Search support
  31. "django-haystack>=3.0b1",
  32. # Treebeard is used for categories
  33. "django-treebeard>=4.3.0",
  34. # Babel is used for currency formatting
  35. "Babel>=1.0,<3.0",
  36. # For manipulating search URLs
  37. "purl>=0.7",
  38. # For phone number field
  39. "phonenumbers",
  40. "django-phonenumber-field>=4.0.0,<7.0.0",
  41. # Used for oscar.test.factories
  42. "factory-boy>=3.0,<3.3",
  43. # Used for automatically building larger HTML tables
  44. "django-tables2>=2.3,<2.4",
  45. # Used for manipulating form field attributes in templates (eg: add
  46. # a css class)
  47. "django-widget-tweaks>=1.4.1",
  48. ]
  49. sorl_thumbnail_version = "sorl-thumbnail>=12.9,<12.10"
  50. easy_thumbnails_version = "easy-thumbnails>=2.7,<2.8.6"
  51. docs_requires = [
  52. "Sphinx>=5.0",
  53. "sphinxcontrib-spelling==7.5.1",
  54. "sphinx_rtd_theme==1.0.0",
  55. "sphinx-issues==3.0.1",
  56. sorl_thumbnail_version,
  57. easy_thumbnails_version,
  58. ]
  59. test_requires = [
  60. "WebTest>=2.0,<2.1",
  61. "coverage>=5.4,<5.5",
  62. "django-webtest>=1.9,<1.10",
  63. "psycopg2-binary>=2.8,<2.10",
  64. "pytest-django>=3.7,<3.9",
  65. "pytest-xdist>=2.2,<3",
  66. "tox>=3.21,<4",
  67. "freezegun>=1.1,<2",
  68. "pytz",
  69. "vdt.versionplugin.wheel",
  70. sorl_thumbnail_version,
  71. easy_thumbnails_version,
  72. ]
  73. with open(os.path.join(PROJECT_DIR, "README.rst"), encoding="utf-8") as fh:
  74. long_description = re.sub(
  75. "^.. start-no-pypi.*^.. end-no-pypi", "", fh.read(), flags=re.M | re.S
  76. )
  77. setup(
  78. name="django-oscar",
  79. version=get_version(),
  80. url="https://github.com/django-oscar/django-oscar",
  81. author="David Winterbottom",
  82. author_email="david.winterbottom@gmail.com",
  83. description="A domain-driven e-commerce framework for Django",
  84. long_description=long_description,
  85. keywords="E-commerce, Django, domain-driven",
  86. license="BSD",
  87. platforms=["linux"],
  88. include_package_data=True,
  89. package_dir={"": "src"},
  90. packages=find_packages("src"),
  91. python_requires=">=3.8",
  92. install_requires=install_requires,
  93. extras_require={
  94. "docs": docs_requires,
  95. "test": test_requires,
  96. "sorl-thumbnail": [sorl_thumbnail_version],
  97. "easy-thumbnails": [easy_thumbnails_version],
  98. },
  99. cmdclass={"build": BuildNPM},
  100. classifiers=[
  101. "Development Status :: 5 - Production/Stable",
  102. "Environment :: Web Environment",
  103. "Framework :: Django",
  104. "Framework :: Django :: 3.2",
  105. "Framework :: Django :: 4.0",
  106. "Framework :: Django :: 4.1",
  107. "Framework :: Django :: 4.2",
  108. "Intended Audience :: Developers",
  109. "License :: OSI Approved :: BSD License",
  110. "Operating System :: Unix",
  111. "Programming Language :: Python",
  112. "Programming Language :: Python :: 3",
  113. "Programming Language :: Python :: 3.8",
  114. "Programming Language :: Python :: 3.9",
  115. "Programming Language :: Python :: 3.10",
  116. "Programming Language :: Python :: 3.11",
  117. "Topic :: Software Development :: Libraries :: Application Frameworks",
  118. ],
  119. )
  120. # Show contributing instructions if being installed in 'develop' mode
  121. if len(sys.argv) > 1 and sys.argv[1] == "develop":
  122. docs_url = "https://django-oscar.readthedocs.io/en/latest/internals/contributing/index.html"
  123. mailing_list = "django-oscar@googlegroups.com"
  124. mailing_list_url = "https://groups.google.com/forum/?fromgroups#!forum/django-oscar"
  125. twitter_url = "https://twitter.com/django_oscar"
  126. msg = (
  127. "You're installing Oscar in 'develop' mode so I presume you're thinking\n"
  128. "of contributing:\n\n"
  129. "(a) That's brilliant - thank you for your time\n"
  130. "(b) If you have any questions, please use the mailing list:\n %s\n"
  131. " %s\n"
  132. "(c) There are more detailed contributing guidelines that you should "
  133. "have a look at:\n %s\n"
  134. "(d) Consider following @django_oscar on Twitter to stay up-to-date\n"
  135. " %s\n\nHappy hacking!"
  136. ) % (mailing_list, mailing_list_url, docs_url, twitter_url)
  137. line = "=" * 82
  138. print(("\n%s\n%s\n%s" % (line, msg, line)))