Blender  V3.3
Classes | Macros | Functions | Variables
bpy_library_load.c File Reference
#include <Python.h>
#include <stddef.h>
#include "BLI_ghash.h"
#include "BLI_linklist.h"
#include "BLI_path_util.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_blendfile_link_append.h"
#include "BKE_context.h"
#include "BKE_idtype.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_report.h"
#include "DNA_space_types.h"
#include "BLO_readfile.h"
#include "MEM_guardedalloc.h"
#include "bpy_capi_utils.h"
#include "bpy_library.h"
#include "../generic/py_capi_utils.h"
#include "../generic/python_utildefines.h"
#include "RNA_access.h"
#include "bpy_rna.h"

Go to the source code of this file.

Classes

struct  BPy_Library
 
struct  LibExitLappContextItemsIterData
 

Macros

#define USE_RNA_DATABLOCKS
 

Functions

static PyObject * bpy_lib_load (BPy_PropertyRNA *self, PyObject *args, PyObject *kwds)
 
static PyObject * bpy_lib_enter (BPy_Library *self)
 
static PyObject * bpy_lib_exit (BPy_Library *self, PyObject *args)
 
static PyObject * bpy_lib_dir (BPy_Library *self)
 
static void bpy_lib_dealloc (BPy_Library *self)
 
 PyDoc_STRVAR (bpy_lib_load_doc, ".. method:: load(filepath, link=False, relative=False, assets_only=False)\n" "\n" " Returns a context manager which exposes 2 library objects on entering.\n" " Each object has attributes matching bpy.data which are lists of strings to be linked.\n" "\n" " :arg filepath: The path to a blend file.\n" " :type filepath: string\n" " :arg link: When False reference to the original file is lost.\n" " :type link: bool\n" " :arg relative: When True the path is stored relative to the open blend file.\n" " :type relative: bool\n" " :arg assets_only: If True, only list data-blocks marked as assets.\n" " :type assets_only: bool\n")
 
static PyObject * _bpy_names (BPy_Library *self, int blocktype)
 
static void bpy_lib_exit_warn_idname (BPy_Library *self, const char *name_plural, const char *idname)
 
static void bpy_lib_exit_warn_type (BPy_Library *self, PyObject *item)
 
static bool bpy_lib_exit_lapp_context_items_cb (BlendfileLinkAppendContext *lapp_context, BlendfileLinkAppendContextItem *item, void *userdata)
 
static PyObject * bpy_lib_exit (BPy_Library *self, PyObject *UNUSED(args))
 
int BPY_library_load_type_ready (void)
 

Variables

static PyMethodDef bpy_lib_methods []
 
static PyTypeObject bpy_lib_Type
 
PyMethodDef BPY_library_load_method_def
 

Detailed Description

This file exposed blend file library appending/linking to python, typically this would be done via RNA api but in this case a hand written python api allows us to use Python's context manager (__enter__ and __exit__).

Everything here is exposed via bpy.data.libraries.load(...) which returns a context manager.

Definition in file bpy_library_load.c.

Macro Definition Documentation

◆ USE_RNA_DATABLOCKS

#define USE_RNA_DATABLOCKS

Definition at line 43 of file bpy_library_load.c.

Function Documentation

◆ _bpy_names()

static PyObject* _bpy_names ( BPy_Library self,
int  blocktype 
)
static

◆ bpy_lib_dealloc()

static void bpy_lib_dealloc ( BPy_Library self)
static

Definition at line 80 of file bpy_library_load.c.

References self.

◆ bpy_lib_dir()

static PyObject * bpy_lib_dir ( BPy_Library self)
static

Definition at line 509 of file bpy_library_load.c.

References self.

◆ bpy_lib_enter()

static PyObject * bpy_lib_enter ( BPy_Library self)
static

◆ bpy_lib_exit() [1/2]

static PyObject* bpy_lib_exit ( BPy_Library self,
PyObject *  args 
)
static

◆ bpy_lib_exit() [2/2]

static PyObject* bpy_lib_exit ( BPy_Library self,
PyObject *  UNUSEDargs 
)
static

◆ bpy_lib_exit_lapp_context_items_cb()

static bool bpy_lib_exit_lapp_context_items_cb ( BlendfileLinkAppendContext lapp_context,
BlendfileLinkAppendContextItem item,
void userdata 
)
static

◆ bpy_lib_exit_warn_idname()

static void bpy_lib_exit_warn_idname ( BPy_Library self,
const char *  name_plural,
const char *  idname 
)
static

Definition at line 309 of file bpy_library_load.c.

References self.

Referenced by bpy_lib_exit_lapp_context_items_cb().

◆ bpy_lib_exit_warn_type()

static void bpy_lib_exit_warn_type ( BPy_Library self,
PyObject *  item 
)
static

Definition at line 329 of file bpy_library_load.c.

References self.

Referenced by bpy_lib_exit().

◆ bpy_lib_load()

static PyObject * bpy_lib_load ( BPy_PropertyRNA self,
PyObject *  args,
PyObject *  kwds 
)
static

◆ BPY_library_load_type_ready()

int BPY_library_load_type_ready ( void  )

Definition at line 521 of file bpy_library_load.c.

References bpy_lib_Type.

Referenced by BPy_init_modules().

◆ PyDoc_STRVAR()

PyDoc_STRVAR ( bpy_lib_load_doc  ,
".. method:: load(filepath, link=False, relative=False, assets_only=False)\n" "\n" " Returns a context manager which exposes 2 library objects on entering.\n" " Each object has attributes matching bpy.data which are lists of strings to be linked.\n" "\n" " :arg filepath: The path to a blend file.\n" " :type filepath: string\n" " :arg link: When False reference to the original file is lost.\n" " :type link: bool\n" " :arg relative: When True the path is stored relative to the open blend file.\n" " :type relative: bool\n" " :arg assets_only: If  True,
only list data-blocks marked as assets.\n" " :type assets_only:bool\n"   
)

Variable Documentation

◆ bpy_lib_methods

PyMethodDef bpy_lib_methods[]
static
Initial value:
= {
{"__enter__", (PyCFunction)bpy_lib_enter, METH_NOARGS},
{"__exit__", (PyCFunction)bpy_lib_exit, METH_VARARGS},
{"__dir__", (PyCFunction)bpy_lib_dir, METH_NOARGS},
{NULL}
}
static PyObject * bpy_lib_enter(BPy_Library *self)
static PyObject * bpy_lib_exit(BPy_Library *self, PyObject *args)
static PyObject * bpy_lib_dir(BPy_Library *self)

Definition at line 73 of file bpy_library_load.c.

◆ bpy_lib_Type

PyTypeObject bpy_lib_Type
static

Definition at line 86 of file bpy_library_load.c.

Referenced by bpy_lib_enter(), bpy_lib_load(), and BPY_library_load_type_ready().

◆ BPY_library_load_method_def

PyMethodDef BPY_library_load_method_def
Initial value:
= {
"load",
(PyCFunction)bpy_lib_load,
METH_VARARGS | METH_KEYWORDS,
bpy_lib_load_doc,
}
static PyObject * bpy_lib_load(BPy_PropertyRNA *self, PyObject *args, PyObject *kwds)

Definition at line 514 of file bpy_library_load.c.

Referenced by BPY_rna_types_extend_capi().