Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DEV New data model and proposal for 0.10.0 #400

Merged
merged 5 commits into from
May 4, 2020

Conversation

drewejohnson
Copy link
Collaborator

@drewejohnson drewejohnson commented Apr 27, 2020

This PR introduces a new data model and guidelines for a major overhaul of the package. The goal of these changes are

  1. Little to no high-level API breaks
  2. Less superfluous code like the settings interface
  3. Generic, library-like readers and containers
  4. Better inheritance

The ease of serpentTools.read, plotting, and filtering will not be disrupted in this period.

To summarize, I propose the following.

  1. Pause development on the master 0.9.x branch
  2. Start developing serpentTools.next [name up for discussion] module on the develop branch
  3. Break existing readers into classes that parse the files, and classes that store file data - ENH/API Separate reading of file from storing file data #335
  4. After an appropriate beta and release candidate process, version 0.10.0 will be released, allowing users and developers to experiment with serpentTools.next
  5. Version 0.11.0 will move the serpentTools.next module into the main API, with warnings that importing from serpentTools.next is discouraged
  6. Version 0.12.0 will fully remove serpentTools.next

Why

Main benefits I see for this approach come primarily from comments made in #335. By separating the readers from the objects that store file data, we

  1. have a more general framework,
  2. can easily support changes to the Serpent output format, and
  3. can easily support and provide exporting methods to other file formats

There are lot of other benefits and more reasoning in the updated docs/develop/datamodel.rst file.

Discussion

I intend on leaving this up for about a week or more, and alerting users through the mailing list about this change. Any comments or suggestions will be greatly appreciated, and also to let users know that there may be some bumps transitioning between new versions.

The goal is to make this change as smooth as possible, nearly transparent for basic serpentTools.read processing. The main gains, but also changes, will be experienced by people who use serpentTools like a library. I will update this PR message with a link to our sub-section in the Serpent forum for additional discussion.
Forum post: https://ttuki.vtt.fi/serpent/viewtopic.php?f=30&t=3388#p10633

- Updated numpydoc page
- Use a fake example so that it doesn't have to be updated
- Fix some bad links and references
Will be introducing new recommendations for the next big phase
of development
Spread across 0.11.0 [deprecate] and 0.12.0 [remove]
@drewejohnson drewejohnson added discussion developer Developer-focused changes labels Apr 27, 2020
@drewejohnson drewejohnson added this to the 0.9.3 milestone Apr 27, 2020
@drewejohnson drewejohnson requested a review from DanKotlyar April 27, 2020 17:27
@drewejohnson drewejohnson merged commit 4447ffb into CORE-GATECH-GROUP:master May 4, 2020
@drewejohnson drewejohnson deleted the lib2-notes branch May 4, 2020 16:36
drewejohnson added a commit to drewejohnson/serpent-tools that referenced this pull request May 23, 2020
Backport of features included since 0.9.3 release

Includes the following PRs

git log --online --pretty="%s" --merges 0.9.3...

Merge pull request CORE-GATECH-GROUP#407 from drewejohnson/fix-readme
Merge pull request CORE-GATECH-GROUP#406 from drewejohnson/r0.9.3
Merge pull request CORE-GATECH-GROUP#405 from nicoloabrate/master
Merge pull request CORE-GATECH-GROUP#404 from drewejohnson/update-git-attr
Merge pull request CORE-GATECH-GROUP#402 from drewejohnson/xsplot-labels
Merge pull request CORE-GATECH-GROUP#400 from drewejohnson/lib2-notes
Merge pull request CORE-GATECH-GROUP#399 from CORE-GATECH-GROUP/docs-sphinx-2.0
Merge pull request CORE-GATECH-GROUP#397 from drewejohnson/port-list-of-arrays
Merge pull request CORE-GATECH-GROUP#398 from drewejohnson/det-supers
Merge pull request CORE-GATECH-GROUP#396 from drewejohnson/df-arg-renaming
Merge pull request CORE-GATECH-GROUP#394 from drewejohnson/0.9.3-update-docs
Merge pull request CORE-GATECH-GROUP#395 from drewejohnson/hist-branch-dictlike
Merge pull request CORE-GATECH-GROUP#393 from drewejohnson/less-metadata
Merge pull request CORE-GATECH-GROUP#392 from drewejohnson/better-access
Merge pull request CORE-GATECH-GROUP#391 from drewejohnson/dep-dataframe
Merge pull request CORE-GATECH-GROUP#390 from drewejohnson/api-dep-attributes
Merge pull request CORE-GATECH-GROUP#388 from drewejohnson/xsplot-branch
Merge pull request CORE-GATECH-GROUP#378 from drewejohnson/better-build
Merge pull request CORE-GATECH-GROUP#376 from drewejohnson/unbundle-data-files
Merge pull request CORE-GATECH-GROUP#370 from drewejohnson/results-loa
Merge pull request CORE-GATECH-GROUP#369 from drewejohnson/merge-0.9.1-develop
drewejohnson added a commit to drewejohnson/serpent-tools that referenced this pull request Aug 31, 2020
Interface outside of the rc object for expanding variable groups.
Abstracted away because the setting interface will eventually
be removed (GH CORE-GATECH-GROUP#339) as each reader (built from CORE-GATECH-GROUP#335 and CORE-GATECH-GROUP#400)
will control their own settings.
drewejohnson added a commit to drewejohnson/serpent-tools that referenced this pull request Aug 31, 2020
Interface outside of the rc object for expanding variable groups.
Abstracted away because the setting interface will eventually
be removed (GH CORE-GATECH-GROUP#339) as each reader (built from CORE-GATECH-GROUP#335 and CORE-GATECH-GROUP#400)
will control their own settings.
drewejohnson added a commit to drewejohnson/serpent-tools that referenced this pull request Aug 31, 2020
Interface outside of the rc object for expanding variable groups.
Abstracted away because the setting interface will eventually
be removed (GH CORE-GATECH-GROUP#339) as each reader (built from CORE-GATECH-GROUP#335 and CORE-GATECH-GROUP#400)
will control their own settings.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
developer Developer-focused changes discussion
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants