Where has AddMsgAndPrint gone in 10.4?

2578
3
Jump to solution
06-14-2016 08:24 PM
KimOllivier
Regular Contributor II

This convenient arcpy function that was there in 10.3 has vanished at 10.4, breaking all my python scripts that use it.

Thanks Esri.

0 Kudos
1 Solution

Accepted Solutions
Luke_Pinner
MVP Regular Contributor

I don't think AddMsgAndPrint was ever an arcpy function. It's definitely not listed in the 10.3 or 10.2 help pages and calling arcpy.AddMsgAndPrint raises an "AttributeError: 'module' object has no attribute 'AddMsgAndPrint'"

Are you sure you didn't have a custom module that  defined AddMsgAndPrint? Something like:

From: Tabulate Intersection—Help | ArcGIS for Desktop

def AddMsgAndPrint(msg, severity=0):

    # Adds a Message (in case this is run as a tool)

    # and also prints the message to the screen (standard output)

    #

    print(msg)

    # Split the message on \n first, so that if it's multiple lines,

    #  a GPMessage will be added for each line

    try:

        for string in msg.split('\n'):

            # Add appropriate geoprocessing message

            #

            if severity == 0:

                arcpy.AddMessage(string)

            elif severity == 1:

                arcpy.AddWarning(string)

            elif severity == 2:

                arcpy.AddError(string)

    except:

        pass

View solution in original post

3 Replies
Luke_Pinner
MVP Regular Contributor

I don't think AddMsgAndPrint was ever an arcpy function. It's definitely not listed in the 10.3 or 10.2 help pages and calling arcpy.AddMsgAndPrint raises an "AttributeError: 'module' object has no attribute 'AddMsgAndPrint'"

Are you sure you didn't have a custom module that  defined AddMsgAndPrint? Something like:

From: Tabulate Intersection—Help | ArcGIS for Desktop

def AddMsgAndPrint(msg, severity=0):

    # Adds a Message (in case this is run as a tool)

    # and also prints the message to the screen (standard output)

    #

    print(msg)

    # Split the message on \n first, so that if it's multiple lines,

    #  a GPMessage will be added for each line

    try:

        for string in msg.split('\n'):

            # Add appropriate geoprocessing message

            #

            if severity == 0:

                arcpy.AddMessage(string)

            elif severity == 1:

                arcpy.AddWarning(string)

            elif severity == 2:

                arcpy.AddError(string)

    except:

        pass

View solution in original post

KimOllivier
Regular Contributor II

Well it looks just like that function but appeared as a function of arcpy, not a separate function. It popped up in the autocompletion so I have been using it extensively in 10.3. To my surprise it has disappeared after an update. Maybe ET Tools added it? Maybe some other tool I have installed long ago and forgotten and did not realise that it extended arcpy. Is there one? What did arcapi do?

0 Kudos
Luke_Pinner
MVP Regular Contributor

No idea, sorry. I just know that it's not in arcpy 10.2 or 10.3 on our systems.

Is there really a need for it (other than to stop breaking existing code)?  arcpy.AddMessage(msg), arcpy.AddError(msg) et. al all print to stdout (stderr?) anyway.

0 Kudos