Repository: Princeton-CDH/neuxml
Pull request #12: Update readme, changelog, version
Author: login: rlskoeser
Created: 2025-04-09T18:36:47Z | Merged: 2025-04-09T20:01:47Z

Updates to the readme and changelog, as we discussed and tracked on #8 

As I was working on it, I decided — I think maybe this should be a 1.0 release. It's stable and completely functional. Let me know if there's something I'm not thinking about - if we want to think of this as a pre-release before a solid 1.0, maybe we can call it 0.9 or 0.8 (depending how much work you anticipate).

The change log is missing some things - you need to document what you did with the catalogs.

Also, the migration guide probably should be separate from the dev notes, those seem like different audiences.

We also still need to address the copyright notice in the headers  - I think we should do that before the initial release.


Diff:
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 113cf7a..48beef8 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,15 +1,18 @@
 Change & Version Information
 ============================
 
-The following is a summary of changes and improvements to
-:mod:`neuxml`.  New features in each version should be listed, with
-any necessary information about installation or upgrade notes.
-
-0.1.0
+1.0.0
 -----
 
-* Fork `eulxml <https://github.com/emory-libraries/eulxml>`_
-  package from version `1.1.3` with the new name `neuxml`
+Initial release of `neuxml.` This is a hard fork of `eulxml <https://github.com/emory-libraries/eulxml>`_
+version 1.1.3, which drops Django forms integration and support for older versions of Python.
+
+* Rename `eulxml` to `neuxml` throughout
 * Remove `forms` submodule and drop Django requirements
-* Add GitHub workflow for pypi publication
+* Add GitHub Actions workflow for PyPI publication
 * Update for Python 3.12 compatibility
+* Store a default XML catalog and schemas in codebase and released package
+* Migrate build environment to Hatchling with `pypackage.toml`
+* Migrate test environment from Nose to Pytest
+
+For a record of the pre-existing functionality, refer to the `eulxml changelog <https://github.com/emory-libraries/eulxml/blob/master/CHANGELOG.rst>`_.
diff --git a/APACHE-LICENSE-2.0.txt b/LICENSE
similarity index 100%
rename from APACHE-LICENSE-2.0.txt
rename to LICENSE
diff --git a/README.rst b/README.rst
index 7a024a0..c614854 100644
--- a/README.rst
+++ b/README.rst
@@ -2,60 +2,66 @@
 neuxml
 ======
 
-**package**
-  .. image:: https://img.shields.io/pypi/v/neuxml.svg
-    :target: https://pypi.python.org/pypi/neuxml
-    :alt: PyPI
+.. image:: https://img.shields.io/pypi/v/neuxml.svg
+  :target: https://pypi.python.org/pypi/neuxml
+  :alt: PyPI
 
-  .. image:: https://img.shields.io/github/license/Princeton-CDH/neuxml.svg
-    :alt: License
+.. image:: https://img.shields.io/github/license/Princeton-CDH/neuxml.svg
+  :alt: License
 
-  .. image:: https://img.shields.io/pypi/dm/neuxml.svg
-    :alt: PyPI downloads
+.. image:: https://img.shields.io/pypi/pyversions/neuxml
+  :alt: PyPI - Python Version
 
-neuxml is a `Python <http://www.python.org/>`_ module that provides
-utilities and classes for interacting with XML that allow the
-definition of re-usable XML objects that can be accessed, updated and
-created as standard Python types.
+.. image:: https://img.shields.io/pypi/dm/neuxml.svg
+  :alt: PyPI downloads
 
-**neuxml.xpath** provides functions and classes for parsing XPath
-expressions using `PLY <http://www.dabeaz.com/ply/>`_.
+`neuxml` is a Python library that provides utilities and classes for
+object-oriented access to XML. `neuxml` makes it possible to define reusable
+python classes to access, update, and create XML content as standard Python types.
 
-**neuxml.xmlmap** makes it easier to map XML to Python objects in a
-nicer, more pythonic and object-oriented way than typical DOM access
-usually provides.  XML can be read, modified, and even created from
-scratch (in cases where the configured XPath is simple enough to
-determine the nodes that should be constructed).
+**neuxml.xmlmap** makes it possible to map XML content to Python objects in a
+pythonic and object-oriented way, which is easier to use than typical DOM access.
+With the `neuxml.xmlmap.core.XmlObject` class, XML can be read, modified, and even
+created from scratch in some cases, as long as the configured XPath can
+be used to construct new nodes.
 
-Dependencies
-============
+Object-oriented access depends on **neuxml.xpath**, which provides functions and
+classes for parsing XPath expressions using `PLY <http://www.dabeaz.com/ply/>`_.
 
-**neuxml** depends on `PLY <http://www.dabeaz.com/ply/>`_ and `lxml
-<http://lxml.de/>`_.
+Installation
+============
 
+We recommend using pip to install the officially released versions from PyPI:
 
-Contact Information
-===================
+```console
+pip install neuxml
+```
 
-**eulxml** was created by the `Center for Digital Humanities at Princeton <https://cdh.princeton.edu/>`_.
-
-cdhdevteam@princeton.edu
+It is also possible to install directly from GitHub. Use a branch or tag name,
+e.g. `@develop` or `@1.0` to install a specific tagged version or branch.
 
+```console
+pip install git+https://github.com/Princeton-CDH/neuxml.git@develop#egg=neuxml
+```
 
 License
 =======
+
 **neuxml** is distributed under the Apache 2.0 License.
 
 
 Development History
 ===================
 
-This codebase was forked from a package called **eulxml**, originally developed
-by Emory University Libraries. To see and interact with the full development
-history of **eulxml**, see `eulxml <https://github.com/emory-libraries/eulxml>`_.
+`neuxml` is a hard fork of `eulxml <https://github.com/emory-libraries/eulxml>`_,
+which was originally developed by Emory University Libraries from 2011-2016.
+`neuxml` has been updated for compatibility with current versions of Python
+and drops the support for Django form integration. The full development history
+for the `eulxml` package is available at the original repository:  https://github.com/emory-libraries/eulxml
 
 
-Developer instructions
-======================
+Technical documentation
+=======================
 
-For development instructions and notes, see ``DEVNOTES.rst``.
+For instructions on developer setup, unit testing, XML catalog file management,
+and migrating from `eulxml`, refer to ``DEVNOTES.rst``.
diff --git a/neuxml/__init__.py b/neuxml/__init__.py
index cc74723..b544695 100644
--- a/neuxml/__init__.py
+++ b/neuxml/__init__.py
@@ -20,7 +20,7 @@
 from importlib import resources
 from contextlib import ExitStack
 
-__version__ = '0.1.0'
+__version__ = '1.0.0'
 
 # Paths for XML catalog file & directory
 


Reviews:
user: login: blms
body: Looks good so far! Looks like possibly one or two typos, and I'll add a commit with my changes to the changelog, and then I think we are good to go.
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T18:43:00Z
user: login: rlskoeser
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T19:51:49Z

Review comments:
diff_hunk: @@ -2,60 +2,66 @@
 neuxml
 ======
 
-**package**
-  .. image:: https://img.shields.io/pypi/v/neuxml.svg
-    :target: https://pypi.python.org/pypi/neuxml
-    :alt: PyPI
+.. image:: https://img.shields.io/pypi/v/neuxml.svg
+  :target: https://pypi.python.org/pypi/neuxml
+  :alt: PyPI
 
-  .. image:: https://img.shields.io/github/license/Princeton-CDH/neuxml.svg
-    :alt: License
+.. image:: https://img.shields.io/github/license/Princeton-CDH/neuxml.svg
+  :alt: License
 
-  .. image:: https://img.shields.io/pypi/dm/neuxml.svg
-    :alt: PyPI downloads
+.. image:: https://img.shields.io/pypi/pyversions/viapy
path: README.rst
user: login: blms
body: Should this be `neuxml` instead of `viapy`?
created_at: 2025-04-09T18:41:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2,60 +2,66 @@
 neuxml
 ======
 
-**package**
-  .. image:: https://img.shields.io/pypi/v/neuxml.svg
-    :target: https://pypi.python.org/pypi/neuxml
-    :alt: PyPI
+.. image:: https://img.shields.io/pypi/v/neuxml.svg
+  :target: https://pypi.python.org/pypi/neuxml
+  :alt: PyPI
 
-  .. image:: https://img.shields.io/github/license/Princeton-CDH/neuxml.svg
-    :alt: License
+.. image:: https://img.shields.io/github/license/Princeton-CDH/neuxml.svg
+  :alt: License
 
-  .. image:: https://img.shields.io/pypi/dm/neuxml.svg
-    :alt: PyPI downloads
+.. image:: https://img.shields.io/pypi/pyversions/viapy
+  :alt: PyPI - Python Version
 
-neuxml is a `Python <http://www.python.org/>`_ module that provides
-utilities and classes for interacting with XML that allow the
-definition of re-usable XML objects that can be accessed, updated and
-created as standard Python types.
+.. image:: https://img.shields.io/pypi/dm/neuxml.svg
+  :alt: PyPI downloads
 
-**neuxml.xpath** provides functions and classes for parsing XPath
-expressions using `PLY <http://www.dabeaz.com/ply/>`_.
+`neuxml` is a Python library that provides utilities and classes for
+object-oriented access to XML. `neuxml` makes it possible to define reusable
+python classes to access, update, and create XML content as standard Python types.
 
-**neuxml.xmlmap** makes it easier to map XML to Python objects in a
-nicer, more pythonic and object-oriented way than typical DOM access
-usually provides.  XML can be read, modified, and even created from
-scratch (in cases where the configured XPath is simple enough to
-determine the nodes that should be constructed).
+**neuxml.xmlmap** makes it possible to map XML content to Python objects in a
+pythonic and object-oriented way, which is easier to use than typical DOM access.
+With the `neuxml.xmlmap.core.XmlObject` class, XML can be read, modified, and even
+created from scratch in some cases, as long as the configured XPath can
+be used to construct new nodes.
 
-Dependencies
-============
+Object-oriented access depends on **neuxml.xpath**, which provides functions and
+classes for parsing XPath expressions using `PLY <http://www.dabeaz.com/ply/>`_.
 
-**neuxml** depends on `PLY <http://www.dabeaz.com/ply/>`_ and `lxml
-<http://lxml.de/>`_.
+Installation
+============
 
+We recommend using pip to install the officially released versions from PyPI:
 
-Contact Information
-===================
+```console
+pip install neuxml
+```
 
-**eulxml** was created by the `Center for Digital Humanities at Princeton <https://cdh.princeton.edu/>`_.
-
-cdhdevteam@princeton.edu
+It is also possible to install directly version from GitHub. Use a branch or tag name,
path: README.rst
user: login: blms
body: ```suggestion
It is also possible to install directly from GitHub. Use a branch or tag name,
```
created_at: 2025-04-09T18:41:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2,60 +2,66 @@
 neuxml
 ======
 
-**package**
-  .. image:: https://img.shields.io/pypi/v/neuxml.svg
-    :target: https://pypi.python.org/pypi/neuxml
-    :alt: PyPI
+.. image:: https://img.shields.io/pypi/v/neuxml.svg
+  :target: https://pypi.python.org/pypi/neuxml
+  :alt: PyPI
 
-  .. image:: https://img.shields.io/github/license/Princeton-CDH/neuxml.svg
-    :alt: License
+.. image:: https://img.shields.io/github/license/Princeton-CDH/neuxml.svg
+  :alt: License
 
-  .. image:: https://img.shields.io/pypi/dm/neuxml.svg
-    :alt: PyPI downloads
+.. image:: https://img.shields.io/pypi/pyversions/viapy
path: README.rst
user: login: rlskoeser
body: hahaha yes thanks for catching
created_at: 2025-04-09T19:51:49Z
author_association: CONTRIBUTOR

PR comments:
user: login: blms
created_at: 2025-04-09T18:44:23Z
body: > I think maybe this should be a 1.0 release

Good call, I agree!

> Also, the migration guide probably should be separate from the dev notes, those seem like different audiences.

Makes sense to me, I'll move it in the other PR where I'm working on it.

> We also still need to address the copyright notice in the headers - I think we should do that before the initial release.

New issue?
author_association: CONTRIBUTOR
user: login: rlskoeser
created_at: 2025-04-09T20:01:39Z
body: @blms thanks - created #13 and fixed the typos
author_association: CONTRIBUTOR