Is there a way to pull data from bpy.ops without putting the model into Edit Mode I want to pull data from a bpy.ops command, something like
for x in bpy.data.objects:
    if x.name in bpy.context.view_layer.objects.keys():
        bpy.context.view_layer.objects.active = x
        bpy.ops.mesh.select_non_manifold((extend=True, use_wire=True, use_boundary=True)

and follow it up with commands like
a = bpy.data.objects['obj'].data.total_edge_sel

to grab non-manifold edge data (other other data gatherable if the model were in edit mode) without throwing the model into edit mode. Currently I'm getting out of context errors (the model is in Object Mode. I understand why the error, but...)
Is something like this it possible without flashing 200+ mesh objects into edit mode to get the data?
EDIT:
Thanks for the info batFINGER, the report is starting to take shape!
'Model Name: 00000000DE66'
'Model Armature: 00000000DE66_Skeleton'
'Armature Bone Count: 377'
'Number of Bones Without Vertex Groups: 28'
'Armature Scene Rotation Mode: XYZ'
'Armature Rotation: (90.0, 0.0, 0.0)'
'Number of Bones Layers: 1'
'Number of Mesh Objects in Model: 9'
'Number of Vertices in Model: [10188, 178, 264, 1598, 226, 92, 1740, 396, 226]'
'Number of Vertex Groups in Model: 349'
&quot;Number of Vertex Groups That Don't have Bones: None&quot;
'Number of Vertices Influenced By More Than 3 Bones: 1175'
'Number of Vertices Not Weight Painted: 0'
'Number of Materials: 8'


'Model Name: Sesshomaru'
'Model Armature: Sesshomaru_arm'
'Armature Bone Count: 204'
'Number of Bones Without Vertex Groups: 44'
'Armature Scene Rotation Mode: XYZ'
'Armature Rotation: (0.0, 0.0, 0.0)'
'Number of Bones Layers: 3'
'Number of Mesh Objects in Model: 1'
'Number of Vertices in Model: [9599]'
'Number of Vertex Groups in Model: 162'
&quot;Number of Vertex Groups That Don't have Bones: 2&quot;
'Number of Vertices Influenced By More Than 3 Bones: 2905'
'Number of Vertices Not Weight Painted: 0'
'Number of Materials: 30'
```
Edit multiple objects.
AFAIK it is impossible to use bpy.ops.mesh outside of edit mode. It would be possible to emulate the select non manifold operator in object mode, however since all objects can be placed into edit mode at once, and the operator called once, it feels unnecessary to bother

As of blender 2.8 it is possible to edit a number of mesh objects at once.  So instead of &quot;flashing&quot; each object, select all the objects to edit, call the operator once, then output the meshes total_edge_sel count, or update all edit meshes by either toggling out of edit mode or calling Object.update_from_editmode() and read the selected edges, and count the edges selected, to get both the total and which edges are selected.
import bpy

context = bpy.context
scene = context.scene

# select and put all in edit mode
for o in scene.objects:
    o.select_set(o.type == 'MESH')
# make sure active object is included
context.view_layer.objects.active = context.selected_objects[0] 
context.tool_settings.mesh_select_mode = (True, True, True)
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_non_manifold()

for o in context.objects_in_mode_unique_data:
    print(o.name, o.data.name, o.data.total_edge_sel)

Test run on 4 objects in image, two cubes, a plane and suzanne.
Cube Cube 0
Plane Plane 4
Suzanne Suzanne 42

Note the second cube shares same mesh as first (linked data), hence only one with unique data shown.