Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
538d71f
fixed internet availability check
pvjeetze Jan 12, 2026
7f5cded
Merge pull request #19 from jandrewjohnson/feature/test-infra
Ralph-20 Jan 21, 2026
fc98ef6
Merge pull request #26 from jandrewjohnson/feature/test-infra
Ralph-20 Jan 21, 2026
a86712e
Merge pull request #28 from jandrewjohnson/feat/removing-emojis
Ralph-20 Feb 2, 2026
003140f
Merge pull request #25 from pvjeetze/f_fixDownload
jandrewjohnson Feb 5, 2026
eba8e70
small
Feb 17, 2026
1903637
Merge branch 'develop' of https://github.com/jandrewjohnson/hazelbean…
Feb 17, 2026
d67dfb1
cleaning vscode extension crap
Mar 1, 2026
df861ad
Refactor cat ears functions and enhance feature extraction logging
Mar 16, 2026
f1a2d67
Enhance ProjectFlow to copy input templates and improve JSON parsing …
Apr 9, 2026
b10b69f
little
Apr 25, 2026
e64953c
Merge branch 'main' into develop
jandrewjohnson Apr 25, 2026
826257c
Add pythonProjects configuration to VSCode settings for environment m…
jandrewjohnson May 5, 2026
776a37d
misc fixes and making DEFLATE the default compression
May 15, 2026
83c425a
Merge branch 'develop' of https://github.com/jandrewjohnson/hazelbean…
May 15, 2026
0641186
fixed testing suite on mac
jandrewjohnson May 15, 2026
7382144
optimize ngfs_pnas_test.py
jandrewjohnson May 22, 2026
4bf2520
added mac windows checks
jandrewjohnson Jun 6, 2026
f3aebb9
Add path_is_dir function and enhance column_filters handling in extra…
jandrewjohnson Jun 13, 2026
958cc2c
hilarious comment added
jandrewjohnson Jun 18, 2026
d689b02
minor path reporting changes
jandrewjohnson Jun 29, 2026
bf4ad15
harmonized multiple competing initilaizations functions
jandrewjohnson Jun 30, 2026
e34b751
Add generic pptx slide primitives (visualization.py) and read_overpas…
chiacsen Jul 2, 2026
8c4cce2
chore: added claude code config
jandrewjohnson Jul 9, 2026
3f01c08
feat: unify value parsing in assign_to_object module and add comprehe…
jandrewjohnson Jul 9, 2026
0a4d2ed
pandas 3.0 compat: restore 2.x string behavior devstack-wide
jandrewjohnson Jul 9, 2026
f553270
Merge pull request #31 from jandrewjohnson/feat/slide-and-overpass-he…
jandrewjohnson Jul 10, 2026
c57417a
Add per-machine env loader: ~/.config/hazelbean/machine.env
jandrewjohnson Jul 10, 2026
c80f725
Merge pull request #32 from jandrewjohnson/feat/machine-env-loader
jandrewjohnson Jul 10, 2026
eea7f27
fix: enable pytest and disable unittest in VSCode settings
jandrewjohnson Jul 13, 2026
66b8165
Refactor code structure for improved readability and maintainability
jandrewjohnson Jul 23, 2026
7739c68
Merge pull request #33 from jandrewjohnson:feat/projectflow-run-conve…
jandrewjohnson Jul 23, 2026
c21e4eb
Name-driven *_path hydration; git-aware default project dir; skip-awa…
jandrewjohnson Jul 26, 2026
b35c904
Merge pull request #34 from jandrewjohnson:feat/run-mode-and-path-hyd…
jandrewjohnson Jul 26, 2026
4992623
Remove task auto-discovery; empty task tree now raises a teaching error
jandrewjohnson Jul 26, 2026
7466390
Add ProjectFlow.set_project_dir_for_run_mode with git-aware project-d…
jandrewjohnson Jul 26, 2026
2c36dfd
ProjectFlow: default tasks_to_skip to None; retire the _old_spec archive
jandrewjohnson Jul 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
{
"python.testing.pytestEnabled": false,
"python.testing.unittestEnabled": true,
"python.testing.pytestEnabled": true,
"python.testing.unittestEnabled": false,
"python.testing.pytestArgs": [
"hazelbean_tests"
],
"python.testing.cwd": "${workspaceFolder}",
"python.testing.autoTestDiscoverOnSaveEnabled": true,
// Conda environment configuration
"python.defaultInterpreterPath": "/opt/homebrew/Caskroom/mambaforge/base/envs/hazelbean_env/bin/python",

// Conda environment configuration (interpreter is machine-specific — set it
// via the "Python: Select Interpreter" command, not here)
"python.condaPath": "/opt/homebrew/bin/conda",

// Terminal activation
"python.terminal.activateEnvironment": true,
"python.terminal.activateEnvInCurrentTerminal": true,
Expand All @@ -24,8 +24,6 @@
"htmlcov": true
},

// Pytest-specific settings
"python.testing.pytestPath": "/opt/homebrew/Caskroom/mambaforge/base/envs/hazelbean_env/bin/pytest",
"python-envs.defaultEnvManager": "ms-python.python:conda",
"python-envs.defaultPackageManager": "ms-python.python:conda",
"python.testing.unittestArgs": [
Expand All @@ -34,6 +32,13 @@
"./hazelbean_tests",
"-p",
"test_*.py"
],
"python-envs.pythonProjects": [
{
"path": ".",
"envManager": "ms-python.python:conda",
"packageManager": "ms-python.python:conda"
}
]
}

Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Hazelbean Changelog

## Unreleased

#### New Features

* `ProjectFlow` initializes `tasks_to_skip` to `None`, so run files on the caller-configured convention can call `p.skip_tasks(p.tasks_to_skip)` without a `getattr` guard.

#### Chores

* Removed `hazelbean/project_flow_old_spec.py`. Git history is the archive for pre-conversion forms; the `_old_spec` twins are being retired stack-wide.

## v1.8.0 (2026-01-16)

#### New Features
Expand Down
12 changes: 10 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,23 @@

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Hazelbean is the shared base library for the earth-economy devstack. Shared
devstack guidance (reuse rule + ownership map + EE Spec conventions) is imported
here so it applies whenever you work in this repo:

@../../earth_economy_devstack/devstack_guidance.md

## Project Overview

Hazelbean is a geospatial processing library built on GDAL, NumPy, SciPy, Cython, PyGeoProcessing, and TaskGraph. It provides tools for sustainability science, ecosystem service assessment, and land-use modeling.

## Development Environment

**Required**: Always activate the conda environment before any development work:
**Required**: Always activate a conda environment with hazelbean's dependencies
before any development work. The environment name is contributor-specific — use
your own (see your user-level Claude config):
```bash
conda activate hazelbean_env
conda activate <your-env>
```

**Installation** (after environment activation):
Expand Down
36 changes: 35 additions & 1 deletion hazelbean/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
from __future__ import division, absolute_import, print_function
import sys, time, os


conda_prefix = os.path.dirname(sys.executable)
# On Linux/Mac, python is in env/bin/, so go up one more level
if os.path.basename(conda_prefix) in ("bin", "Scripts"):
conda_prefix = os.path.dirname(conda_prefix)
gdal_bin = os.path.join(conda_prefix, "Library", "bin")
if os.path.exists(gdal_bin) and gdal_bin not in os.environ["PATH"]:
os.environ["PATH"] = gdal_bin + os.pathsep + os.environ["PATH"]

# Per-machine, never-committed settings (e.g. gtappy's solve-backend connection vars)
# live in ~/.config/hazelbean/machine.env and are loaded here into any env-var gaps.
# Real environment variables always win. See hazelbean/machine_env.py.
from hazelbean.machine_env import load_user_machine_env
load_user_machine_env()

import hazelbean.config # Needs to be imported before core so that hb.config.LAST_TIME_CHECK is set for hb.timer()
from hazelbean.config import *

Expand All @@ -15,6 +30,15 @@
pd.set_option('display.max_columns', 20)
pd.set_option('display.width', 200)
pd.set_option('display.max_rows', 10)

# pandas 3.0 defaults to Arrow-backed strings (future.infer_string=True). The devstack is written
# for pandas 2.x semantics — df[col].values as numpy object arrays, needed by GEMPACK/harpy HAR I/O
# and other code that passes .values into numpy-expecting APIs. Restore 2.x behavior devstack-wide.
# Guarded so it's a harmless no-op on pandas versions that lack this option.
try:
pd.set_option('future.infer_string', False)
except Exception:
pass

import_medium_level = 1 # If this is not true, will import all of the HB library on first import, which can take up to 7 seconds.
use_strict_importing = 0
Expand Down Expand Up @@ -106,7 +130,17 @@
from hazelbean.utils import *
if report_import_times:
hb.timer('utils')


import hazelbean.initialize_definitions
from hazelbean.initialize_definitions import *
if report_import_times:
hb.timer('initialize_definitions')

import hazelbean.assign_to_object
from hazelbean.assign_to_object import *
if report_import_times:
hb.timer('assign_to_object')

import hazelbean.arrayframe
from hazelbean.arrayframe import *
if report_import_times:
Expand Down
Loading
Loading