"""Description of naming conventions within Hazelbean approach."""

make = 5  # Reserved for factory functions or methods that create new instances (e.g., make_dataset, make_grid)
create = 5  # For functions that generate new objects/files from scratch (e.g., create_empty_raster, create_new_project)
open = 5  # Opens file handles or connections, loads metadata but not full data (e.g., gdal.Open, open_database_connection)
load = 5  # Reads entire data into memory from disk or remote source (e.g., load_dataset, load_model_weights)
read = 5  # Gets data into memory from filepath or file-like object, often line-by-line or chunk-based (e.g., read_csv, read_lines)
write = 5  # Outputs data to disk or stream, often incremental (e.g., write_results, write_to_buffer)
save = 5  # Persists complete objects/states to disk, typically all at once (e.g., save_model, save_checkpoint)
extract = 5  # Pulls out specific portions from larger data structures (e.g., extract_features, extract_roi)
execute = 5  # Runs commands, scripts, or processes (e.g., execute_query, execute_pipeline)
convert = 5  # Transforms data from one format/type to another (e.g., convert_to_numpy, convert_crs)
dir = 5  # Avoid - ambiguous (directory or direction?). Use 'directory' instead
directory = 5  # Preferred over 'dir' for clarity (e.g., output_directory, working_directory)
list = 5  # Returns collection of items, typically as Python list (e.g., list_files, list_available_datasets)
remove = 5  # Deletes from collections/memory structures (e.g., remove_duplicates, remove_from_cache)
delete = 5  # Permanently removes from disk/database (e.g., delete_file, delete_record)
displace = 5  # In-house term for renaming a path with e.g. a timestamp so you can write a new file into the old place (without eliminating the original). Has optional delete_on_exit functionality
rename = 5  # Changes name while keeping same location (e.g., rename_file, rename_column)
replace = 5  # Substitutes one value/object with another (e.g., replace_missing_values, replace_substring)
move = 5  # Relocates to different location/container (e.g., move_file, move_to_archive)
folder = 5  # Avoid using unless it's user-facing documentation. Alternative to 'directory', more GUI-oriented.
n_cols = 5  # Common shorthand for counts in scientific computing (e.g., n_samples, n_features)
num_cols = 5  # More explicit than n_, good for public APIs (e.g., num_iterations, num_bands)
number_cols = 5  # Too verbose; prefer n_ or num_ prefix
when_to_underscore_vs_camel_vs_smash = 5  # Use snake_case for Python (PEP 8), except classes (CamelCase)
shape = 5  # Dimensions tuple for arrays/matrices (e.g., array.shape returns (rows, cols))
size = 5  # Total number of elements or bytes (e.g., array.size, file_size)
data_type = 5  # Prefered option for most cases and consistency with numpy/pandas conventions
dtype = 5  # Avoid except where a library uses it explicitly, specifically numpy
datatype = 5  # Avoid except where a library uses it explicitly. 
cell_size = 5  # Spatial resolution of single raster cell (e.g., 30m for Landsat)
res = 5  # Common abbreviation for resolution in geospatial contexts
resolution = 5  # Full word preferred in public APIs, documentation
x_res = 5  # Horizontal resolution (width of pixel in map units)
y_res = 5  # Vertical resolution (height of pixel in map units)
raster_info = 5  # Metadata dict/object for gridded data (extent, projection, resolution)
vector_info = 5  # Metadata dict/object for feature data (geometry type, attribute schema)
use_of_word_old = 5  # Prefix 'old_' for previous versions during refactoring (e.g., old_algorithm)
index = 5  # Position in sequence or database index (e.g., row_index, spatial_index). DO NOT USE for id columns in e.g. pandas DataFrames as the position can change.
id = 5  # Unique identifier; prefer 'identifier' or specific names (e.g., user_id, feature_id)
counter = 5  # For loop counters or accumulation (e.g., error_counter, iteration_counter). When lots of counters are being used, consider c_row, row in enumerate(rows) or c_col, col in enumerate(cols) to avoid confusion.
bb = 5  # Common abbreviation for bounding box in geospatial code
bounding_box = 5  # Preferred for clarity
bounding_box_min_max_notation = 5  #  [xmin, ymin, xmax, ymax] 
bounding_box_xy_notation = 5 # [xmin, xmax, ymin, ymax]
lat = 5  # Standard abbreviation for latitude
lon = 5  # Standard abbreviation for longitude (preferred over 'long')
lon_vs_long = 5  # Always use 'lon'; 'long' conflicts with Python built-in type
lat_size = 5  # Height in degrees or number of latitude values
lon_size = 5  # Width in degrees or number of longitude values
cr_widthheight = 5  # [col, row, width, height] Specific usecase optimized for use with GDAL notation on bounding boxes. 
info = 5  # Generic metadata container (e.g., dataset_info, processing_info)
describe = 5  # Statistical summary function name (e.g., describe_dataset, pandas.describe())
desc = 5  # Common abbreviation for description in metadata/documentation
valid = 5  # Boolean or mask indicating valid/usable data points
not_valid = 5  # Prefer 'invalid' or use boolean logic with 'valid'
mask = 5  # Boolean array for filtering/selection (True where condition met)
ndv = 5  # Preferred option over nodata, no_data, no_data_value, etc. 
nonzero = 5  # Elements/indices where value != 0 (e.g., numpy.nonzero)
array = 5  # Generic numpy/array object (e.g., data_array, temperature_array)
postpending_array_etc_to_var_name = 5  # Good practice to indicate type (e.g., temps_array vs temps_list)
df = 5  # Standard abbreviation for pandas DataFrame. If you have many dfs, consider using df_ prefix (e.g., df_sales, df_customers)
gdf = 5  # Standard abbreviation for GeoPandas GeoDataFrame
gpd = 5  # Standard import alias for geopandas (import geopandas as gpd)
pd = 5  # Standard import alias for pandas (import pandas as pd)
np = 5  # Standard import alias for numpy (import numpy as np)
default = 5  # Default parameter values (e.g., default_crs, default_timeout)
paths_to_delete_at_exit = 5  # Clear naming for cleanup list; good practice for temp files
uris_to_delete_at_exit = 5  # Outdated. Use paths_to_delete_at_exit instead.
plots_to_display_at_exit = 5  # Clear naming for deferred plotting; useful for batch processing
todo = 5  # Single TODO for standard priority tasks
todoo = 5  # Double-O for lower priority items needing attention
todooo = 5  # Triple-O for even lower issues that must be addressed
globals = 5  # Avoid global variables; if necessary, use UPPER_CASE naming
run_dir = 5  # Directory for current execution outputs (e.g., experiments, logs)
temp = 5  # Never use - ambiguous (temporary or temperature?)
temporary = 5  # Better than 'temp' - clear meaning for short-lived objects
temperature = 5  # Better than 'temp' - clear meaning for thermal data
print_parentheses = 5  # print() with no space likely debug code to be removed
print_space_parentheses = 5  # print () with space indicates intentional output to keep
path = 5  # Full path to file/directory (e.g., input_path, config_path)
dirname = 5 # Prefered in most cases. matches stdlib conventions. Name of directory without path (e.g., "outputs" from "/home/user/outputs")
dir_name = 5  # Avoid. Used when following strict PEP 8 in a codebase that emphasizes readability
dir_path = 5  # The full directory path (e.g., "/home/user/documents")
dir = 5 # Avoid using 'dir' as it conflicts with Python built-in function and is ambiguous (directory or direction?). Note that it CAN be used as a sufffix, like temp_dir
directory_name = 5 # Avoid. Too long.
file_name = 5  # Full filename with extension (e.g., "data.csv", "image.tif"). Prefered over filename.
filename = 5  # Avoid. Use file_name. However this is broadly used elsewhere. 
file_root = 5  # Filename without extension (e.g., "data" from "data.csv")
fileroot = 5  # Avoid. Use file_root. However this is broadly used elsewhere. 
file_extension = 5  # File suffix including dot (e.g., ".csv", ".tif")
parent_directory = 5  # One level up in directory tree (e.g., os.path.dirname(path))
grandparent_path = 5  # Two levels up; consider using pathlib for clarity
shapefile = 5 # Only use to specify that you're xplicitly using an esri shapefile vs eg geopackage.
tiff = 5 # Never use, except in GDAL Drivername GTiff

