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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap and ideas for arrow 馃 #512

Closed
danqing opened this issue Jan 20, 2018 · 28 comments
Closed

Roadmap and ideas for arrow 馃 #512

danqing opened this issue Jan 20, 2018 · 28 comments

Comments

@danqing
Copy link

danqing commented Jan 20, 2018

This thread was originally opened to request GitHub release and changelogs. That has been done, and the thread is now used as roadmap and ideas. Scroll to the bottom to see them. Thanks @crsmithdev and maintainers!

@mdxs
Copy link

mdxs commented Feb 27, 2018

Agree, would appreciate GitHub releases to match the PyPI releases at least.

@jaapz
Copy link
Contributor

jaapz commented Sep 26, 2018

Yep I just spent some time figuring out what's the difference between 0.12.0 and 0.12.1 because HISTORY.md was not updated to list the new (bugfix) release. Turns out it's just some dependency changes so nothing big, but it would be great if the HISTORY.md would be updated to contain this version.

@razzeee
Copy link

razzeee commented Oct 11, 2018

A tag would be very helpful

@systemcatch
Copy link
Collaborator

systemcatch commented Dec 12, 2018

@razzeee I've made tags for versions 0.11.0, 0.12.0 and 0.12.1. Hopefully I'll get around to making releases soon.

@jaapz Plan is to update HISTORY.md with 0.12.1.

edit: We have some releases!

@jaapz
Copy link
Contributor

jaapz commented Dec 13, 2018

@systemcatch thanks, much better!

@systemcatch
Copy link
Collaborator

Version 0.13.0 is going to be released very soon. Quite a few changes will be coming.

@systemcatch
Copy link
Collaborator

Version 0.13.0 is now available on PyPi, I'll make the tag/release on here soon.

@danqing
Copy link
Author

danqing commented Jan 9, 2019

Awesome. Since this is already being done, I'm gonna close this issue. Thanks maintainers!

@danqing danqing closed this as completed Jan 9, 2019
@systemcatch
Copy link
Collaborator

systemcatch commented Jan 19, 2019

I might as well use this issue to talk about future ideas & plans for arrow.

First thing I'm going to do is update the documentation as it's out of date. 鉁旓笍

There's some recurring issues that need to be fixed.

  • .get() can be far too relaxed in parsing strings resulting in hard to detect errors. 鉁旓笍
  • Multiple problems with how daylight savings time is dealt with.

Ideas for dealing with get()

  • Simply break the API as we are below 1.0 (likely a very bad idea).
  • Depreciation warning for 2-3 versions then switch.
  • New keyword arg like 'strict'.
  • Any other solutions welcome.

DST fixes

  • Implement PEP 495 as a starter.

Obviously we need to fix general bugs as well.

Other ideas

  • Change .to() to .to_timezone() since it's not a great method name. Another option could be to simply wrap it.
  • Be able to load isocalender tuples into arrow. 鉁旓笍
  • Full ISO-8601 support.
  • More to be added here......

@systemcatch systemcatch reopened this Jan 19, 2019
@systemcatch systemcatch changed the title Changelog and GitHub release? Roadmap and ideas for arrow Jan 19, 2019
@systemcatch systemcatch pinned this issue Jan 19, 2019
@systemcatch
Copy link
Collaborator

Now that Python 3.7 is supported I'm going to make a new 0.13.1 release shortly.

@jaapz
Copy link
Contributor

jaapz commented Feb 11, 2019

Simply break the API as we are below 1.0 (likely a very bad idea).

Please don't! That will probably make a lot of people unhappy (me included).

* Depreciation warning for 2-3 versions then switch.
* New keyword arg like 'strict'.

I'd personally like the "deprecation warning" approach, maybe with a possible "loose" keyword arg so people who upgrade to the newer version can still fall back to the old behavior? I think the "strict" behaviour should be the default.

When going this route I'd also suggest very explicitly documenting which behaviours are allowed and which are considered "loose".

* Change .to() to .to_timezone() since it's not a great method name. Another option could be to simply wrap it.

I like this, because like you say to is a terribly undescriptive name.

Other than that, I personally think arrow is in a pretty good state. I wouldn't change too much.

@systemcatch
Copy link
Collaborator

Please don't! That will probably make a lot of people unhappy (me included).

Don't worry it's not even an option at this point.

I'd personally like the "deprecation warning" approach, maybe with a possible "loose" keyword arg so people who upgrade to the newer version can still fall back to the old behavior? I think the "strict" behaviour should be the default.

When going this route I'd also suggest very explicitly documenting which behaviours are allowed and which are considered "loose".

The first thing to do is define exactly what we're trying to prevent happening, I basically know what it is in my head but it needs to more thorough/explicit before we can find a solution.

I like this, because like you say to is a terribly undescriptive name.

How do you think we should go about implementing the change?

Other than that, I personally think arrow is in a pretty good state. I wouldn't change too much.

Yup I don't think we need to do any major revamps, just slowly make small improvements and bugfixes.

@jaapz
Copy link
Contributor

jaapz commented Feb 15, 2019

How do you think we should go about implementing the change?

If it were my project I'd release one (or multiple, depending on the other issues that need to be fixed) minor version change where the to_timezone (or to_tz?) method is added, and to is clearly marked as deprecated. Then after some time I'd release a major version (probably along with some other breaking changes) that removes to and clearly documents its removal in favor of to_timezone.

Isn't that how the change from replace to shift was handled/is being handled?

Maybe others could chime in on how they think about this change.

@systemcatch
Copy link
Collaborator

systemcatch commented May 13, 2019

I'll be doing some updates to the docs then releasing 0.13.2 in the next few days.

edit: 0.13.2 is out!

@systemcatch
Copy link
Collaborator

Once the last few tooling update PR's are merged we'll release 0.13.3

@jadchaar
Copy link
Member

@systemcatch could we organize release goals and ideas in a GitHub Project? Having issues we want to tackle clearly laid out could entice more contributors to help out.

@jadchaar
Copy link
Member

jadchaar commented May 26, 2019

  • .get() can be far too relaxed in parsing strings resulting in hard to detect errors.
  • Multiple problems with how daylight savings time is dealt with.

Ideas for dealing with get()

  • Simply break the API as we are below 1.0 (likely a very bad idea).
  • Depreciation warning for 2-3 versions then switch.
  • New keyword arg like 'strict'.
  • Any other solutions welcome.

DST fixes

  • Implement PEP 495 as a starter.

I think it is paramount that we tackle issues with get() and DST since these arrow bugs seem to be the main selling point for pendulum.

@systemcatch
Copy link
Collaborator

@jadchaar that's a good idea, we could use more structure. You mean like a project for each major release version (0.15.0, 0.16.0 etc etc)?

Once the last few tooling update PR's are merged we'll release 0.13.3

On reflection I think the next version should be 0.14.0 since there's some big changes incoming.

@jadchaar
Copy link
Member

@systemcatch We could have a large project board detailing all the features we want to add (e.g. all in the backlog) and each new planned release can be a separate column. We can then pull in issues from the backlog as we see fit for a release and work on the issues.

A full kanban board would not work IMO since open source moves slowly, but I do think it is valuable to organize the ideas into a backlog and pull into a potential release column.

I agree with the 0.14.0 release since we are adding Python 3.8 support and dropping support for Python 3.4.

@systemcatch
Copy link
Collaborator

It's worth looking at what went wrong with the 0.14.0 and 0.14.1 releases since we don't want to make quick releases for broken installs a habit.

Can we be sure that our builds/tests would catch something like this in the future?

@jadchaar
Copy link
Member

jadchaar commented Jun 5, 2019

I agree.

That is the reason I worked to implement tox in the Travis environment. The build issue in 0.14.0 would have been caught by tox in the Travis builds since it runs the tests against a packaged version of arrow (I.e. it will go through the packaging process, thus detecting errors in setup.py).

As for the issue in 0.14.1, that鈥檚 something the tests wouldn鈥檛 catch because it only occurred for individuals that don鈥檛 use UTF-8 encoding (e.g. because they live in a different region). We just need to be cognizant going forward and remember to specify an encoding whenever we open a file for reading or writing, which we probably won鈥檛 do considering the scope of work for arrow.

@systemcatch
Copy link
Collaborator

@jadchaar nice ok well that's good to know.

I've setup a project board for new features in arrow at https://github.com/crsmithdev/arrow/projects/1

What I suggest we do is go through the backlog of old pull requests and close any that are stale and abandoned, but link them to the original issue for reference. Likewise let's have a final clear through the issues to try and thin them down.

For 0.15.0 the choice is either get() improvements or DST. get() produces worse bugs but DST is a big missing feature.

@systemcatch
Copy link
Collaborator

0.14.4 has just been released, it's essentially fixes a bug introduced in 0.14.3 and tries to correct some of the problems with backports.lru_cache that we've never been able to reproduce.

Most of the improvements on the 0.15.0 branch (https://github.com/crsmithdev/arrow/tree/Version-0.15.0) are complete and we're just writing tests + cleaning things up. Read #612 if you haven't already, arrow's parsing will become a lot more robust and strict. There is a chance this will cause some people's code to break, hence all the warnings being thrown in 0.14.3+.

We will release minor patches in 0.14.5 and maybe 0.14.6 to give further time for people to prepare. In terms of a release date date for 0.15.0 I think end of August is a realistic goal.

@jadchaar jadchaar changed the title Roadmap and ideas for arrow Roadmap and ideas for arrow 馃 Aug 16, 2019
@systemcatch
Copy link
Collaborator

0.15.0 is now available! Please use it and give us feedback!

@systemcatch
Copy link
Collaborator

Hey everyone, we're discussing our strategy for Python 2 EOL in #739. You should check it out if you're still using 2.7.

@systemcatch
Copy link
Collaborator

Quick update, me and Jad have been very busy with life stuff over January hence the lack of activity on the repo.

I've been fixing some the DST bugs on another branch, but progress has been very slow.

@systemcatch
Copy link
Collaborator

0.15.6 has just been released, several new features and bugfixes which I'll describe in the changelog.

@systemcatch
Copy link
Collaborator

Hey everybody, we're approaching the 1.0.0 release which is a big thing! 馃槃

I think this issue has served it's purpose and can be closed now.

@systemcatch systemcatch unpinned this issue Feb 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants