{"action":"opened","issue":{"url":"https://api.github.com/repos/crsmithdev/arrow/issues/285","labels_url":"https://api.github.com/repos/crsmithdev/arrow/issues/285/labels{/name}","comments_url":"https://api.github.com/repos/crsmithdev/arrow/issues/285/comments","events_url":"https://api.github.com/repos/crsmithdev/arrow/issues/285/events","html_url":"https://github.com/crsmithdev/arrow/issues/285","id":119345914,"number":285,"title":"(not an issue) how to extend arrow?","user":{"login":"wsw70","id":1345886,"avatar_url":"https://avatars.githubusercontent.com/u/1345886?v=3","gravatar_id":"","url":"https://api.github.com/users/wsw70","html_url":"https://github.com/wsw70","followers_url":"https://api.github.com/users/wsw70/followers","following_url":"https://api.github.com/users/wsw70/following{/other_user}","gists_url":"https://api.github.com/users/wsw70/gists{/gist_id}","starred_url":"https://api.github.com/users/wsw70/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wsw70/subscriptions","organizations_url":"https://api.github.com/users/wsw70/orgs","repos_url":"https://api.github.com/users/wsw70/repos","events_url":"https://api.github.com/users/wsw70/events{/privacy}","received_events_url":"https://api.github.com/users/wsw70/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-11-29T08:10:13Z","updated_at":"2015-11-29T08:10:13Z","closed_at":null,"body":"Arrow is fantastic, I do not use anything else for date/time manipulations.\r\n\r\nI now would like to expand it a bit, by adding a method for the `Arrow` object. I saw there was a [previous discussion](https://github.com/crsmithdev/arrow/issues/19) about a similar subject, and I tried a suggestion from there:\r\n\r\n```python\r\nimport arrow\r\nimport arrow.arrow\r\n\r\nclass MyArrow(arrow.arrow.Arrow):\r\n    def __init__(self, year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None):\r\n        super().__init__(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)\r\n\r\n    def nextday(self):\r\n        print(\"tomorrow is {day}\".format(day=self.replace(days=+1).day))\r\n\r\nf = arrow.factory(MyArrow)\r\nprint(f.now())\r\nprint(f.now().nextday())\r\n```\r\n\r\nIt does not work as `arrow.factory()` is not implemented. \r\n\r\n```\r\nTraceback (most recent call last):\r\n  File \"C:/Users/yop/.PyCharm50/config/scratches/scratch_38\", line 10, in <module>\r\n    f = arrow.factory(MyArrow)\r\nTypeError: 'module' object is not callable\r\n```\r\n\r\nDoes that mean that the idea was implemented in another way? \r\n\r\nI am trying to wrap my head around the `ArrowFactory` and `Arrow` classes. My naive understanding is that calling `ArrowFactory().one_of_the_methods()` will return an `Arrow` object. In that case I do not understand how to solve the problem of\r\n* creating my own `Arrow`class, with the relevant method\r\n* creating my own `ArrowFactoryè class which inherits `Arrow` (from the docs)\r\n* and have the capacity to use `get()`, `now()`, etc. which are methods of `ArrowFactory`\r\n\r\n\r\n"}}