From ceb984fd491dab22b292b6e1cb1b5f7a9874378c Mon Sep 17 00:00:00 2001 From: Kyle McCormick Date: Fri, 30 Jan 2026 11:10:30 -0500 Subject: [PATCH] build!: Rename the repo and PyPI project to `openedx-core` --- .github/workflows/pypi-publish.yml | 21 +++++++- CHANGELOG.rst | 28 ----------- README.rst | 36 +++++++------- catalog-info.yaml | 2 +- docs/Makefile | 8 +-- docs/conf.py | 8 +-- docs/decisions/0001-purpose-of-this-repo.rst | 4 +- docs/decisions/0003-content-extensibility.rst | 2 +- docs/decisions/0007-tagging-app.rst | 2 +- docs/decisions/0015-serving-static-assets.rst | 16 +++--- .../decisions/0017-generalized-containers.rst | 2 +- docs/index.rst | 2 +- docs/make.bat | 4 +- docs/testing.rst | 2 +- mysql_test_settings.py | 2 +- .../management/commands/load_components.py | 2 +- openedx.yaml | 20 -------- openedx_learning/lib/admin_utils.py | 4 +- projects/dev.py | 2 +- setup.py | 13 +++-- .../apps/authoring/sections/test_api.py | 2 +- .../apps/authoring/subsections/test_api.py | 2 +- tmp-openedx-learning/setup.py | 49 +++++++++++++++++++ 23 files changed, 125 insertions(+), 108 deletions(-) delete mode 100644 CHANGELOG.rst delete mode 100644 openedx.yaml create mode 100755 tmp-openedx-learning/setup.py diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 98f11efff..92fa0e4d3 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -20,11 +20,28 @@ jobs: - name: Install pip run: pip install -r requirements/pip.txt - - name: Build package + - name: Build the package (openedx-core) run: python setup.py sdist bdist_wheel - - name: Publish to PyPI + - name: Publish openedx-core to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ password: ${{ secrets.PYPI_UPLOAD_TOKEN }} + + # TEMPORARY: Build and publish the transitional openedx-learning shell package. + # TODO: Remove after the transition is complete. + # See https://github.com/openedx/openedx-learning/issues/470 + + - name: Build shell package (openedx-learning) + run: | + cd tmp-openedx-learning + python setup.py sdist bdist_wheel + cd .. + + - name: Publish openedx-learning shell to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_UPLOAD_TOKEN }} + packages-dir: tmp-openedx-learning/dist/ diff --git a/CHANGELOG.rst b/CHANGELOG.rst deleted file mode 100644 index be5c0b25f..000000000 --- a/CHANGELOG.rst +++ /dev/null @@ -1,28 +0,0 @@ -Change Log ----------- - -.. - All enhancements and patches to openedx-learning will be documented - in this file. It adheres to the structure of https://keepachangelog.com/ , - but in reStructuredText instead of Markdown (for ease of incorporation into - Sphinx documentation and the PyPI description). - - This project adheres to Semantic Versioning (https://semver.org/). - -.. There should always be an "Unreleased" section for changes pending release. - -Unreleased -~~~~~~~~~~ - -* Removed usage of ``tox-battery`` and added support for ``tox 4.0`` -* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is - deprecated. See https://github.com/openedx/edx-sphinx-theme/issues/184 for - more details. - -[0.1.0] - 2021-08-08 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Added -_____ - -* First release on PyPI. diff --git a/README.rst b/README.rst index b2be0c147..2dff6732e 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ -Open edX Learning Core (and Tagging) -==================================== +Open edX Core: Foundational Teaching & Learning Content Packages +================================================================ |pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge| |license-badge| @@ -66,11 +66,11 @@ One Time Setup .. code-block:: # Clone the repository - git clone git@github.com:ormsbee/openedx-learning.git - cd openedx-learning + git clone git@github.com:ormsbee/openedx-core.git + cd openedx-core # Set up a virtualenv using virtualenvwrapper with the same name as the repo and activate it - mkvirtualenv -p python3.11 openedx-learning + mkvirtualenv -p python3.11 openedx-core Every time you develop something in this repo @@ -78,7 +78,7 @@ Every time you develop something in this repo .. code-block:: # Activate the virtualenv - workon openedx-learning + workon openedx-core # Grab the latest code git checkout master @@ -147,26 +147,26 @@ For more information about these options, see the `Getting Help`_ page. .. _community Slack workspace: https://openedx.slack.com/ .. _Getting Help: https://openedx.org/getting-help -.. |pypi-badge| image:: https://img.shields.io/pypi/v/openedx-learning.svg - :target: https://pypi.python.org/pypi/openedx-learning/ +.. |pypi-badge| image:: https://img.shields.io/pypi/v/openedx-core.svg + :target: https://pypi.python.org/pypi/openedx-core/ :alt: PyPI -.. |ci-badge| image:: https://github.com/openedx/openedx-learning/workflows/Python%20CI/badge.svg?branch=master - :target: https://github.com/openedx/openedx-learning/actions +.. |ci-badge| image:: https://github.com/openedx/openedx-core/workflows/Python%20CI/badge.svg?branch=master + :target: https://github.com/openedx/openedx-core/actions :alt: CI -.. |codecov-badge| image:: https://codecov.io/github/edx/openedx-learning/coverage.svg?branch=master - :target: https://codecov.io/github/edx/openedx-learning?branch=master +.. |codecov-badge| image:: https://codecov.io/github/edx/openedx-core/coverage.svg?branch=master + :target: https://codecov.io/github/edx/openedx-core?branch=master :alt: Codecov -.. |doc-badge| image:: https://readthedocs.org/projects/openedx-learning/badge/?version=latest - :target: https://openedx-learning.readthedocs.io/en/latest/ +.. |doc-badge| image:: https://readthedocs.org/projects/openedx-core/badge/?version=latest + :target: https://openedx-core.readthedocs.io/en/latest/ :alt: Documentation -.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/openedx-learning.svg - :target: https://pypi.python.org/pypi/openedx-learning/ +.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/openedx-core.svg + :target: https://pypi.python.org/pypi/openedx-core/ :alt: Supported Python versions -.. |license-badge| image:: https://img.shields.io/github/license/edx/openedx-learning.svg - :target: https://github.com/openedx/openedx-learning/blob/master/LICENSE.txt +.. |license-badge| image:: https://img.shields.io/github/license/edx/openedx-core.svg + :target: https://github.com/openedx/openedx-core/blob/master/LICENSE.txt :alt: License diff --git a/catalog-info.yaml b/catalog-info.yaml index d57c3aa29..b9ac69b84 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1,7 +1,7 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: - name: openedx-learning + name: openedx-core spec: type: other lifecycle: unknown diff --git a/docs/Makefile b/docs/Makefile index 0bd821a16..56adb4cd8 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -96,9 +96,9 @@ qthelp: @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/openedx-learning.qhcp" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/openedx-core.qhcp" @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/openedx-learning.qhc" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/openedx-core.qhc" .PHONY: applehelp applehelp: @@ -115,8 +115,8 @@ devhelp: @echo @echo "Build finished." @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/openedx-learning" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/openedx-learning" + @echo "# mkdir -p $$HOME/.local/share/devhelp/openedx-core" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/openedx-core" @echo "# devhelp" .PHONY: epub diff --git a/docs/conf.py b/docs/conf.py index 8d5e0f62f..a607ef162 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,6 +1,6 @@ # pylint: disable=invalid-name """ -openedx-learning documentation build configuration file. +openedx-core documentation build configuration file. This file is execfile()d with the current directory set to its containing dir. @@ -89,7 +89,7 @@ def get_version(*file_paths): top_level_doc = 'index' # General information about the project. -project = 'openedx-learning' +project = 'openedx-core' copyright = f'{datetime.now().year}, edX Inc.' # pylint: disable=redefined-builtin author = 'edX Inc.' project_title = 'Open edX Learning Core' @@ -169,7 +169,7 @@ def get_version(*file_paths): # documentation. # html_theme_options = { - "repository_url": "https://github.com/openedx/openedx-learning", + "repository_url": "https://github.com/openedx/openedx-core", "repository_branch": "main", "path_to_docs": "docs/", "home_page_in_toc": True, @@ -206,7 +206,7 @@ def get_version(*file_paths): # The name for this set of Sphinx documents. # " v documentation" by default. # -# html_title = 'openedx-learning v0.1.0' +# html_title = 'openedx-core v0.1.0' # A shorter title for the navigation bar. Default is the same as html_title. # diff --git a/docs/decisions/0001-purpose-of-this-repo.rst b/docs/decisions/0001-purpose-of-this-repo.rst index 0b913886c..d6b412f0c 100644 --- a/docs/decisions/0001-purpose-of-this-repo.rst +++ b/docs/decisions/0001-purpose-of-this-repo.rst @@ -12,7 +12,7 @@ The code that operates on learning content in Open edX primarily resides in edx- Decision -------- -The openedx-learning repository was created to provide a new place for certain core learning concepts, data models, and APIs to be implemented. These concepts will be more granular and composable than the courses we have today. +The openedx-core repository was created to provide a new place for certain core learning concepts, data models, and APIs to be implemented. These concepts will be more granular and composable than the courses we have today. This would have two long term goals: @@ -24,7 +24,7 @@ This repo will first be piloted with the use case of unit composition in service Consequences ------------ -The edx-platform repo will eventually have openedx-learning as a dependency. As functionality is implemented in openedx-learning (e.g. unit composition for content libraries), edx-platform will make use of it. +The edx-platform repo will eventually have openedx-core as a dependency. As functionality is implemented in openedx-core (e.g. unit composition for content libraries), edx-platform will make use of it. Over time, plugin apps should be able to make use of stable APIs in this repo instead of having to call into edx-platform's Modulestore or Block Transformers. This will serve as a third leg of the new in-process extension mechanisms, where openedx-events provides event notification, openedx-filters provides the ability to intercept and modify the workflow of existing views, and this repo will allow content querying capability. diff --git a/docs/decisions/0003-content-extensibility.rst b/docs/decisions/0003-content-extensibility.rst index 17b73b836..db749b4c9 100644 --- a/docs/decisions/0003-content-extensibility.rst +++ b/docs/decisions/0003-content-extensibility.rst @@ -35,7 +35,7 @@ Learning Core data models will be built with extensibility in mind, with the fol #. It will be possible to migrate existing content data over time, as new plugin apps become available. #. All content and versions of content will have UUIDs to allow for stable references across services. -This layering of related models will add complexity to the data model, but we accept that tradeoff to decouple plugin models from the core application and from other plugins. To make this easier to deal with, openedx-learning should provide abstract models for common use cases, and expose those via a ``models_api.py`` module. This will lower the barrier to entry for developers, and allow us to more easily enforce conventions like setting ``primary_key=True`` with our ``OneToOneField`` relationships. +This layering of related models will add complexity to the data model, but we accept that tradeoff to decouple plugin models from the core application and from other plugins. To make this easier to deal with, openedx-core should provide abstract models for common use cases, and expose those via a ``models_api.py`` module. This will lower the barrier to entry for developers, and allow us to more easily enforce conventions like setting ``primary_key=True`` with our ``OneToOneField`` relationships. Rejected Alternatives --------------------- diff --git a/docs/decisions/0007-tagging-app.rst b/docs/decisions/0007-tagging-app.rst index 9993a49bb..ce5c75fc7 100644 --- a/docs/decisions/0007-tagging-app.rst +++ b/docs/decisions/0007-tagging-app.rst @@ -4,7 +4,7 @@ Context ------- -We want the openedx_tagging app to be useful in different Django projects outside of just openedx-learning and edx-platform. +We want the openedx_tagging app to be useful in different Django projects outside of just openedx-core and edx-platform. Decisions diff --git a/docs/decisions/0015-serving-static-assets.rst b/docs/decisions/0015-serving-static-assets.rst index 969b40725..3fd75ff0f 100644 --- a/docs/decisions/0015-serving-static-assets.rst +++ b/docs/decisions/0015-serving-static-assets.rst @@ -8,18 +8,18 @@ Both Studio and the LMS need to serve course team authored static assets as part This ADR is the synthesis of various ideas that were discussed across a handful of pull requests and issues. These links are provided for extra context, but they are not required to understand this ADR: -* `File uploads + Experimental Media Server #31 `_ -* `File Uploads + media_server app #33 `_ -* `Modeling Files and File Dependencies #70 `_ -* `Serving static assets (disorganized thoughts) #108 `_ +* `File uploads + Experimental Media Server #31 `_ +* `File Uploads + media_server app #33 `_ +* `Modeling Files and File Dependencies #70 `_ +* `Serving static assets (disorganized thoughts) #108 `_ Data Storage Implementation ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The underlying data models live in the openedx-learning repo. The most relevant models are: +The underlying data models live in the openedx-core repo. The most relevant models are: -* `Content in contents/models.py `_ -* `Component and ComponentVersion in components/models.py `_ +* `Content in contents/models.py `_ +* `Component and ComponentVersion in components/models.py `_ Key takeaways about how this data is stored: @@ -60,7 +60,7 @@ Security Requirements **Assets should enforce more granular permissions at the individual Component level.** An important distinction between ContentStore and v2 Content Library assets is that the latter can be directly associated with a Component. As a long term goal, we should be able to make permissions check on per-Component basis. So if a student does not have permission to view a Component for whatever reason (wrong content group, exam hasn't started, etc.), then they should also not have permission to see static assets associated with that component. - The further implication of this requirement is that *permissions checking must be extensible*. The openedx-learning repo will implement the details of how to serve an asset, but it will not have the necessary models and logic to determine whether it is allowed to. + The further implication of this requirement is that *permissions checking must be extensible*. The openedx-core repo will implement the details of how to serve an asset, but it will not have the necessary models and logic to determine whether it is allowed to. **Assets must be served from an entirely different domain than the LMS and Studio instances.** To reduce our chance of maliciously uploaded JavaScript compromising LMS and Studio users, user-uploaded assets must live on an entirely different domain from LMS and Studio (i.e. not just another subdomain). So if our LMS is located at ``sandbox.openedx.org``, the files should be accessed at a URL like ``assets.sandbox.openedx.io``. diff --git a/docs/decisions/0017-generalized-containers.rst b/docs/decisions/0017-generalized-containers.rst index 71d6abb4f..8b30e7e80 100644 --- a/docs/decisions/0017-generalized-containers.rst +++ b/docs/decisions/0017-generalized-containers.rst @@ -92,4 +92,4 @@ This section defines the rules for pruning container versions, explaining when a - In a top-down approach, start the deletion process with the parent container and work your way down to its children. E.g., when pruning Section V2 > Subsection V1 > Unit V3, the deletion process starts in the greater container working its way down to the smaller. - Pruning a container version will not affect the container's history or the children of other container versions, so containers will not be deleted if they are shared by other containers. -.. _PublishableEntity: https://github.com/openedx/openedx-learning/blob/main/openedx_learning/apps/authoring/publishing/models.py#L100-L184 +.. _PublishableEntity: https://github.com/openedx/openedx-core/blob/main/openedx_learning/apps/authoring/publishing/models.py#L100-L184 diff --git a/docs/index.rst b/docs/index.rst index 9845aeddc..a785aedb2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,4 +1,4 @@ -.. openedx-learning documentation top level file, created by +.. openedx-core documentation top level file, created by sphinx-quickstart on Sun Aug 08 00:18:04 2021. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. diff --git a/docs/make.bat b/docs/make.bat index ef59b0ecc..df6de45b4 100644 --- a/docs/make.bat +++ b/docs/make.bat @@ -129,9 +129,9 @@ if "%1" == "qthelp" ( echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\openedx-learning.qhcp + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\openedx-core.qhcp echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\openedx-learning.ghc + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\openedx-core.ghc goto end ) diff --git a/docs/testing.rst b/docs/testing.rst index 8314ea485..ed0887731 100644 --- a/docs/testing.rst +++ b/docs/testing.rst @@ -3,7 +3,7 @@ Testing ======= -openedx-learning has an assortment of test cases and code quality +openedx-core has an assortment of test cases and code quality checks to catch potential problems during development. To run them all in the version of Python you chose for your virtualenv: diff --git a/mysql_test_settings.py b/mysql_test_settings.py index b72e58ab0..19952bfab 100644 --- a/mysql_test_settings.py +++ b/mysql_test_settings.py @@ -1,6 +1,6 @@ """ This is an extension of the default test_settings.py file that uses MySQL for -the backend. While the openedx-learning apps should run fine using SQLite, they +the backend. While the openedx-core apps should run fine using SQLite, they also do some MySQL-specific things around charset/collation settings and row compression. diff --git a/olx_importer/management/commands/load_components.py b/olx_importer/management/commands/load_components.py index 55cd268c8..80320a631 100644 --- a/olx_importer/management/commands/load_components.py +++ b/olx_importer/management/commands/load_components.py @@ -7,7 +7,7 @@ This script manipulates the data models directly, instead of using stable API calls. This is only because those APIs haven't been created yet, and this is trying to validate basic questions about the data model. This is not how apps -are intended to use openedx-learning in the longer term. +are intended to use openedx-core in the longer term. Open Question: If the data model is extensible, how do we know whether a change has really happened between what's currently stored/published for a particular diff --git a/openedx.yaml b/openedx.yaml deleted file mode 100644 index ca94b6acf..000000000 --- a/openedx.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# This file describes this Open edX repo, as described in OEP-2: -# https://open-edx-proposals.readthedocs.io/en/latest/oep-0002-bp-repo-metadata.html#specification - ---- -nick: openedx-learning -tags: - - tools -oeps: - oep-2: true - oep-3: - state: false - reason: TODO - Implement for this application if appropriate - oep-5: - state: false - reason: TODO - Implement for this application if appropriate - oep-18: true - oep-30: - state: true -# This repo isn't included in Open edX releases because it will -# eventually be a dependency of other repos. diff --git a/openedx_learning/lib/admin_utils.py b/openedx_learning/lib/admin_utils.py index ae7602d61..e0378741f 100644 --- a/openedx_learning/lib/admin_utils.py +++ b/openedx_learning/lib/admin_utils.py @@ -19,7 +19,7 @@ class ReadOnlyModelAdmin(admin.ModelAdmin): the Django Admin is potentially dangerous. In general, if you're providing Django Admin interfaces for your - openedx-learning related app data models, you should subclass this class + openedx-core related app data models, you should subclass this class instead of subclassing admin.ModelAdmin directly. """ @@ -48,7 +48,7 @@ def one_to_one_related_model_html(model_obj: models.Model) -> SafeText: So instead of creating a circular dependency by having ``publishing`` referencing ``components``, we use Django model introspection to iterate over all models that have a OneToOneField to the passe din``model_obj``. - This allows us to preserve our dependency boundaries within openedx-learning + This allows us to preserve our dependency boundaries within openedx-core and accomodate any third party apps that might further extend these models. This will output a list with one entry for each related field. diff --git a/projects/dev.py b/projects/dev.py index 1b3b42f47..005bd656d 100644 --- a/projects/dev.py +++ b/projects/dev.py @@ -110,7 +110,7 @@ USE_TZ = True -# openedx-learning required configuration +# openedx-core required configuration OPENEDX_LEARNING = { # Custom file storage, though this is better done through Django's # STORAGES setting in Django >= 4.2 diff --git a/setup.py b/setup.py index 3dbaa6b47..382b2398c 100755 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ #!/usr/bin/env python """ -Package metadata for openedx-learning. +Package metadata for openedx-core. """ import os import re @@ -62,16 +62,15 @@ def is_requirement(line): sys.exit() README = open(os.path.join(os.path.dirname(__file__), 'README.rst')).read() -CHANGELOG = open(os.path.join(os.path.dirname(__file__), 'CHANGELOG.rst')).read() setup( - name='openedx-learning', + name='openedx-core', version=VERSION, - description="""Open edX Learning Core and Tagging.""", - long_description=README + '\n\n' + CHANGELOG, + description="""Open edX Core: Foundational Teaching & Learning Content Packages""", + long_description=README, author='David Ormsbee', - author_email='dave@tcril.org', - url='https://github.com/openedx/openedx-learning', + author_email='dave@axim.org', + url='https://github.com/openedx/openedx-core', packages=find_packages( include=['openedx_learning*', 'openedx_tagging*'], exclude=['*.test', '*.tests'] diff --git a/tests/openedx_learning/apps/authoring/sections/test_api.py b/tests/openedx_learning/apps/authoring/sections/test_api.py index 9ac496735..69e3188f8 100644 --- a/tests/openedx_learning/apps/authoring/sections/test_api.py +++ b/tests/openedx_learning/apps/authoring/sections/test_api.py @@ -15,7 +15,7 @@ # TODO: Turn SubSectionTestCase into SubSectionTestMixin and remove the # test-inherits-tests pylint warning below. -# https://github.com/openedx/openedx-learning/issues/308 +# https://github.com/openedx/openedx-core/issues/308 @ddt.ddt class SectionTestCase(SubSectionTestCase): # pylint: disable=test-inherits-tests """ Test cases for Sections (containers of subsections) """ diff --git a/tests/openedx_learning/apps/authoring/subsections/test_api.py b/tests/openedx_learning/apps/authoring/subsections/test_api.py index 577881a9a..58032c905 100644 --- a/tests/openedx_learning/apps/authoring/subsections/test_api.py +++ b/tests/openedx_learning/apps/authoring/subsections/test_api.py @@ -18,7 +18,7 @@ # TODO: Turn UnitTestCase into UnitTestMixin and remove the # test-inherits-tests pylint warning below. -# https://github.com/openedx/openedx-learning/issues/308 +# https://github.com/openedx/openedx-core/issues/308 @ddt.ddt class SubSectionTestCase(UnitTestCase): # pylint: disable=test-inherits-tests """ Test cases for Subsections (containers of units) """ diff --git a/tmp-openedx-learning/setup.py b/tmp-openedx-learning/setup.py new file mode 100755 index 000000000..2563fd402 --- /dev/null +++ b/tmp-openedx-learning/setup.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +""" +Package metadata for openedx-core. +""" +import os +import sys + +from setuptools import find_packages, setup + +# @@TODO update this before merging so that it's higher than the previous openedx-learning version, +# but lower than the new openedx-core version. +VERSION = "0.32.0" + +if sys.argv[-1] == 'tag': + print("Tagging the version on github:") + os.system("git tag -a %s -m 'version %s'" % (VERSION, VERSION)) + os.system("git push --tags") + sys.exit() + +setup( + name='openedx-core', + version=VERSION, + description="""Open edX Learning Core (and Tagging)""", + long_description=""" +**This package has been renamed to [openedx-core](https://pypi.org/project/openedx-core/)!** +""" + author='David Ormsbee', + author_email='dave@axim.org', + url='https://github.com/openedx/openedx-learning', + packages=[], + include_package_data=True, + install_requires=["openedx-core"], + python_requires=">=3.11", + license="AGPL 3.0", + zip_safe=False, + keywords='Python edx', + classifiers=[ + 'Development Status :: 7 - Inactive', + 'Framework :: Django', + 'Framework :: Django :: 4.2', + 'Framework :: Django :: 5.2', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', + 'Natural Language :: English', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + ], +)