in google_cloud_automlops/orchestration/kfp.py [0:0]
def _create_component_base_requirements(self) -> str:
"""Creates the contents of a requirements.txt to the component_base directory.
Optionally infer pip requirements from the python srcfiles using pipreqs.
Takes user-inputted requirements, and addes some default gcp packages as well as
packages that are often missing in setup.py files (e.g db_types, pyarrow,
gcsfs, fsspec).
Returns:
str: contents of the requirements.txt for the pipeline job
"""
reqs_filename = f'{GENERATED_COMPONENT_BASE}/requirements.txt'
default_gcp_reqs = [
'google-cloud-aiplatform',
'google-cloud-appengine-logging',
'google-cloud-audit-log',
'google-cloud-bigquery',
'google-cloud-bigquery-storage',
'google-cloud-bigtable',
'google-cloud-core',
'google-cloud-dataproc',
'google-cloud-datastore',
'google-cloud-dlp',
'google-cloud-firestore',
'google-cloud-kms',
'google-cloud-language',
'google-cloud-logging',
'google-cloud-monitoring',
'google-cloud-notebooks',
'google-cloud-pipeline-components',
'google-cloud-pubsub',
'google-cloud-pubsublite',
'google-cloud-recommendations-ai',
'google-cloud-resource-manager',
'google-cloud-scheduler',
'google-cloud-spanner',
'google-cloud-speech',
'google-cloud-storage',
'google-cloud-tasks',
'google-cloud-translate',
'google-cloud-videointelligence',
'google-cloud-vision',
'db_dtypes',
'pyarrow',
'gcsfs',
'fsspec']
# Get user-inputted requirements from the cache dir
user_inp_reqs = []
for comp in self.comps:
user_inp_reqs.extend(comp.packages_to_install)
# Check if user inputted requirements
if user_inp_reqs:
# Remove duplicates
set_of_requirements = set(user_inp_reqs)
else:
# If user did not input requirements, then infer reqs using pipreqs
execute_process(f'python3 -m pipreqs.pipreqs {GENERATED_COMPONENT_BASE} --mode no-pin --force', to_null=True)
pipreqs = read_file(reqs_filename).splitlines()
set_of_requirements = set(pipreqs + default_gcp_reqs)
# Remove empty string
if '' in set_of_requirements:
set_of_requirements.remove('')
# Pin kfp version
if 'kfp' in set_of_requirements:
set_of_requirements.remove('kfp')
set_of_requirements.add(PINNED_KFP_VERSION)
# Stringify and sort
reqs_str = ''.join(r+'\n' for r in sorted(set_of_requirements))
return reqs_str