Skip to content

Commit 16d06c9

Browse files
committed
feat: integrate .railsignore handling in config loading
1 parent f6eb37c commit 16d06c9

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

nemoguardrails/rails/llm/config.py

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# limitations under the License.
1515

1616
"""Module for the configuration of rails."""
17-
import fnmatch
17+
1818
import logging
1919
import os
2020
import warnings
@@ -24,11 +24,11 @@
2424
from pydantic import BaseModel, ValidationError, root_validator
2525
from pydantic.fields import Field
2626

27+
from nemoguardrails import utils
2728
from nemoguardrails.colang import parse_colang_file, parse_flow_elements
2829
from nemoguardrails.colang.v2_x.lang.colang_ast import Flow
2930
from nemoguardrails.colang.v2_x.lang.utils import format_colang_parsing_error_message
3031
from nemoguardrails.colang.v2_x.runtime.errors import ColangParsingError
31-
from nemoguardrails.utils import get_railsignore_patterns
3232

3333
log = logging.getLogger(__name__)
3434

@@ -552,13 +552,19 @@ def _load_path(
552552
if not os.path.exists(config_path):
553553
raise ValueError(f"Could not find config path: {config_path}")
554554

555+
# the first .railsignore file found from cwd down to its subdirectories
556+
railsignore_path = utils.get_railsignore_path(config_path)
557+
ignore_patterns = utils.get_railsignore_patterns(railsignore_path)
558+
555559
if os.path.isdir(config_path):
556560
for root, _, files in os.walk(config_path, followlinks=True):
557561
# Followlinks to traverse symlinks instead of ignoring them.
558562

559563
for file in files:
560564
# Verify railsignore to skip loading
561-
ignored_by_railsignore = _is_file_ignored_by_railsignore(file)
565+
ignored_by_railsignore = utils.is_ignored_by_railsignore(
566+
file, ignore_patterns
567+
)
562568

563569
if ignored_by_railsignore:
564570
continue
@@ -1210,16 +1216,3 @@ def _generate_rails_flows(flows):
12101216
flow_definitions.insert(1, _LIBRARY_IMPORT + _NEWLINE * 2)
12111217

12121218
return flow_definitions
1213-
1214-
1215-
def _is_file_ignored_by_railsignore(filename: str) -> bool:
1216-
ignore = False
1217-
1218-
# Load candidate patterns from railsignore
1219-
candidate_patterns = get_railsignore_patterns()
1220-
1221-
for pattern in candidate_patterns:
1222-
if fnmatch.fnmatch(filename, pattern):
1223-
ignore = True
1224-
1225-
return ignore

0 commit comments

Comments
 (0)