imio.history


Nameimio.history JSON
Version 1.35 PyPI version JSON
download
home_pagehttp://pypi.python.org/pypi/imio.history
SummaryImio history
upload_time2024-06-07 09:20:16
maintainerNone
docs_urlNone
authorIMIO
requires_pythonNone
licenseGPL
keywords python plone
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: https://github.com/IMIO/imio.history/actions/workflows/main.yml/badge.svg?branch=master
    :target: https://github.com/IMIO/imio.history/actions/workflows/main.yml

.. image:: https://coveralls.io/repos/IMIO/imio.history/badge.svg
  :target: https://coveralls.io/r/IMIO/imio.history

.. image:: http://img.shields.io/pypi/v/imio.history.svg
   :alt: PyPI badge
   :target: https://pypi.org/project/imio.history

imio.history
============

Manage object history using a table and highlight history link when necessary

The goal is to be able to manage several histories for various needs on a content and display it together, merged in the same view.

Adapters implementing the `IImioHistory` interface
--------------------------------------------------

To do this, we must ensure that the histories use same structure.  We base the work on the `workflow_history`, though a custom history may have additional keys if necessary.

The workflow_history could looks like :

.. code-block:: python

    {'my_custom_workflow': (
        {'action': None, 'review_state': 'private', 'actor': 'user_id1',
        'comments': '', 'time': DateTime('2018/03/27 09:51:55.303708 GMT+2')},
        {'action': 'publish', 'review_state': 'published', 
        'comments': '', 'actor': 'user_id1', 'time': DateTime('2018/03/29 15:35:24.646745 GMT+2')},
        {'action': 'retract', 'review_state': 'private',
        'comments': 'My comments', 'actor': 'admin', 'time': DateTime('2018/03/29 15:35:27.246169 GMT+2')})}

Histories are made available thru a named adapter that implements the `IImioHistory` interface.

By default, adapters are provided for the `workflow_history` (`ImioWfHistoryAdapter`) and revisions history (`ImioRevisionHistoryAdapter`).

The `@@historyview`
-------------------

The `@@historyview` will display the histories as a table with each information in a column : action, author, date/time, comments.

You define in the `histories_to_handle` attribute of the view, what histories (named adapters) it should display.

Every histories are sorted together on the `time` key as it uses the same structure.

Translations
------------

This product has been translated into

- French.

- Spanish.

You can contribute for any message missing or other new languages, join us at `PloneGov iMiO Team <https://www.transifex.com/plone/plonegov-imio/>`_ into *Transifex.net* service with all world Plone translators community.


Contributors
============

Changelog
=========

1.35 (2024-06-07)
-----------------

- Moved translation of event comments to a sub method
  `IHContentHistoryView._translate_comments` so it is easier to override.
  [gbastien]

1.34 (2024-04-10)
-----------------

- Adapted `utils.getPreviousEvent` to add parameter `history_name='workflow'`.
  [gbastien]
- Fixed display of `HISTORY_COMMENT_NOT_VIEWABLE` in `@@contenthistory` view
  that was displayed as text, showing the HTML code.
  [gbastien]

1.33 (2023-12-11)
-----------------

- Added `utils.add_event_to_wf_history` to insert an event
  to the `workflow_history` of an element.
  [gbastien]

1.32 (2023-11-27)
-----------------

- In `IHDocumentBylineViewlet`, do not display creator if `show_history`
  is `False` as creator is part of the history.
  [gbastien]
- In `@@historyview`, display a `@@header` view under `History` title that will
  by default display the `prettylink` of the context, useful when displaying
  history in a popup from a dashboard containing plenty of elements.
  Added direct dependency on `imio.prettylink`.
  [gbastien]

1.31 (2023-10-27)
-----------------

- Added parameter `ignore_previous_event_actions=[]` to `utils.getLastAction`,
  this way when finding the last action in a history, it will check previous
  event action and continue if it is an action to ignore.
  [gbastien]

1.30 (2023-09-21)
-----------------

- Added `utils.get_event_by_time` that will return an history event based
  on a given float event time.
  [gbastien]
- Formalized use of `EventPreviewView.may_view_historized_data`.
  [gbastien]

1.29 (2023-06-27)
-----------------

- Make `IHContentHistoryView.renderComments` more robust by passing original
  `mimetype='text/plain'` to avoid `portal_transforms` detecting it automatically
  that can lead to wrong detection.
  [gbastien]

1.28 (2023-02-27)
-----------------

- Added possibility to display an event preview under the comment
  in the `@@contenthistory` view.
  [gbastien]
- Make the `highlight_last_comment` functionnality generic, it was only used
  with WF history but now any history may be set `highlight_last_comment=True`.
  [gbastien]

1.27 (2022-06-14)
-----------------

- Added `safe_utils.py` that will only include safe utils.
  [gbastien]

1.26 (2022-03-08)
-----------------

- Fixed display of actor fullname in `@@historyview`.
  [gbastien]

1.25 (2022-03-07)
-----------------

- Optimized `@@contenthistory` view.
  [gbastien]

1.24 (2022-02-25)
-----------------

- In `content_history` template, only fix date column width,
  for other columns, let the browser optimize it.
  [gbastien]

1.23 (2021-04-21)
-----------------

- Add Transifex.net service integration to manage the translation process.
  [macagua]
- Add Spanish translation
  [macagua]

1.22 (2021-03-04)
-----------------

- Changed default to `False` for parameters `checkMayViewEvent=False` and
  `checkMayViewComment=False` of `utils.getLastAction`, this way, we get last
  action even if current user may not, and it is quicker.
  This fix a performance issue in `ImioWfHistoryAdapter.historyLastEventHasComments`
  when called several times.
  [gbastien]
- In `utils.getLastAction`, parameter `action` may be `before_last` and will
  return the before last action if it exists.
  [gbastien]

1.21 (2020-10-26)
-----------------

- Added helper `utils.get_all_history_attr` to get every occurence of a given
  `attr_name` in a `history`. This will return every `review_state` from the
  `workflow` history for example.
  [gbastien]

1.20 (2020-10-01)
-----------------

- Added parameters `checkMayViewEvent=False` and `checkMayViewComment=False` to
  `utils.getLastWFAction`, this way, we get last WF action even if current user
  may not, and it is quicker.
  [gbastien]

1.19 (2019-10-01)
-----------------

- Allow access to module `utils` from restricted python (TAL expression).
  [gbastien]

1.18 (2019-01-11)
-----------------

- As `ImioWfHistoryAdapter.ignorableHistoryComments` should return a list of
  unicode, we force unicode comparison in
  `ImioWfHistoryAdapter.historyLastEventHasComments`, this way we avoid warning
  in Zope log.
  [gbastien]
- `isort` on imports.
  [gbastien]
- Added helper `utils.getLastWFAction` that is actually a shortcut to
  `utils.getLastAction` using the `IImioHistory` 'workflow' adapter.
  [gbastien]

1.17 (2018-03-19)
-----------------

- Factorize `show_history` functionnality.  The method is now defined on the
  `IHContentHistoryView` and is used by
  `IHDocumentBylineViewlet.show_history` and the `@@historyview`.
  This way, we make sure that if the link is not shown on the viewlet, the
  history is not shown in the `@@historyview` if user enter the view name
  manually in the browser.
  [gbastien]

1.16 (2018-02-22)
-----------------

- Use `@memoize` on `BaseImioHistoryAdapter.get_history_data` and
  `BaseImioHistoryAdapter.getHistory` to avoid recomputing it if adapter did
  not changed.  This is useful for the `highlight_history_link` functionnality.
  [gbastien]
- `utils.getLastAction` now receives an `IImioHistory` adapter as first
  argument instead an obj and an adapter name.
  [gbastien]

1.15 (2018-02-09)
-----------------

- Added attribute `ImioWfHistoryAdapter.include_previous_review_state`,
  `False` by default, if set to `True`, the returned history will include
  `previous_review_state`.
  [gbastien]

1.14 (2018-01-23)
-----------------

- Refactored code so it is easy to handle no histories.
  [gbastien]
- Do not fail to call workflow_history specific methods if obj has no workflow.
  [gbastien]
- `IHContentHistoryView.renderComments` now receives the entire event as
  parameter not just the comment so it pass the different values of the event as
  mapping to the translate method so it is useable in translated comment.
  [gbastien]
- Added `IHContentHistoryView.renderCustomJS` to be able to inject custom JS
  when loading the `@@historyview`, especially because it is loaded as an
  overlay.
  [gbastien]
- Added helper `utils.add_event_to_history` that adds an event to an history
  respecting minimum required data.
  [gbastien]
- Added the `BaseImioHistoryAdapter.mayViewEvent` method used when parameter
  `checkMayViewEvent=True`, it returns `True` by default but is made to be
  overrided, if returns False, the entire event is not displayed in the
  `@@historyview`.
  [gbastien]

1.13 (2017-12-07)
-----------------

- In `utils.getLastAction`, do not break if history is empty, added tests.
  [gbastien]

1.12 (2017-11-30)
-----------------

- Define a `BaseImioHistoryAdapter` to base new history adapter on.
  `checkMayView=True` is now a default parameter of `getHistory`.
  [gbastien]
- For now, specifically restrict histories displayed in the `@@historyview` to
  `workflow` and `revision`.
  [gbastien]
- Added method `utils.getLastAction` that returns the metadata of last action of
  a given name for a given history.
  [gbastien]

1.11 (2017-06-23)
-----------------

- Adapted History word highlighting ti display it bigger and underline it so
  it is even more viewable.
  [gbastien]

1.10 (2017-06-14)
-----------------

- In ImioWfHistoryAdapter.historyLastEventHasComments, call
  ImioWfHistoryAdapter.getHistory with parameter 'for_last_event=True' so
  getHistory knows that it queries only relevant last event and when overrided,
  the package overriding it may avoid heavy processing if relevant.
  [gbastien]
- Get rid of unittest2.
  [gbastien]

1.9 (2016-10-12)
----------------

- Do not break in IHContentHistoryView.getTransitionTitle if transitionName
  contains special characters.
  [gbastien]

1.8 (2015-10-06)
----------------

- Make sure comments is displayed correctly by using portal_transforms to
  turn it to 'text/html' before displaying it in the PageTemplate using
  'structure'.
  [gbastien]

1.7 (2015-09-28)
----------------

- Remove revision columns when unused.
  [DieKatze]
- In ImioRevisionHistoryAdapter.getHistory, take into account the
  'checkMayView' parameter by implementing a 'mayViewRevision' method so it
  is possible to restrict access to a specific revision if necessary
  [gbastien]

1.6 (2015-09-10)
----------------

- Added @@history-version-preview view that is called by default in the
  content_history but that renders nothing.  It is made to be registered for a
  relevant content_type so it is possible to display a preview of a versioned
  object directly in the history popup
  [gbastien]

1.5 (2015-07-14)
----------------

- Add revision history management.
  [cedricmessiant]

1.4 (2015-04-15)
----------------

- Added helper method 'utils.getPreviousEvent' that will receive an event
  as parameter and will return the previous event in the workflow_history
  if found
  [gbastien]

1.3 (2015-04-15)
----------------

- Do not reverse workflow_history in ImioHistoryAdapter.getHistory
  as it is for display purpose, do this in the IHContentHistoryView.getHistory
  [gbastien]
- Added parameter 'checkMayView' to ImioHistoryAdapter.getHistory to be able
  to enable/disable mayViewComment check while getting the workflow_history
  [gbastien]

1.2 (2015-04-01)
----------------

- Be defensive in getHistory, do not fail if no workflow used or
  if element has no workflow_history attribute
  [gbastien]

1.1 (2015-03-31)
----------------

- Register translations
  [gbastien]

1.0 (2015-03-30)
----------------

- Intial release
            

Raw data

            {
    "_id": null,
    "home_page": "http://pypi.python.org/pypi/imio.history",
    "name": "imio.history",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "Python Plone",
    "author": "IMIO",
    "author_email": "dev@imio.be",
    "download_url": "https://files.pythonhosted.org/packages/b8/68/0453a4a34ff7f379ba93b0a299945b4d7d1130a2dbc387491aa37b6c4b5d/imio.history-1.35.tar.gz",
    "platform": null,
    "description": ".. image:: https://github.com/IMIO/imio.history/actions/workflows/main.yml/badge.svg?branch=master\n    :target: https://github.com/IMIO/imio.history/actions/workflows/main.yml\n\n.. image:: https://coveralls.io/repos/IMIO/imio.history/badge.svg\n  :target: https://coveralls.io/r/IMIO/imio.history\n\n.. image:: http://img.shields.io/pypi/v/imio.history.svg\n   :alt: PyPI badge\n   :target: https://pypi.org/project/imio.history\n\nimio.history\n============\n\nManage object history using a table and highlight history link when necessary\n\nThe goal is to be able to manage several histories for various needs on a content and display it together, merged in the same view.\n\nAdapters implementing the `IImioHistory` interface\n--------------------------------------------------\n\nTo do this, we must ensure that the histories use same structure.  We base the work on the `workflow_history`, though a custom history may have additional keys if necessary.\n\nThe workflow_history could looks like :\n\n.. code-block:: python\n\n    {'my_custom_workflow': (\n        {'action': None, 'review_state': 'private', 'actor': 'user_id1',\n        'comments': '', 'time': DateTime('2018/03/27 09:51:55.303708 GMT+2')},\n        {'action': 'publish', 'review_state': 'published', \n        'comments': '', 'actor': 'user_id1', 'time': DateTime('2018/03/29 15:35:24.646745 GMT+2')},\n        {'action': 'retract', 'review_state': 'private',\n        'comments': 'My comments', 'actor': 'admin', 'time': DateTime('2018/03/29 15:35:27.246169 GMT+2')})}\n\nHistories are made available thru a named adapter that implements the `IImioHistory` interface.\n\nBy default, adapters are provided for the `workflow_history` (`ImioWfHistoryAdapter`) and revisions history (`ImioRevisionHistoryAdapter`).\n\nThe `@@historyview`\n-------------------\n\nThe `@@historyview` will display the histories as a table with each information in a column : action, author, date/time, comments.\n\nYou define in the `histories_to_handle` attribute of the view, what histories (named adapters) it should display.\n\nEvery histories are sorted together on the `time` key as it uses the same structure.\n\nTranslations\n------------\n\nThis product has been translated into\n\n- French.\n\n- Spanish.\n\nYou can contribute for any message missing or other new languages, join us at `PloneGov iMiO Team <https://www.transifex.com/plone/plonegov-imio/>`_ into *Transifex.net* service with all world Plone translators community.\n\n\nContributors\n============\n\nChangelog\n=========\n\n1.35 (2024-06-07)\n-----------------\n\n- Moved translation of event comments to a sub method\n  `IHContentHistoryView._translate_comments` so it is easier to override.\n  [gbastien]\n\n1.34 (2024-04-10)\n-----------------\n\n- Adapted `utils.getPreviousEvent` to add parameter `history_name='workflow'`.\n  [gbastien]\n- Fixed display of `HISTORY_COMMENT_NOT_VIEWABLE` in `@@contenthistory` view\n  that was displayed as text, showing the HTML code.\n  [gbastien]\n\n1.33 (2023-12-11)\n-----------------\n\n- Added `utils.add_event_to_wf_history` to insert an event\n  to the `workflow_history` of an element.\n  [gbastien]\n\n1.32 (2023-11-27)\n-----------------\n\n- In `IHDocumentBylineViewlet`, do not display creator if `show_history`\n  is `False` as creator is part of the history.\n  [gbastien]\n- In `@@historyview`, display a `@@header` view under `History` title that will\n  by default display the `prettylink` of the context, useful when displaying\n  history in a popup from a dashboard containing plenty of elements.\n  Added direct dependency on `imio.prettylink`.\n  [gbastien]\n\n1.31 (2023-10-27)\n-----------------\n\n- Added parameter `ignore_previous_event_actions=[]` to `utils.getLastAction`,\n  this way when finding the last action in a history, it will check previous\n  event action and continue if it is an action to ignore.\n  [gbastien]\n\n1.30 (2023-09-21)\n-----------------\n\n- Added `utils.get_event_by_time` that will return an history event based\n  on a given float event time.\n  [gbastien]\n- Formalized use of `EventPreviewView.may_view_historized_data`.\n  [gbastien]\n\n1.29 (2023-06-27)\n-----------------\n\n- Make `IHContentHistoryView.renderComments` more robust by passing original\n  `mimetype='text/plain'` to avoid `portal_transforms` detecting it automatically\n  that can lead to wrong detection.\n  [gbastien]\n\n1.28 (2023-02-27)\n-----------------\n\n- Added possibility to display an event preview under the comment\n  in the `@@contenthistory` view.\n  [gbastien]\n- Make the `highlight_last_comment` functionnality generic, it was only used\n  with WF history but now any history may be set `highlight_last_comment=True`.\n  [gbastien]\n\n1.27 (2022-06-14)\n-----------------\n\n- Added `safe_utils.py` that will only include safe utils.\n  [gbastien]\n\n1.26 (2022-03-08)\n-----------------\n\n- Fixed display of actor fullname in `@@historyview`.\n  [gbastien]\n\n1.25 (2022-03-07)\n-----------------\n\n- Optimized `@@contenthistory` view.\n  [gbastien]\n\n1.24 (2022-02-25)\n-----------------\n\n- In `content_history` template, only fix date column width,\n  for other columns, let the browser optimize it.\n  [gbastien]\n\n1.23 (2021-04-21)\n-----------------\n\n- Add Transifex.net service integration to manage the translation process.\n  [macagua]\n- Add Spanish translation\n  [macagua]\n\n1.22 (2021-03-04)\n-----------------\n\n- Changed default to `False` for parameters `checkMayViewEvent=False` and\n  `checkMayViewComment=False` of `utils.getLastAction`, this way, we get last\n  action even if current user may not, and it is quicker.\n  This fix a performance issue in `ImioWfHistoryAdapter.historyLastEventHasComments`\n  when called several times.\n  [gbastien]\n- In `utils.getLastAction`, parameter `action` may be `before_last` and will\n  return the before last action if it exists.\n  [gbastien]\n\n1.21 (2020-10-26)\n-----------------\n\n- Added helper `utils.get_all_history_attr` to get every occurence of a given\n  `attr_name` in a `history`. This will return every `review_state` from the\n  `workflow` history for example.\n  [gbastien]\n\n1.20 (2020-10-01)\n-----------------\n\n- Added parameters `checkMayViewEvent=False` and `checkMayViewComment=False` to\n  `utils.getLastWFAction`, this way, we get last WF action even if current user\n  may not, and it is quicker.\n  [gbastien]\n\n1.19 (2019-10-01)\n-----------------\n\n- Allow access to module `utils` from restricted python (TAL expression).\n  [gbastien]\n\n1.18 (2019-01-11)\n-----------------\n\n- As `ImioWfHistoryAdapter.ignorableHistoryComments` should return a list of\n  unicode, we force unicode comparison in\n  `ImioWfHistoryAdapter.historyLastEventHasComments`, this way we avoid warning\n  in Zope log.\n  [gbastien]\n- `isort` on imports.\n  [gbastien]\n- Added helper `utils.getLastWFAction` that is actually a shortcut to\n  `utils.getLastAction` using the `IImioHistory` 'workflow' adapter.\n  [gbastien]\n\n1.17 (2018-03-19)\n-----------------\n\n- Factorize `show_history` functionnality.  The method is now defined on the\n  `IHContentHistoryView` and is used by\n  `IHDocumentBylineViewlet.show_history` and the `@@historyview`.\n  This way, we make sure that if the link is not shown on the viewlet, the\n  history is not shown in the `@@historyview` if user enter the view name\n  manually in the browser.\n  [gbastien]\n\n1.16 (2018-02-22)\n-----------------\n\n- Use `@memoize` on `BaseImioHistoryAdapter.get_history_data` and\n  `BaseImioHistoryAdapter.getHistory` to avoid recomputing it if adapter did\n  not changed.  This is useful for the `highlight_history_link` functionnality.\n  [gbastien]\n- `utils.getLastAction` now receives an `IImioHistory` adapter as first\n  argument instead an obj and an adapter name.\n  [gbastien]\n\n1.15 (2018-02-09)\n-----------------\n\n- Added attribute `ImioWfHistoryAdapter.include_previous_review_state`,\n  `False` by default, if set to `True`, the returned history will include\n  `previous_review_state`.\n  [gbastien]\n\n1.14 (2018-01-23)\n-----------------\n\n- Refactored code so it is easy to handle no histories.\n  [gbastien]\n- Do not fail to call workflow_history specific methods if obj has no workflow.\n  [gbastien]\n- `IHContentHistoryView.renderComments` now receives the entire event as\n  parameter not just the comment so it pass the different values of the event as\n  mapping to the translate method so it is useable in translated comment.\n  [gbastien]\n- Added `IHContentHistoryView.renderCustomJS` to be able to inject custom JS\n  when loading the `@@historyview`, especially because it is loaded as an\n  overlay.\n  [gbastien]\n- Added helper `utils.add_event_to_history` that adds an event to an history\n  respecting minimum required data.\n  [gbastien]\n- Added the `BaseImioHistoryAdapter.mayViewEvent` method used when parameter\n  `checkMayViewEvent=True`, it returns `True` by default but is made to be\n  overrided, if returns False, the entire event is not displayed in the\n  `@@historyview`.\n  [gbastien]\n\n1.13 (2017-12-07)\n-----------------\n\n- In `utils.getLastAction`, do not break if history is empty, added tests.\n  [gbastien]\n\n1.12 (2017-11-30)\n-----------------\n\n- Define a `BaseImioHistoryAdapter` to base new history adapter on.\n  `checkMayView=True` is now a default parameter of `getHistory`.\n  [gbastien]\n- For now, specifically restrict histories displayed in the `@@historyview` to\n  `workflow` and `revision`.\n  [gbastien]\n- Added method `utils.getLastAction` that returns the metadata of last action of\n  a given name for a given history.\n  [gbastien]\n\n1.11 (2017-06-23)\n-----------------\n\n- Adapted History word highlighting ti display it bigger and underline it so\n  it is even more viewable.\n  [gbastien]\n\n1.10 (2017-06-14)\n-----------------\n\n- In ImioWfHistoryAdapter.historyLastEventHasComments, call\n  ImioWfHistoryAdapter.getHistory with parameter 'for_last_event=True' so\n  getHistory knows that it queries only relevant last event and when overrided,\n  the package overriding it may avoid heavy processing if relevant.\n  [gbastien]\n- Get rid of unittest2.\n  [gbastien]\n\n1.9 (2016-10-12)\n----------------\n\n- Do not break in IHContentHistoryView.getTransitionTitle if transitionName\n  contains special characters.\n  [gbastien]\n\n1.8 (2015-10-06)\n----------------\n\n- Make sure comments is displayed correctly by using portal_transforms to\n  turn it to 'text/html' before displaying it in the PageTemplate using\n  'structure'.\n  [gbastien]\n\n1.7 (2015-09-28)\n----------------\n\n- Remove revision columns when unused.\n  [DieKatze]\n- In ImioRevisionHistoryAdapter.getHistory, take into account the\n  'checkMayView' parameter by implementing a 'mayViewRevision' method so it\n  is possible to restrict access to a specific revision if necessary\n  [gbastien]\n\n1.6 (2015-09-10)\n----------------\n\n- Added @@history-version-preview view that is called by default in the\n  content_history but that renders nothing.  It is made to be registered for a\n  relevant content_type so it is possible to display a preview of a versioned\n  object directly in the history popup\n  [gbastien]\n\n1.5 (2015-07-14)\n----------------\n\n- Add revision history management.\n  [cedricmessiant]\n\n1.4 (2015-04-15)\n----------------\n\n- Added helper method 'utils.getPreviousEvent' that will receive an event\n  as parameter and will return the previous event in the workflow_history\n  if found\n  [gbastien]\n\n1.3 (2015-04-15)\n----------------\n\n- Do not reverse workflow_history in ImioHistoryAdapter.getHistory\n  as it is for display purpose, do this in the IHContentHistoryView.getHistory\n  [gbastien]\n- Added parameter 'checkMayView' to ImioHistoryAdapter.getHistory to be able\n  to enable/disable mayViewComment check while getting the workflow_history\n  [gbastien]\n\n1.2 (2015-04-01)\n----------------\n\n- Be defensive in getHistory, do not fail if no workflow used or\n  if element has no workflow_history attribute\n  [gbastien]\n\n1.1 (2015-03-31)\n----------------\n\n- Register translations\n  [gbastien]\n\n1.0 (2015-03-30)\n----------------\n\n- Intial release",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "Imio history",
    "version": "1.35",
    "project_urls": {
        "Homepage": "http://pypi.python.org/pypi/imio.history"
    },
    "split_keywords": [
        "python",
        "plone"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b8680453a4a34ff7f379ba93b0a299945b4d7d1130a2dbc387491aa37b6c4b5d",
                "md5": "813c54353e9661a8e1004c47e42f0a04",
                "sha256": "ed440084be6ab7b36986ad11502e8da969c010b9cc550df99d1dcb2f860f66ae"
            },
            "downloads": -1,
            "filename": "imio.history-1.35.tar.gz",
            "has_sig": false,
            "md5_digest": "813c54353e9661a8e1004c47e42f0a04",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 38400,
            "upload_time": "2024-06-07T09:20:16",
            "upload_time_iso_8601": "2024-06-07T09:20:16.145862Z",
            "url": "https://files.pythonhosted.org/packages/b8/68/0453a4a34ff7f379ba93b0a299945b4d7d1130a2dbc387491aa37b6c4b5d/imio.history-1.35.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-07 09:20:16",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "imio.history"
}
        
Elapsed time: 0.36479s