Skip to content

Commit e7a4c04

Browse files
committed
Adjust globs
1 parent 16455df commit e7a4c04

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

{{cookiecutter.github_project_name}}/setupbase.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -474,45 +474,50 @@ def run(self):
474474

475475
data_files = self.distribution.data_files or []
476476
for (path, patterns) in data_spec:
477-
data_files.append((path, _get_data_files(patterns)))
477+
data_files.append((path, _get_files(patterns)))
478478

479479
self.distribution.data_files = data_files
480480

481481
return FileHandler
482482

483483

484-
def _get_data_files(file_patterns, top=HERE):
485-
"""Expand file patterns to a list of `data_files` paths.
484+
def _get_files(file_patterns, top=HERE):
485+
"""Expand file patterns to a list of paths.
486486
487487
Parameters
488488
-----------
489489
file_patterns: list or str
490490
A list of glob patterns for the data file locations.
491491
The globs can be recursive if they include a `**`.
492-
They should be relative paths from the root directory or
492+
They should be relative paths from the top directory or
493493
absolute paths.
494+
top: str
495+
the directory to consider for data files
494496
495497
Note:
496-
Files in `node_modules` are ignored. Only handles a single
497-
'**' in the pattern.
498+
Files in `node_modules` are ignored.
498499
"""
499500
if not isinstance(file_patterns, (list, tuple)):
500501
file_patterns = [file_patterns]
501502

503+
for i, p in enumerate(file_patterns):
504+
if os.path.isabs(p):
505+
file_patterns[i] = os.path.relpath(p, top)
506+
502507
matchers = [_compile_pattern(p) for p in file_patterns]
503508

504-
files = []
509+
files = set()
505510
for root, dirnames, filenames in os.walk(top):
506511
# Don't recurse into node_modules
507512
if 'node_modules' in dirnames:
508513
dirnames.remove('node_modules')
509514
for m in matchers:
510515
for filename in filenames:
511-
fn = pjoin(root, filename)
516+
fn = os.path.relpath(pjoin(root, filename), top)
512517
if m(fn):
513-
files.append(fn.replace(os.sep, '/'))
518+
files.add(fn.replace(os.sep, '/'))
514519

515-
return files
520+
return list(files)
516521

517522

518523
def _get_package_data(root, file_patterns=None):
@@ -529,14 +534,13 @@ def _get_package_data(root, file_patterns=None):
529534
absolute paths. If not given, all files will be used.
530535
531536
Note:
532-
Files in `node_modules` are ignored. Only handles a single
533-
'**' in the pattern.
537+
Files in `node_modules` are ignored.
534538
"""
535539
if file_patterns is None:
536540
file_patterns = ['*']
537541
if not isinstance(file_patterns, (list, tuple)):
538542
file_patterns = [file_patterns]
539-
files = _get_data_files(file_patterns, pjoin(HERE, root))
543+
files = _get_files(file_patterns, pjoin(HERE, root))
540544
return [pjoin(root, f) for f in files]
541545

542546

0 commit comments

Comments
 (0)