Working with File Metadata and File Data
Eptalights provides two levels of file representation:
FileMetadataModel — lightweight structural metadata (fast, minimal loading)
FileDataModel — fully hydrated analysis data (functions, classes, CFGs, etc.)
This separation allows efficient database access while supporting deep program analysis when needed.
File Metadata vs File Data
Model |
Description |
|---|---|
FileMetadataModel |
Lightweight file structure containing class names, function IDs, and tokenized properties |
FileDataModel |
Fully loaded file containing resolved FunctionModel and ClassDataModel objects |
1. Fetch File Metadata
Use metadata when you only need structural information about a file.
file_meta = api.get_file_metadata_by_filepath(
"/example/src/user_service.php"
)
print(file_meta.filepath)
# output
"""
/example/src/user_service.php
"""
Metadata includes:
class names
function IDs
tokenized class properties
print(file_meta.functions)
print(file_meta.classes)
2. Convert Metadata → Full File Data
Once metadata is loaded, you can hydrate it into full analysis objects:
file_data = api.get_file_data_by_metadata(file_meta)
This step:
Resolves function IDs into full FunctionModel objects
Loads class methods into executable analysis models
Preserves structural metadata
3. Fetch File Data Directly
You can skip metadata and directly fetch full analysis data:
file_data = api.get_file_data_by_filepath(
"/example/src/user_service.php"
)
This internally performs:
Load FileMetadataModel from database
Collect all function IDs
Batch fetch FunctionModel objects
Construct FileDataModel
4. Working with File Data
FileDataModel contains fully resolved program structures.
print(file_data.filepath)
print(file_data.functions.keys())
print(file_data.classes.keys())
5. Access Class Data
cls = file_data.classes["UserService"]
print(cls.class_props)
print(cls.class_methods.keys())
Each class contains:
Tokenized properties
Fully resolved methods (
FunctionModel)
6. Method Resolution Example
method = file_data.classes["UserService"].class_methods["create_user"]
print(method.name)
Performance Notes
Use FileMetadataModel when performing:
fast structural scanning of large codebases
indexing files without loading functions
Use FileDataModel when performing:
CFG analysis
function-level inspection
decompilation
call graph traversal
Metadata → Data conversion is optimized via batch function loading for efficiency.