| 1 |  |  | import sys | 
            
                                                        
            
                                    
            
            
                | 2 |  |  | import distutils.util | 
            
                                                        
            
                                    
            
            
                | 3 |  |  | from pathlib import Path | 
            
                                                        
            
                                    
            
            
                | 4 |  |  | from setuptools import setup, find_packages | 
            
                                                        
            
                                    
            
            
                | 5 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 6 |  |  | PACKAGES = find_packages() | 
            
                                                        
            
                                    
            
            
                | 7 |  |  | COMPILE_OPTIONS = { | 
            
                                                        
            
                                    
            
            
                | 8 |  |  |     "msvc": ["/Ox", "/EHsc"], | 
            
                                                        
            
                                    
            
            
                | 9 |  |  |     "other": ["-O3", "-Wno-strict-prototypes", "-Wno-unused-function"], | 
            
                                                        
            
                                    
            
            
                | 10 |  |  | } | 
            
                                                        
            
                                    
            
            
                | 11 |  |  | COMPILER_DIRECTIVES = { | 
            
                                                        
            
                                    
            
            
                | 12 |  |  |     "language_level": -3, | 
            
                                                        
            
                                    
            
            
                | 13 |  |  |     "embedsignature": True, | 
            
                                                        
            
                                    
            
            
                | 14 |  |  |     "annotation_typing": False, | 
            
                                                        
            
                                    
            
            
                | 15 |  |  | } | 
            
                                                        
            
                                    
            
            
                | 16 |  |  | LINK_OPTIONS = {"msvc": [], "other": []} | 
            
                                                        
            
                                    
            
            
                | 17 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 18 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 19 |  |  | def is_new_osx(): | 
            
                                                        
            
                                    
            
            
                | 20 |  |  |     """Check whether we're on OSX >= 10.10""" | 
            
                                                        
            
                                    
            
            
                | 21 |  |  |     name = distutils.util.get_platform() | 
            
                                                        
            
                                    
            
            
                | 22 |  |  |     if sys.platform != "darwin": return False | 
            
                                                        
            
                                    
            
            
                | 23 |  |  |     elif name.startswith("macosx-10"): | 
            
                                                        
            
                                    
            
            
                | 24 |  |  |         minor_version = int(name.split("-")[1].split(".")[1]) | 
            
                                                        
            
                                    
            
            
                | 25 |  |  |         if minor_version >= 7:  return True | 
            
                                                        
            
                                    
            
            
                | 26 |  |  |         else:                   return False | 
            
                                                        
            
                                    
            
            
                | 27 |  |  |     else:                       return False | 
            
                                                        
            
                                    
            
            
                | 28 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 29 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 30 |  |  | if is_new_osx(): | 
            
                                                        
            
                                    
            
            
                | 31 |  |  |     COMPILE_OPTIONS["other"].append("-stdlib=libc++") | 
            
                                                        
            
                                    
            
            
                | 32 |  |  |     LINK_OPTIONS["other"].append("-lc++") | 
            
                                                        
            
                                    
            
            
                | 33 |  |  |     LINK_OPTIONS["other"].append("-nodefaultlibs") | 
            
                                                        
            
                                    
            
            
                | 34 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 35 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 36 |  |  | def clean(path): | 
            
                                                        
            
                                    
            
            
                | 37 |  |  |     for path in path.glob("**/*"): | 
            
                                                        
            
                                    
            
            
                | 38 |  |  |         if path.is_file() and path.suffix in (".so", ".cpp"): | 
            
                                                        
            
                                    
            
            
                | 39 |  |  |             print(f"Deleting {path.name}") | 
            
                                                        
            
                                    
            
            
                | 40 |  |  |             path.unlink() | 
            
                                                        
            
                                    
            
            
                | 41 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 42 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 43 |  |  | def setup_package(): | 
            
                                                        
            
                                    
            
            
                | 44 |  |  |     root = Path(__file__).parent | 
            
                                                        
            
                                    
            
            
                | 45 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 46 |  |  |     setup( | 
            
                                                        
            
                                    
            
            
                | 47 |  |  |         name='tracking_policy_agendas', | 
            
                                                        
            
                                    
            
            
                | 48 |  |  |         packages=PACKAGES, | 
            
                                                        
            
                                    
            
            
                | 49 |  |  |         version='1.0.0', | 
            
                                                        
            
                                    
            
            
                | 50 |  |  |         url='https://github.com/MohammadForouhesh/tracking-policy-agendas', | 
            
                                                        
            
                                    
            
            
                | 51 |  |  |         license='MIT', | 
            
                                                        
            
                                    
            
            
                | 52 |  |  |         author='MohammadForouhesh', | 
            
                                                        
            
                                    
            
            
                | 53 |  |  |         author_email='[email protected]', | 
            
                                                        
            
                                    
            
            
                | 54 |  |  |         description='A Persian Twitter policy agenda tracking framework', | 
            
                                                        
            
                                    
            
            
                | 55 |  |  |         package_data={"": ["*.pyx", "*.pxd", "*.pxi", "*.cu"]}, | 
            
                                                        
            
                                    
            
            
                | 56 |  |  |     ) | 
            
                                                        
            
                                    
            
            
                | 57 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 58 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 59 |  |  | if __name__ == '__main__': | 
            
                                                        
            
                                    
            
            
                | 60 |  |  |     setup_package() | 
            
                                                        
            
                                    
            
            
                | 61 |  |  |  |