dataflow-conda-plugin 0.1.7rc4__tar.gz → 0.1.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dataflow-conda-plugin might be problematic. Click here for more details.

@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataflow-conda-plugin
3
- Version: 0.1.7rc4
3
+ Version: 0.1.9
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataflow-conda-plugin
3
- Version: 0.1.7rc4
3
+ Version: 0.1.9
@@ -1,4 +1,4 @@
1
- import subprocess, sys, pkg_resources, os, requests
1
+ import subprocess, sys, pkg_resources, os, requests, re, sys
2
2
  from conda import plugins
3
3
  from conda.base.context import context
4
4
  from dataflow.utils.logger import CustomLogger
@@ -46,6 +46,8 @@ def install_deps(command: str):
46
46
  """Install dataflow dependencies."""
47
47
  target_prefix = context.target_prefix
48
48
  args = context._argparse_args
49
+ python_version = args.get("python")
50
+ print(f"Installing Dataflow dependencies in the environment with Python version: {python_version}")
49
51
  env_name = os.path.basename(target_prefix) if target_prefix else None
50
52
 
51
53
  should_save_to_db = is_local_environment(target_prefix) and env_name
@@ -77,6 +79,7 @@ def install_deps(command: str):
77
79
  print(f"Error in creating environment!!")
78
80
  if should_save_to_db and env_name:
79
81
  save_environment(env_name, "Failed")
82
+ raise RuntimeError(f"Dataflow dependency installation failed! Please make sure compatible python version is used")
80
83
  else:
81
84
  if env_name and should_save_to_db:
82
85
  save_environment(env_name, "Success")
@@ -86,6 +89,7 @@ def install_deps(command: str):
86
89
  logger.error(f"Error installing dependencies: {str(e)}")
87
90
  if should_save_to_db and env_name:
88
91
  save_environment(env_name, "Failed")
92
+ raise e
89
93
 
90
94
  def remove_environment(env_name: str):
91
95
  """Remove environment information via API."""
@@ -147,6 +151,25 @@ def package_operations(command: str):
147
151
  if should_update_db:
148
152
  mark_environment_for_refresh(env_name)
149
153
 
154
+ def set_pip_constraint(command: str):
155
+ """Set PIP_CONSTRAINT environment variable based on Python version."""
156
+ if "NO_CONDA_PLUGIN_PIP_CONSTRAINT" in os.environ:
157
+ return
158
+ for arg in sys.argv:
159
+ if arg.startswith("python"):
160
+ # Match python=3.10, python=3.10.1, python=3.11, python=3.11.5, etc.
161
+ match = re.fullmatch(r"python=(3\.10(\.\d+)?|3\.11(\.\d+)?|3\.12(\.\d+)?)", arg)
162
+ if not match:
163
+ raise ValueError(f"Invalid argument: {arg}! Only Python 3.10, 3.11, and 3.12 are supported.")
164
+ version = match.group(1)
165
+ major_minor = ".".join(version.split(".")[:2])
166
+ break
167
+ else:
168
+ major_minor = "3.12"
169
+ # Set PIP_CONSTRAINT environment variable to the appropriate constraint file
170
+ os.environ["PIP_CONSTRAINT"] = f"/dataflow/tmp/pip_constraints/py{major_minor}-constraints.txt"
171
+
172
+
150
173
  @plugins.hookimpl
151
174
  def conda_post_commands():
152
175
  yield plugins.CondaPostCommand(
@@ -158,4 +181,12 @@ def conda_post_commands():
158
181
  name=f"package_operations_post_command",
159
182
  action=package_operations,
160
183
  run_for={"install", "remove", "update"},
184
+ )
185
+
186
+ @plugins.hookimpl
187
+ def conda_pre_commands():
188
+ yield plugins.CondaPreCommand(
189
+ name="set_pip_constraint",
190
+ action=set_pip_constraint,
191
+ run_for={"create"},
161
192
  )
@@ -4,13 +4,14 @@ conda_env_path=$1
4
4
 
5
5
  py_version=$(${conda_env_path}/bin/python -c "import sys; print('.'.join(map(str, sys.version_info[:2])))")
6
6
 
7
- ${conda_env_path}/bin/pip install --index-url https://pypi.org/simple dash==3.0.3 dash-renderer==1.9.1 plotly==6.0.1 typing==3.7.4.3 streamlit==1.45.1 ipython==9.2.0 ipykernel==6.29.5 ipython-sql==0.4.1 jupysql==0.10.14 psycopg2-binary==2.9.10 cryptography==44.0.3 dataflow-core==2.1.14rc2 dataflow-dbt==0.0.3
7
+ # make sure to install dataflow deps from pypi only
8
+ ${conda_env_path}/bin/pip install --index-url https://pypi.org/simple/ dash==3.0.3 dash-renderer==1.9.1 plotly==6.0.1 typing==3.7.4.3 streamlit==1.45.1 ipython==8.37.0 ipykernel==6.29.5 ipython-sql==0.4.1 jupysql==0.10.14 psycopg2-binary==2.9.10 dataflow-core==2.1.17 dataflow-dbt==0.0.3
8
9
 
9
10
  # 3. Install Dataflow Airflow to a separate path in environment
10
- ${conda_env_path}/bin/pip install --index-url https://pypi.org/simple \
11
+ ${conda_env_path}/bin/pip install \
11
12
  --force-reinstall --root-user-action ignore \
12
13
  --no-warn-conflicts dataflow-airflow==2.10.7 \
13
- --constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-${py_version}.txt \
14
+ --constraint /dataflow/setup/pip_constraints/airflow_constraints${py_version}.txt \
14
15
  --target ${conda_env_path}/bin/airflow-libraries/
15
16
 
16
17
  files=(
@@ -14,7 +14,7 @@ class PostInstall(install):
14
14
 
15
15
  setup(
16
16
  name="dataflow-conda-plugin",
17
- version="0.1.7rc4",
17
+ version="0.1.9",
18
18
  entry_points={"conda": ["dataflow-conda-plugin = plugin.plugin"]},
19
19
  packages=find_packages(include=["plugin"]),
20
20
  package_data={'plugin': ['scripts/*.sh']},