superset-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From t...@apache.org
Subject [incubator-superset] branch master updated: remove future (#6065)
Date Sat, 13 Oct 2018 16:39:11 GMT
This is an automated email from the ASF dual-hosted git repository.

timi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new dd9eeda  remove future (#6065)
dd9eeda is described below

commit dd9eeda03e078ad053ddc2eb7170b7e281047a49
Author: timifasubaa <30888507+timifasubaa@users.noreply.github.com>
AuthorDate: Sat Oct 13 09:39:04 2018 -0700

    remove future (#6065)
---
 CONTRIBUTING.md                           | 14 ++++++--------
 scripts/permissions_cleanup.py            |  5 -----
 setup.py                                  |  5 -----
 superset/__init__.py                      |  5 -----
 superset/bin/superset                     |  5 -----
 superset/cache_util.py                    |  5 -----
 superset/config.py                        |  5 -----
 superset/connectors/base/models.py        |  5 -----
 superset/connectors/base/views.py         |  5 -----
 superset/connectors/connector_registry.py |  5 -----
 superset/connectors/druid/models.py       |  5 -----
 superset/connectors/druid/views.py        |  5 -----
 superset/connectors/sqla/models.py        |  5 -----
 superset/connectors/sqla/views.py         |  5 -----
 superset/data/countries.py                |  5 -----
 superset/dataframe.py                     |  5 -----
 superset/db_engine_specs.py               |  5 -----
 superset/db_engines/hive.py               |  5 -----
 superset/dict_import_export_util.py       |  5 -----
 superset/exceptions.py                    |  4 ----
 superset/extract_table_names.py           |  5 -----
 superset/forms.py                         |  5 -----
 superset/import_util.py                   |  5 -----
 superset/jinja_context.py                 |  5 -----
 superset/legacy.py                        |  5 -----
 superset/models/annotations.py            |  5 -----
 superset/models/core.py                   |  5 -----
 superset/models/helpers.py                |  5 -----
 superset/models/sql_lab.py                |  5 -----
 superset/models/user_attributes.py        |  5 -----
 superset/security.py                      |  5 -----
 superset/sql_lab.py                       |  2 --
 superset/sql_parse.py                     |  5 -----
 superset/stats_logger.py                  |  5 -----
 superset/translations/utils.py            |  5 -----
 superset/views/annotations.py             |  5 -----
 superset/views/base.py                    |  5 -----
 superset/views/core.py                    |  5 -----
 superset/views/datasource.py              |  5 -----
 superset/views/sql_lab.py                 |  5 -----
 superset/views/utils.py                   |  5 -----
 superset/viz.py                           |  5 -----
 42 files changed, 6 insertions(+), 209 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6184384..e7d1034 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -89,15 +89,13 @@ meets these guidelines:
 3.  If the pull request adds functionality, the docs should be updated
     as part of the same PR. Doc string are often sufficient, make
     sure to follow the sphinx compatible standards.
-4.  The pull request should work for Python 2.7 and Python 3.6.
-    ``from __future__ import`` will be required in every `.py` file soon.
-5.  If the pull request adds a Python dependency include it in `setup.py`
-    denoting any specific restrictions and run `pip-compile` to update the
-    `requirements.txt` file which ensures that the application build is deterministic.
-6.  Please rebase and resolve all conflicts before submitting.
-7.  Please ensure the necessary checks pass and that code coverage does not
+4.  If the pull request adds a Python dependency include it in `setup.py`
+    denoting any specific restrictions and in `requirements.txt` pinned to a
+    specific version which ensures that the application build is deterministic.
+5.  Please rebase and resolve all conflicts before submitting.
+6.  Please ensure the necessary checks pass and that code coverage does not
     decrease.
-8.  If you are asked to update your pull request with some changes there's
+7.  If you are asked to update your pull request with some changes there's
     no need to create a new one. Push your changes to the same branch.
 
 ## Local development
diff --git a/scripts/permissions_cleanup.py b/scripts/permissions_cleanup.py
index edc9790..cca3e93 100644
--- a/scripts/permissions_cleanup.py
+++ b/scripts/permissions_cleanup.py
@@ -1,9 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from collections import defaultdict
 
 from superset import sm
diff --git a/setup.py b/setup.py
index f1c5ab0..f92c851 100644
--- a/setup.py
+++ b/setup.py
@@ -1,9 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import io
 import json
 import os
diff --git a/superset/__init__.py b/superset/__init__.py
index ce98dc2..cd3ce00 100644
--- a/superset/__init__.py
+++ b/superset/__init__.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """Package's main module!"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import json
 import logging
 from logging.handlers import TimedRotatingFileHandler
diff --git a/superset/bin/superset b/superset/bin/superset
index 8b8588e..e0fef81 100755
--- a/superset/bin/superset
+++ b/superset/bin/superset
@@ -1,10 +1,5 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import warnings
 import click
 from flask.cli import FlaskGroup
diff --git a/superset/cache_util.py b/superset/cache_util.py
index 2ae4d2d..0c0c140 100644
--- a/superset/cache_util.py
+++ b/superset/cache_util.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from flask import request
 
 from superset import cache, tables_cache
diff --git a/superset/config.py b/superset/config.py
index d00bfd5..9f04e22 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -6,11 +6,6 @@ All configuration in this file can be overridden by providing a superset_config
 in your PYTHONPATH as there is a ``from superset_config import *``
 at the end of this file.
 """
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from collections import OrderedDict
 import imp
 import json
diff --git a/superset/connectors/base/models.py b/superset/connectors/base/models.py
index e100b0a..6d30fc9 100644
--- a/superset/connectors/base/models.py
+++ b/superset/connectors/base/models.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import json
 
 from past.builtins import basestring
diff --git a/superset/connectors/base/views.py b/superset/connectors/base/views.py
index ffec806..f34a1ca 100644
--- a/superset/connectors/base/views.py
+++ b/superset/connectors/base/views.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from flask import Markup
 
 from superset.exceptions import SupersetException
diff --git a/superset/connectors/connector_registry.py b/superset/connectors/connector_registry.py
index efafcb4..2d7a0e2 100644
--- a/superset/connectors/connector_registry.py
+++ b/superset/connectors/connector_registry.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from sqlalchemy.orm import subqueryload
 
 
diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py
index d0c2760..77f9631 100644
--- a/superset/connectors/druid/models.py
+++ b/superset/connectors/druid/models.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 # pylint: disable=invalid-unary-operand-type
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from collections import OrderedDict
 from copy import deepcopy
 from datetime import datetime, timedelta
diff --git a/superset/connectors/druid/views.py b/superset/connectors/druid/views.py
index d4875f9..546561e 100644
--- a/superset/connectors/druid/views.py
+++ b/superset/connectors/druid/views.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from datetime import datetime
 import json
 import logging
diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py
index 89b07f6..f3417ae 100644
--- a/superset/connectors/sqla/models.py
+++ b/superset/connectors/sqla/models.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from datetime import datetime
 import logging
 
diff --git a/superset/connectors/sqla/views.py b/superset/connectors/sqla/views.py
index 1bae52e..b00d658 100644
--- a/superset/connectors/sqla/views.py
+++ b/superset/connectors/sqla/views.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """Views used by the SqlAlchemy connector"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from flask import flash, Markup, redirect
 from flask_appbuilder import CompactCRUDMixin, expose
 from flask_appbuilder.actions import action
diff --git a/superset/data/countries.py b/superset/data/countries.py
index b725cc2..c0dd8d6 100644
--- a/superset/data/countries.py
+++ b/superset/data/countries.py
@@ -1,9 +1,4 @@
 """This module contains data related to countries and is used for geo mapping"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 countries = [
     {
         "name": "Angola",
diff --git a/superset/dataframe.py b/superset/dataframe.py
index 1678dd9..c58df33 100644
--- a/superset/dataframe.py
+++ b/superset/dataframe.py
@@ -7,11 +7,6 @@ TODO(bkyryliuk): add support for the conventions like: *_dim or dim_*
 TODO(bkyryliuk): recognize integer encoded enums.
 
 """
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from datetime import date, datetime
 import logging
 
diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py
index b557240..c81cbfa 100644
--- a/superset/db_engine_specs.py
+++ b/superset/db_engine_specs.py
@@ -13,11 +13,6 @@ at all. The classes here will use a common interface to specify all this.
 
 The general idea is to use static classes and an inheritance scheme.
 """
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from collections import defaultdict, namedtuple
 import inspect
 import logging
diff --git a/superset/db_engines/hive.py b/superset/db_engines/hive.py
index 9a144e8..95acf4f 100644
--- a/superset/db_engines/hive.py
+++ b/superset/db_engines/hive.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from pyhive import hive
 from TCLIService import ttypes
 from thrift import Thrift
diff --git a/superset/dict_import_export_util.py b/superset/dict_import_export_util.py
index 3bdfcd9..696c3c8 100644
--- a/superset/dict_import_export_util.py
+++ b/superset/dict_import_export_util.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import logging
 
 from superset.connectors.druid.models import DruidCluster
diff --git a/superset/exceptions.py b/superset/exceptions.py
index 610acea..08aff8f 100644
--- a/superset/exceptions.py
+++ b/superset/exceptions.py
@@ -1,9 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
 
 
 class SupersetException(Exception):
diff --git a/superset/extract_table_names.py b/superset/extract_table_names.py
index becfdcd..fcb4fc2 100644
--- a/superset/extract_table_names.py
+++ b/superset/extract_table_names.py
@@ -12,11 +12,6 @@
 #
 # See:
 # http://groups.google.com/group/sqlparse/browse_thread/thread/b0bd9a022e9d4895
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import sqlparse
 from sqlparse.sql import Identifier, IdentifierList
 from sqlparse.tokens import DML, Keyword
diff --git a/superset/forms.py b/superset/forms.py
index 6108162..06b304e 100644
--- a/superset/forms.py
+++ b/superset/forms.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """Contains the logic to create cohesive forms on the explore view"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
 from flask_appbuilder.forms import DynamicForm
 from flask_babel import lazy_gettext as _
diff --git a/superset/import_util.py b/superset/import_util.py
index 8693404..16acb0d 100644
--- a/superset/import_util.py
+++ b/superset/import_util.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import logging
 
 from sqlalchemy.orm.session import make_transient
diff --git a/superset/jinja_context.py b/superset/jinja_context.py
index 6d4b4c6..3bf68ce 100644
--- a/superset/jinja_context.py
+++ b/superset/jinja_context.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """Defines the templating context for SQL Lab"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from datetime import datetime, timedelta
 import inspect
 import json
diff --git a/superset/legacy.py b/superset/legacy.py
index 49cc5fe..0081010 100644
--- a/superset/legacy.py
+++ b/superset/legacy.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """Code related with dealing with legacy / change management"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import re
 
 from superset import frontend_config
diff --git a/superset/models/annotations.py b/superset/models/annotations.py
index b7640ba..e0d74f9 100644
--- a/superset/models/annotations.py
+++ b/superset/models/annotations.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """a collection of Annotation-related models"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from flask_appbuilder import Model
 from sqlalchemy import (
     Column, DateTime, ForeignKey, Index, Integer, String, Text,
diff --git a/superset/models/core.py b/superset/models/core.py
index 53eb2e2..3334bf9 100644
--- a/superset/models/core.py
+++ b/superset/models/core.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """A collection of ORM sqlalchemy models for Superset"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from contextlib import closing
 from copy import copy, deepcopy
 from datetime import datetime
diff --git a/superset/models/helpers.py b/superset/models/helpers.py
index 25b808c..cb90dee 100644
--- a/superset/models/helpers.py
+++ b/superset/models/helpers.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """a collection of model-related helper classes and functions"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from datetime import datetime
 import json
 import logging
diff --git a/superset/models/sql_lab.py b/superset/models/sql_lab.py
index 7e0ccb5..91450ac 100644
--- a/superset/models/sql_lab.py
+++ b/superset/models/sql_lab.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """A collection of ORM sqlalchemy models for SQL Lab"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from datetime import datetime
 import re
 
diff --git a/superset/models/user_attributes.py b/superset/models/user_attributes.py
index faf4127..7fcfb4d 100644
--- a/superset/models/user_attributes.py
+++ b/superset/models/user_attributes.py
@@ -1,9 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from flask_appbuilder import Model
 from sqlalchemy import Column, ForeignKey, Integer
 from sqlalchemy.orm import relationship
diff --git a/superset/security.py b/superset/security.py
index 3f2358e..2176423 100644
--- a/superset/security.py
+++ b/superset/security.py
@@ -1,11 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
 """A set of constants and methods to manage permissions and security"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import logging
 
 from flask import g
diff --git a/superset/sql_lab.py b/superset/sql_lab.py
index 4db788b..8c16cfc 100644
--- a/superset/sql_lab.py
+++ b/superset/sql_lab.py
@@ -1,7 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 from datetime import datetime
 import logging
 from time import sleep
diff --git a/superset/sql_parse.py b/superset/sql_parse.py
index 240a30c..5bff741 100644
--- a/superset/sql_parse.py
+++ b/superset/sql_parse.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import logging
 
 import sqlparse
diff --git a/superset/stats_logger.py b/superset/stats_logger.py
index e16ecbb..7d0812c 100644
--- a/superset/stats_logger.py
+++ b/superset/stats_logger.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import logging
 
 from colorama import Fore, Style
diff --git a/superset/translations/utils.py b/superset/translations/utils.py
index e221c49..a2bba66 100644
--- a/superset/translations/utils.py
+++ b/superset/translations/utils.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import json
 import os
 
diff --git a/superset/views/annotations.py b/superset/views/annotations.py
index c1d4551..26df76d 100644
--- a/superset/views/annotations.py
+++ b/superset/views/annotations.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from flask_appbuilder.models.sqla.interface import SQLAInterface
 from flask_babel import gettext as __
 from flask_babel import lazy_gettext as _
diff --git a/superset/views/base.py b/superset/views/base.py
index 6db3358..6173a20 100644
--- a/superset/views/base.py
+++ b/superset/views/base.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from datetime import datetime
 import functools
 import logging
diff --git a/superset/views/core.py b/superset/views/core.py
index b07b7d2..18bc9aa 100755
--- a/superset/views/core.py
+++ b/superset/views/core.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from datetime import datetime, timedelta
 import inspect
 import logging
diff --git a/superset/views/datasource.py b/superset/views/datasource.py
index 360739c..83c66a7 100644
--- a/superset/views/datasource.py
+++ b/superset/views/datasource.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import json
 
 from flask import request
diff --git a/superset/views/sql_lab.py b/superset/views/sql_lab.py
index f6452b9..5117b3d 100644
--- a/superset/views/sql_lab.py
+++ b/superset/views/sql_lab.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from flask import g, redirect
 from flask_appbuilder import expose
 from flask_appbuilder.models.sqla.interface import SQLAInterface
diff --git a/superset/views/utils.py b/superset/views/utils.py
index 1d7d4d8..edb142a 100644
--- a/superset/views/utils.py
+++ b/superset/views/utils.py
@@ -1,10 +1,5 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=C,R,W
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from collections import defaultdict
 
 from flask import g
diff --git a/superset/viz.py b/superset/viz.py
index b0a30e3..1753a87 100644
--- a/superset/viz.py
+++ b/superset/viz.py
@@ -5,11 +5,6 @@
 These objects represent the backend of all the visualizations that
 Superset can render.
 """
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
 from collections import defaultdict, OrderedDict
 import copy
 from datetime import datetime, timedelta


Mime
View raw message