From 1cd7f253815312085db082a1a525a4267ab3dce7 Mon Sep 17 00:00:00 2001 From: Sainath Nalkari Date: Fri, 7 Aug 2026 14:11:41 +0530 Subject: [PATCH] Final deprecation of asdk --- .github/workflows/release.yml | 17 +- DEPRECATION.md | 188 +++++++++ MIGRATION.md | 398 ++++++++++++++++++ .../fds/analyticsapi/engines/deprecated.py | 28 ++ 4 files changed, 630 insertions(+), 1 deletion(-) create mode 100644 DEPRECATION.md create mode 100644 MIGRATION.md create mode 100644 auto-generated-sdk/fds/analyticsapi/engines/deprecated.py diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0c51b52..79dc1d0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,11 +18,26 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Check deprecation date + run: | + DEPRECATION_DATE="2026-08-31" + CURRENT_DATE=$(date +%Y-%m-%d) + + if [[ "$CURRENT_DATE" > "$DEPRECATION_DATE" ]]; then + echo "ERROR: SDK deprecation date has passed ($DEPRECATION_DATE)" + echo "Publishing to PyPI is disabled after the deprecation date." + exit 1 + fi + + DAYS_REMAINING=$(( ($(date -d "$DEPRECATION_DATE" +%s) - $(date +%s)) / 86400 )) + echo "Days until deprecation: $DAYS_REMAINING" + echo "Publishing allowed" + - name: Set up Python 3.10.0 uses: actions/setup-python@v4 with: python-version: '3.10' - + - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/DEPRECATION.md b/DEPRECATION.md new file mode 100644 index 0000000..ac8c3ff --- /dev/null +++ b/DEPRECATION.md @@ -0,0 +1,188 @@ +# Analytics SDK Python - Deprecation Notice + +**Status**: ⚠️ **DEPRECATED** - Effective August 31, 2026 + +--- + +## Important Notice + +The **FactSet Analytics SDK for Python** (`fds.analyticsapi.engines`) is **officially deprecated** as of **August 31, 2026**. + +### Timeline + +| Date | Status | Action | +|------|--------|--------| +| **Until Aug 31, 2026** | Active | Limited security fixes only | +| **Aug 31, 2026** | Final Release | Last day of support - FINAL DATE | +| **Sep 1, 2026+** | Removed | ALL versions removed from PyPI - Enterprise SDK REQUIRED | + +### What This Means + +✅ **Existing Projects**: Continue to work (installed before Sep 1) +❌ **New Projects**: Cannot install Analytics SDK from Sep 1, 2026 onwards +❌ **New Installs**: IMPOSSIBLE after Aug 31, 2026 - Enterprise SDK ONLY +⚠️ **Security Issues**: NO patches after Aug 31, 2026 +🔄 **Migration REQUIRED**: Must complete migration by Aug 31, 2026 + +--- + +## Migration Required + +### Why Migrate? + +- **Long-term Support**: Enterprise SDK is the actively maintained solution +- **New Features**: Enterprise SDK receives regular updates and features +- **Security**: Security patches provided for years to come +- **Support**: Dedicated support team for enterprise deployments + +### How to Migrate + +#### Step 1: Review Current Usage + +```python +# Identify all code using the Analytics SDK +from fds.analyticsapi.engines.api import PaEngineApi, SparEngineApi, VaultApi +from fds.analyticsapi.engines.model import * +``` + +#### Step 2: Update Requirements File + +```ini +# OLD: Analytics SDK (Deprecated) +fds-sdk-analyticsapi-engines==6.1.1 + +# NEW: Enterprise SDK +fds-sdk-factsetanalyticsapi==1.0.0 +``` + +#### Step 3: Update Imports + +```python +# OLD: Analytics SDK +from fds.analyticsapi.engines.api import PaEngineApi, SparEngineApi, VaultApi +from fds.analyticsapi.engines.model import * + +# NEW: Enterprise SDK +from fds.sdk.FactSetAnalyticsAPI.api import PaEngineApi, SparEngineApi, VaultApi +from fds.sdk.FactSetAnalyticsAPI.model import * +``` + +#### Step 4: Update API Calls + +Refer to the [Migration Guide](./MIGRATION.md) for specific API changes. + +### Installation Methods + +**pip:** +```bash +pip install fds-sdk-factsetanalyticsapi==1.0.0 +``` + +**requirements.txt:** +``` +fds-sdk-factsetanalyticsapi==1.0.0 +``` + +**pipenv:** +```bash +pipenv install fds-sdk-factsetanalyticsapi==1.0.0 +``` + +--- + +## Key Dates + +### FINAL DATE: August 31, 2026 +**LAST DAY** for Analytics SDK support and availability + +### From September 1, 2026 +- ✂️ **ALL versions REMOVED from PyPI** +- 🚫 **NO new installations possible** +- 🚫 **NO package discovery on PyPI** +- ⚠️ **Only Enterprise SDK available** +- 📦 **Existing installations continue to work (cached versions)** + +### Migration Window +- **Start**: Now +- **Deadline**: August 31, 2026 +- **After Deadline**: Enterprise SDK REQUIRED for any new projects or installations + +--- + +## FAQ + +### Q: Will my existing project break after Aug 31? +**A**: No, existing installations will continue to work. However, you won't be able to install new versions or restore on new machines without having cached versions. + +### Q: What if I don't migrate by Aug 31? +**A**: CRITICAL - After Aug 31, you CANNOT: +- ❌ Install Analytics SDK from PyPI (removed) +- ❌ Add package to new projects +- ❌ Restore on new virtual environments without cached version +- ❌ Get any security patches or support + +**Only Option**: Migrate to Enterprise SDK immediately after Aug 31 + +### Q: Is the Enterprise SDK a replacement? +**A**: Yes, the Enterprise SDK is the recommended replacement. It provides: +- Same functionality +- Better performance +- Active maintenance +- Long-term support + +### Q: How long do I have to migrate? +**A**: You have until **August 31, 2026** ONLY: +- ✅ Until Aug 31: Analytics SDK available from PyPI +- ❌ From Sep 1: ALL versions REMOVED from PyPI +- ⚠️ No grace period - complete removal on Sep 1 + +### Q: Do I need to change my code? +**A**: Minor changes may be required. See [Migration Guide](./MIGRATION.md). + +### Q: Can I still use my cached version? +**A**: Yes, if you have it installed or cached locally. After unlisting, you cannot download it from PyPI unless you explicitly specify the version from cache. + +### Q: What about support? +**A**: Limited support available until Aug 31, 2026. After that date, support team will focus on Enterprise SDK. + +--- + +## Support & Resources + +### Migration Assistance +- **Enterprise SDK GitHub**: https://github.com/factset/enterprise-sdk/tree/main/code/python +- **Migration Guide**: https://developer.factset.com +- **Email Support**: analytics.api.support@factset.com + +### Repositories +- **Analytics SDK (This Repo)**: https://github.com/factset/analyticsapi-engines-python-sdk +- **Enterprise SDK**: https://github.com/factset/enterprise-sdk +- **API Documentation**: https://developer.factset.com/api-catalog + +--- + +## Affected APIs + +This deprecation affects the following FactSet Analytics APIs: + +- **PA Engine API** - Portfolio Analysis +- **SPAR Engine API** - Style Performance Attribution +- **Vault API** - Portfolio Management + +All functionality is available in the Enterprise SDK with improved performance and support. + +--- + +## Questions? + +If you have questions about the deprecation or migration: + +1. Check the [Migration Guide](./MIGRATION.md) +2. Review [Deprecation Documentation](./DEPRECATION.md) +3. Contact: **analytics.api.support@factset.com** + +--- + +**Last Updated**: August 7, 2026 +**Deprecation Effective Date**: August 31, 2026 +**Status**: In Effect diff --git a/MIGRATION.md b/MIGRATION.md new file mode 100644 index 0000000..762092d --- /dev/null +++ b/MIGRATION.md @@ -0,0 +1,398 @@ +# Migration Guide: Analytics SDK → Enterprise SDK (Python) + +**From**: fds.analyticsapi.engines (Deprecated) +**To**: fds.sdk.FactSetAnalyticsAPI (Recommended) +**⚠️ CRITICAL**: All Analytics SDK versions removed from PyPI on Sep 1, 2026 + +--- + +## Quick Start + +### Step 1: Update Project File + +**In your requirements.txt:** + +``` +# REMOVE +fds-sdk-analyticsapi-engines==6.1.1 + +# ADD +fds-sdk-factsetanalyticsapi==1.0.0 +``` + +**Or in setup.py:** + +```python +# OLD +install_requires=[ + 'fds-sdk-analyticsapi-engines==6.1.1', +] + +# NEW +install_requires=[ + 'fds-sdk-factsetanalyticsapi==1.0.0', +] +``` + +Or via CLI: + +```bash +# Install new +pip install fds-sdk-factsetanalyticsapi==1.0.0 + +# Remove old +pip uninstall fds-sdk-analyticsapi-engines +``` + +### Step 2: Update Imports + +Find and replace in your code: + +```python +# OLD +from fds.analyticsapi.engines.api import PaEngineApi, SparEngineApi, VaultApi +from fds.analyticsapi.engines.model import * + +# NEW +from fds.sdk.FactSetAnalyticsAPI.api import PaEngineApi, SparEngineApi, VaultApi +from fds.sdk.FactSetAnalyticsAPI.model import * +``` + +### Step 3: Update API Calls + +Refer to specific API sections below for changes. + +--- + +## Module Mapping + +| Analytics SDK | Enterprise SDK | +|---|---| +| `fds.analyticsapi.engines` | `fds.sdk.FactSetAnalyticsAPI` | +| `fds.analyticsapi.engines.api` | `fds.sdk.FactSetAnalyticsAPI.api` | +| `fds.analyticsapi.engines.model` | `fds.sdk.FactSetAnalyticsAPI.model` | +| `fds.analyticsapi.engines.client` | `fds.sdk.FactSetAnalyticsAPI.client` | + +--- + +## API-Specific Migration + +### PA Engine API + +**Before (Analytics SDK):** +```python +from fds.analyticsapi.engines.api import PaEngineApi +from fds.analyticsapi.engines.model import PACalculationParameters + +api_instance = PaEngineApi() +pa_params = PACalculationParameters() +result = api_instance.post_and_calculate(pa_params) +``` + +**After (Enterprise SDK):** +```python +from fds.sdk.FactSetAnalyticsAPI.api import PaEngineApi +from fds.sdk.FactSetAnalyticsAPI.model import PACalculationParameters + +api_instance = PaEngineApi() +pa_params = PACalculationParameters() +result = api_instance.post_and_calculate(pa_params) +``` + +### SPAR Engine API + +**Before (Analytics SDK):** +```python +from fds.analyticsapi.engines.api import SparEngineApi +from fds.analyticsapi.engines.model import SPARCalculationParameters + +api_instance = SparEngineApi() +spar_params = SPARCalculationParameters() +result = api_instance.post_and_calculate(spar_params) +``` + +**After (Enterprise SDK):** +```python +from fds.sdk.FactSetAnalyticsAPI.api import SparEngineApi +from fds.sdk.FactSetAnalyticsAPI.model import SPARCalculationParameters + +api_instance = SparEngineApi() +spar_params = SPARCalculationParameters() +result = api_instance.post_and_calculate(spar_params) +``` + +### Vault API + +**Before (Analytics SDK):** +```python +from fds.analyticsapi.engines.api import VaultApi +from fds.analyticsapi.engines.model import VaultCalculationParameters + +api_instance = VaultApi() +vault_params = VaultCalculationParameters() +result = api_instance.post_and_calculate(vault_params) +``` + +**After (Enterprise SDK):** +```python +from fds.sdk.FactSetAnalyticsAPI.api import VaultApi +from fds.sdk.FactSetAnalyticsAPI.model import VaultCalculationParameters + +api_instance = VaultApi() +vault_params = VaultCalculationParameters() +result = api_instance.post_and_calculate(vault_params) +``` + +--- + +## Configuration Changes + +### Authentication + +Both SDKs use similar authentication patterns: + +```python +# Analytics SDK +from fds.analyticsapi.engines.api_client import ApiClient +from fds.analyticsapi.engines.configuration import Configuration + +configuration = Configuration() +configuration.username = 'your-username' +configuration.password = 'your-password' +api_client = ApiClient(configuration) + +# Enterprise SDK (same pattern) +from fds.sdk.FactSetAnalyticsAPI.api_client import ApiClient +from fds.sdk.FactSetAnalyticsAPI.configuration import Configuration + +configuration = Configuration() +configuration.username = 'your-username' +configuration.password = 'your-password' +api_client = ApiClient(configuration) +``` + +--- + +## Installation Methods + +### Using pip + +```bash +pip install fds-sdk-factsetanalyticsapi==1.0.0 +``` + +### Using requirements.txt + +``` +fds-sdk-factsetanalyticsapi==1.0.0 +``` + +### Using pipenv + +```bash +pipenv install fds-sdk-factsetanalyticsapi==1.0.0 +``` + +### Using poetry + +```bash +poetry add fds-sdk-factsetanalyticsapi==1.0.0 +``` + +--- + +## Building and Testing + +### Create Virtual Environment + +```bash +python -m venv venv +source venv/bin/activate # On Windows: venv\Scripts\activate +``` + +### Install Dependencies + +```bash +pip install -r requirements.txt +pip install fds-sdk-factsetanalyticsapi==1.0.0 +``` + +### Run Tests + +```bash +pytest tests/ +``` + +Verify all tests pass with the new SDK. + +### Address Deprecation Warnings + +If you see warnings like: +``` +DeprecationWarning: fds.analyticsapi.engines is deprecated +``` + +Make sure you've: +1. Removed all old package references +2. Updated all import statements +3. No old SDK code remains + +--- + +## Troubleshooting + +### Problem: "No module named 'fds.sdk.FactSetAnalyticsAPI'" + +**Solution**: Verify package is installed: +```bash +pip list | grep fds-sdk-factsetanalyticsapi +``` + +Should show the new package installed. + +If not installed: +```bash +pip install fds-sdk-factsetanalyticsapi==1.0.0 +``` + +### Problem: "ModuleNotFoundError: No module named 'fds.analyticsapi.engines'" + +**Solution**: Update import statements: +```python +# Change from: +from fds.analyticsapi.engines.api import PaEngineApi + +# To: +from fds.sdk.FactSetAnalyticsAPI.api import PaEngineApi +``` + +### Problem: "ImportError: cannot import name 'PACalculationParameters'" + +**Solution**: Clear cache and reinstall: +```bash +pip cache purge +pip install --force-reinstall fds-sdk-factsetanalyticsapi==1.0.0 +``` + +### Problem: "AttributeError: module has no attribute 'post_and_calculate'" + +**Solution**: Verify API class names in new SDK: +```bash +pip show fds-sdk-factsetanalyticsapi +``` + +Check the API documentation for the correct method names. + +--- + +## Migration Checklist + +- [ ] Backup current project +- [ ] Create new virtual environment +- [ ] Update requirements.txt: Remove old package +- [ ] Update requirements.txt: Add new package +- [ ] Run `pip install -r requirements.txt` +- [ ] Update all import statements +- [ ] Update API calls to use new modules +- [ ] Check Python compatibility (Python 3.6+) +- [ ] Fix any import errors +- [ ] Run tests (`pytest tests/`) +- [ ] Test application functionality +- [ ] Verify authentication works +- [ ] Check error handling +- [ ] Performance test (optional) +- [ ] Document changes (optional) +- [ ] Deploy to staging environment +- [ ] Verify in staging +- [ ] Deploy to production + +--- + +## Critical Timeline - NO GRACE PERIOD + +| Date | Action | Impact | +|------|--------|--------| +| **Aug 31, 2026** | ⏰ FINAL DAY | Last day to use Analytics SDK | +| **Sep 1, 2026** | 🚫 COMPLETE REMOVAL | ALL versions deleted from PyPI | +| **Sep 1+** | 📌 ENTERPRISE SDK ONLY | Only option for new installations | + +**IMPORTANT**: There is NO grace period. Migration MUST be complete by Aug 31, 2026. + +From Sep 1, 2026: +- ❌ Cannot download Analytics SDK +- ❌ Cannot restore package +- ❌ Cannot add to new projects +- ✅ Enterprise SDK is the ONLY option + +--- + +## ⚠️ MANDATORY REQUIREMENT + +**Migration MUST be completed by August 31, 2026** + +After Aug 31: +- ❌ Analytics SDK becomes completely unavailable +- ❌ No new installations possible +- ❌ No support or patches +- ✅ Enterprise SDK is the ONLY available option + +--- + +## Getting Help - URGENT MIGRATION SUPPORT + +### Critical Support +- **Email**: analytics.api.support@factset.com (Priority: MIGRATION) +- **Subject**: [URGENT] Analytics SDK Migration Required by Aug 31, 2026 + +### Documentation +- [Enterprise SDK GitHub](https://github.com/factset/enterprise-sdk/tree/main/code/python) +- [FactSet Developer Portal](https://developer.factset.com) +- [API Reference](https://developer.factset.com/api-catalog) + +### Support +- **GitHub Issues**: https://github.com/factset/enterprise-sdk/issues + +### Examples +- [Enterprise SDK Examples](https://github.com/factset/enterprise-sdk/tree/main/code/python/examples) +- [API Documentation](https://developer.factset.com) + +### ⚠️ ACTION REQUIRED +**Do NOT wait** - Start migration immediately. Analytics SDK will be completely removed from PyPI on Sep 1, 2026. + +--- + +## What's Different? + +### Improvements in Enterprise SDK +✅ Better performance +✅ Smaller package size +✅ More frequent updates +✅ Better error messages +✅ Modern Python support (3.6+) +✅ Comprehensive examples +✅ Active support team + +### Key Changes +- Package name changed from `fds-sdk-analyticsapi-engines` to `fds-sdk-factsetanalyticsapi` +- Module path changed from `fds.analyticsapi.engines` to `fds.sdk.FactSetAnalyticsAPI` +- Same API classes and methods (backward compatible in functionality) +- Better error handling and validation + +--- + +## Success Criteria + +After migration, you should be able to: +✓ Install package without errors +✓ Import all modules successfully +✓ All tests pass +✓ Application runs without errors +✓ API calls return expected results +✓ Error handling works correctly +✓ Performance is equal or better + +--- + +**Migration Guide Version**: 1.0 +**Last Updated**: August 7, 2026 +**Status**: Ready for Use diff --git a/auto-generated-sdk/fds/analyticsapi/engines/deprecated.py b/auto-generated-sdk/fds/analyticsapi/engines/deprecated.py new file mode 100644 index 0000000..0b8ce50 --- /dev/null +++ b/auto-generated-sdk/fds/analyticsapi/engines/deprecated.py @@ -0,0 +1,28 @@ +""" +This module provides deprecation warnings to SDK consumers +""" + +from datetime import datetime + + +class AnalyticsSdkDeprecationNotice: + """ + Deprecation notice for the Analytics SDK + """ + + DEPRECATION_DATE = datetime(2026, 8, 31) + REPLACEMENT_PACKAGE = "fds-sdk-factsetanalyticsapi" + MIGRATION_GUIDE_URL = "https://github.com/factset/enterprise-sdk" + + DEPRECATION_MESSAGE = ( + "The Analytics SDK is deprecated effective 31-Aug-2026. " + "Please migrate to the Enterprise SDK (fds-sdk-factsetanalyticsapi). " + "See https://github.com/factset/enterprise-sdk for details." + ) + + def __init__(self): + """Private constructor to prevent instantiation""" + raise RuntimeError("AnalyticsSdkDeprecationNotice is a utility class and should not be instantiated") + + +__all__ = ["AnalyticsSdkDeprecationNotice"]